質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Q&A

解決済

1回答

2513閲覧

AWS LambdaでEC2インスタンス内のスクリプトを実行した際のエラーハンドリング

sabx

総合スコア200

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

0グッド

2クリップ

投稿2020/09/04 07:47

聞きたいこと

AWS Lambdaファンクションから特定のEC2インスタンスにSSHし、該当EC2インスタンス内のシェルを実行したいと思っています。
シェルの実行結果が成功 or 失敗によって、他のLambdaファンクションを実行する必要があるのですが、リモートのEC2インスタンス内で実行したシェルの事項結果を検知する方法はあるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

前提を覆すようで恐縮ですが、そのアプローチはあまり推奨できないです...

lambda の中に EC2 の接続情報を持つ必要がある点があまりセキュアではないですし、通常 lambda はVPC の外にいて自身のIPを固定できないので、パブリックからの ssh を許可することになってしまいます。さすがにそれは運用として許容できる範疇ではないでしょう。。
(VPC lambda であれば public IP の問題は解消しますが、それでもあまり良いアプローチではないように思います)

どうしても lambda から EC2 内の何かしらをキックしたいのでしたら、Systems Manager Run Command を介してコマンドを実行させる感じにするのが良いと思います。変更の手数が少なめで比較的安全な方法となるとこれが良さそうかなと。

Run Command の詳しい使い方の解説はさすがに書ききれないので説明は省きます。ご自身で調査してください。...とはいえ、その投げ方では些か不親切と思いますので、概要を以下で述べます

主な変更点としては、ssh してコマンド実行する部分を Systems Manager の Run Command (AWS-RunShellScript) に代わりにやらせる、というものになります。
lambda から見ると ssh の代わりに Run Command の実行 API をキックする形になります。

EC2 の中にジョブを実行するシェルスクリプトなりを設置して、それを Run Command に叩いてもらうことで EC2 内のジョブを実行できるようになります。実行結果の通知は lambda に戻すことを考えるのではなく、 EC2 内のシェルから外に通知させるのが良いです。

この「外に通知」ですが、具体的には該当ジョブの実行結果を投げる用の SNS トピックを作り、そこに投げる...などの方法が考えられます。EC2 内のシェルがジョブの仕事を終えたら、その結果を SNS publish でもって投げ込みます。SNS にジョブの実行結果をハンドリングする別の lambda をサブスクライブさせておけば、検知ではなくとも近しいことはできると思います。

※なお、EC2 にできるだけ手を入れたくない場合でも、おそらく Run Command の利用自体は避けられないと思います。lambda から ssh するよりは幾分が良いだろうと考えます。この場合は EC2 の外からジョブの結果を知る必要があるので、Step Functions を用いて「Run Command の実行結果」をポーリングする実装が一番綺麗かと思います。とはいえこっちの方法は慣れてないと割と工数がかかると思うので、前者(EC2 内で SNS を叩かせる)の方法のが楽です。

投稿2020/09/10 16:21

hassaku_63

総合スコア92

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問