AWS Lambdaのエントリポイントって何で(どこで)決まるの?【AWS/Lambda】
当たり前すぎる超基本的な、AWS超初学者向けの内容です。
なんとなく「Lambda エントリポイント」で検索してみたら意外と上位に単純明快なページが出てこなかったので書いてみました。
Lambdaのエントリポイントはどこで(何で)決まる?
いきなり解答ですが、関数の詳細ページの下の方にあるランタイム設定
の欄のハンドラ
の項目でエントリポイントが指定されています。
ここで指定した関数が、作成したLambda関数を実行するとなったときに呼び出されます。
実際にLambdaで関数を新規作成して確認してみる
まず、Lambdaのページにアクセスして、関数一覧ページなどから関数の作成
をクリックして適当な関数を作成します。
適当に名前をつけて、今回は例としてJavaScriptで進ますのでランタイムはデフォルトのNode.jsにして関数の作成
をクリック。
そうするとLambda関数の詳細ページ(編集ページ)が表示されます。
デフォルトでサンプルコードが書かれているので見てみましょう。
index.mjs
というファイルにhandler
という名前の関数が定義されています。
※ index.jmsはindex.jsと同じとここでは思ってもらって大丈夫です。厳密な定義を知りたい場合は「【AWS Lambda】index.mjs の mjs って何?【node.js】」の記事がとてもわかりやすいのでおすすめです。
試しに実行してみましょう。テスト
タブを選択し、テスト
ボタンをクリックします。
コードの通り、responseという名前のオブジェクトで定義された内容がreturnされていることがわかります。
では再びコード
タブに戻り、下にスクロースしてランタイム設定
> ハンドラ
の項目を確認します。
これはindex.mjs
のhandler
という名前の関数がエントリポイントということを示しています。
では試しにこれを、存在しない名前にするとどうなるでしょう。
ランタイム設定
の編集
ボタンで編集します。
存在しないhandler2
という名前にします。
実行してみます。
「handler2は存在しないかexportされてないよ」といわれてエラーになりました。
では今度はhandler2を実際に作ってみます。
handler2
を作って、handler
とhandler2
の両方が在る状態にしました。
分かりやすいように、bodyのメッセージも変えました。
修正したら反映されるようにDeploy
ボタンをクリックします。
ではテスト
タブに移動して実行してみましょう。
handler2
だけが実行され、handler
は実行されていないことがわかります。
以上です。
ちなみにエントリポイントの関数の先頭のexport
を書き忘れてもエラーになるのでご注意ください。
Share this post