自由気ままに書いちゃおう

好きなことをつらつらと・・・

【AWS】Lambda関数の手動実行(本当の初心者向け6)

前回からの続きです。

www.guri2o1667.work

今回は、lambda関数の手動実行についてです。

■はじめに

lambdaを触り始めの方によく聞かれるのが、「lambda関数を手動実行したい」というものでした。
これを聞いて「え?何言ってるの?」と思う方ももしかしたらいるかもしれません。

ただ、本当にこの質問けっこう多いです。
というのも、「とりあえずlambdaやってみよう!触ってみよう!」って方は、AWSマネコンからlambda関数を作成して~って流れになります。

で作成を進めて最初に現れるlambda画面は以下です。

で、コードを書いて「よし、できた!」ってなるんです。

CLIであれば、bashであれpythonであれコマンド実行してっていうのが思いつきますが、GUIの場合、「この後、どうするの?」ってなるんです。。。
※ 例えば、GUIのどこかに「Go」ボタンとかあれば悩まなくてすむのになーと個人的に思ってます。

■lambda関数の手動実行方法について

前置きが長くなりましたが、lambda関数の手動実行は「Test」ボタンの押下です。
※余談ですが、コードを保存したいときは「Deploy」ボタンの押下です。
lambdaは基本的には何かしらのトリガーから実行されます。(lambda関数が何かに押されるイメージです。"何か"が「トリガー」に該当します。)

トリガーは「API Gateway」「S3」などのAWSサービス、サードパーティ製品(Datadog、NewRelic)などがあります。※ここでは本題からそれるので詳細は割愛。

lambda関数の手動実行時には、このトリガーを自分で作る必要があります。
「トリガーを作る」=「Testボタンの押下」です。

■テストデータの作成

手動実行するために、まずはテストデータを作成します。
「Test」ボタンを押下すると、以下のような画面が出てきます。


「イベント名」は適当に好きなものを入力してください。
「イベント共有の設定」は「プライベート」のままでOKです。
「テンプレート」は何でも良いのですが、一旦「Hello World」にしてください。

「イベントJSON」に下記のようにJSON形式でデータが書き込まれているのを確認し、「保存」ボタンをクリックします。

■lambda関数の手動実行

テストデータが作成されると最初のコードの画面に戻ってくるので、「Test」を押下します。


そうすると「Execution results」タブに実行結果が表示されます。

※今回のlambda関数はprint(event)を行っているだけなので、テストデータの内容がprintされているだけです。


lambda手動実行はこんな感じ行います。
CLIの方がlambda手動実行イメージが持ちやすいと思いますが、最初は何でもGUIからっていうところで説明をさせていただきました。

■補足:lambda手動実行にあまりしっくり来ていない方へ

中には(lambda触り始めの私みたいに)まだしっくり来てない方もいるかもしれません。
もしかしたらもう少し複雑な内容(具体的な例)の方がイメージが湧くかもしれません。

ということで、停止中のEC2を起動させるケースをやってみます。

※今回は、よくあるlambda_handler(events,context)という表記を使わずに、ec2infoとしました。(なんでもいいんだよってことを表したかっただけです)

テストデータは予め以下のものを用意しておきました。
※EC2はこのあと削除しているので、インスタンスID見えてても気にしない。

キーがinstanceid、バリューがi-0e~55です。

lambda関数がこのテストデータを受け取った後は、
4行目の処理で、ec2info引数の中にこのテストデータが格納されます。
7行目の処理で、ec2info['intanceid']により ec2.Instance(i-0e~55)となります。
8行目の処理で、ec2.Instance(i-0e~55) を起動させています。
9行目の処理で、ec2.Instance(i-0e~55)の起動待ちを行い
10行目の処理で、完了です。


少しでもイメージがつけば幸いです。

以上です。

 

www.guri2o1667.work

www.guri2o1667.work

www.guri2o1667.work

www.guri2o1667.work

www.guri2o1667.work