実行ロール
Lambda関数で使用するawsサービスの設定です。
ロール自体の設定は、「IAM」で行います。
DynamoDBやS3を使用するLambda関数では、実行ロールに当該サービスを含めましょう。
ログ
Lambdaの実行ログは、CloudWatchで閲覧できます。
タイムアウト時間
Lambda関数はデフォルトで3秒のタイムアウト時間が設定されています。
時間がかかる処理を実行する場合にはタイムアウト時間も気にしましょう。
node modulesを使用する場合
デフォルトで使用できるモジュールはhttpクライアントの"http"など少ないです。
モジュールを使用するためには、ローカルでデプロイパッケージを作成し、zip化してアップロードする手順が必要です。
参考
https://qiita.com/makopo/items/b738e32081f8cae75fe7
バージョンと非同期処理
特別な事情がなければasync awaitが使用できる8.10を推奨します。
使用するモジュールも、async awaitに対応したものを使用するようにしましょう。
例えば、Lambdaでデフォルトで使用可能な「http」モジュールはasync await非対応です。httpクライアントとしては、「node-fetch」がasync awaitに対応していることを確認しています。
https://www.npmjs.com/package/node-fetch
非同期処理/async awaitってなに?って方向けにざっくり説明します。
javascriptでは、実行速度を向上するために、db参照やhttpリクエスト等の時間がかかる処理の終了を待たずに次の処理を行います。
これは時に上から順番にコードが実行されないという実装者としては悩ましい事態も引き起こします。
関数をasync functionにして、呼び出し時にはawaitを付与することにより、関数の実行終了を待つことができます。
以下に簡単なサンプルコードを示します。
async function jikanKakaruShori(){
console.log("時間かかる処理")
}
async function suguOwaruShori(){
console.log("すぐ終わる処理")
}
async function exec(){
await jikanKakaruShori()
await suguOwaruShori()
}
exec()