同時実行数
同時実行数:ある時点で同時に実行されているLambda関数の数(デフォルトでは同一アカウントの同一リージョン内につき最大1,000)
- 関数レベルの同時実行数を設定することも可能
- アカウントレベルの同時実行数 - 関数レベルの同時実行数 = 他のLambda関数で共有される同時実行数
スロットリング
スロットリング:各アカウントごとに設定されているリソースの利用上限を超えた場合に、利用が制限されること
スロットリングされたリクエストの処理方法
イベントソースのタイプ | 処理方法 |
---|---|
同期呼び出し (プッシュ型) |
・429エラーを返却する ・リトライするためには、呼び出し元でリトライ作業を行う |
非同期呼び出し (プッシュ型) |
・最大6時間自動的に間を空けてリトライする ・デッドレターキューを設定することで、スロットリングされた原因を調査可能 |
ストリームベース (プル型) |
・データの有効期限が切れるまでスロットリングされたデータの処理を試みる ・処理の順序を保つため、データの有効期限が切れるか処理が成功するまで同一のシャードから新しいレコードは読み込まない |
キューベース (プル型) |
・正常に呼び出されるか、キューの期限に達するまでスロットリングされたレコードの処理を試みる |
リトライ動作
Lambda関数の実行に失敗した場合の処理方法
イベントソースのタイプ | 処理方法 |
---|---|
同期呼び出し (プッシュ型) |
・429エラーを返却する ・リトライするためには、呼び出し元でリトライ作業を行う |
非同期呼び出し (プッシュ型) |
・2回まで自動的に間を空けてリトライする ・デッドレターキューを設定することで、関数がエラーになった原因を調査可能 |
ストリームベース (プル型) |
データの有効期限が切れるまでエラーが発生したデータの処理を試みる ・処理の順序を保つため、データの有効期限が切れるか処理が成功するまで同一のシャードから新しいレコードは読み込まない |
キューベース (プル型) |
・メッセージの処理に失敗すると、それをキューに返却する ・メッセージは可視性タイムアウト期間を過ぎると再度処理が可能になる |
デバッグ
- ログはCloudWatch Logsに出力される
→ エラー発生時にはログを確認することで原因を特定可能 - マネージメントコンソール上でテスト実行することが出来、コンソール上に実行結果とログの出力も可能
- **AWS SAM(Serverless Application Model)**というフレームワークを利用することで、Lambda関数をローカル環境で実行・テスト・デバッグすることが可能