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