AWS Lambdaのエントリポイントって何で(どこで)決まるの?【AWS/Lambda】

AWS Lambdaのエントリポイントって何で(どこで)決まるの?【AWS/Lambda】

当たり前すぎる超基本的な、AWS超初学者向けの内容です。
なんとなく「Lambda エントリポイント」で検索してみたら意外と上位に単純明快なページが出てこなかったので書いてみました。

Lambdaのエントリポイントはどこで(何で)決まる?

いきなり解答ですが、関数の詳細ページの下の方にあるランタイム設定の欄のハンドラの項目でエントリポイントが指定されています。
ここで指定した関数が、作成したLambda関数を実行するとなったときに呼び出されます。

2024-02-12_1.webp
2024-02-12_2.webp

実際にLambdaで関数を新規作成して確認してみる

まず、Lambdaのページにアクセスして、関数一覧ページなどから関数の作成をクリックして適当な関数を作成します。
2024-02-12_3.webp

適当に名前をつけて、今回は例としてJavaScriptで進ますのでランタイムはデフォルトのNode.jsにして関数の作成をクリック。
2024-02-12_4.webp

そうするとLambda関数の詳細ページ(編集ページ)が表示されます。
デフォルトでサンプルコードが書かれているので見てみましょう。

2024-02-12_5.webp

index.mjsというファイルにhandlerという名前の関数が定義されています。

※ index.jmsはindex.jsと同じとここでは思ってもらって大丈夫です。厳密な定義を知りたい場合は「【AWS Lambda】index.mjs の mjs って何?【node.js】」の記事がとてもわかりやすいのでおすすめです。

試しに実行してみましょう。テストタブを選択し、テストボタンをクリックします。

2024-02-12_6.webp

コードの通り、responseという名前のオブジェクトで定義された内容がreturnされていることがわかります。
2024-02-12_7.webp

では再びコードタブに戻り、下にスクロースしてランタイム設定 > ハンドラの項目を確認します。
2024-02-12_8.webp

これはindex.mjshandlerという名前の関数がエントリポイントということを示しています。

では試しにこれを、存在しない名前にするとどうなるでしょう。

ランタイム設定編集ボタンで編集します。
2024-02-12_9.webp

存在しないhandler2という名前にします。
2024-02-12_10.webp

実行してみます。
2024-02-12_11.webp

「handler2は存在しないかexportされてないよ」といわれてエラーになりました。

では今度はhandler2を実際に作ってみます。
2024-02-12_12.webp

handler2を作って、handlerhandler2の両方が在る状態にしました。
分かりやすいように、bodyのメッセージも変えました。
修正したら反映されるようにDeployボタンをクリックします。

ではテストタブに移動して実行してみましょう。
2024-02-12_13.webp

handler2だけが実行され、handlerは実行されていないことがわかります。

以上です。

ちなみにエントリポイントの関数の先頭のexportを書き忘れてもエラーになるのでご注意ください。

Share this post