本番環境向け AWS Lambda の設定
AWS へのアプリケーションデプロイ
Dunieski Otano
Amazon Web Services Solutions Architect
テストでは動いたのに
テストはすべて通過しました
本番環境ではタイムアウトとスロットリングが発生します
コードではなく、設定に問題がありました
本番環境で重要な Lambda の設定項目
メモリ
:CPU とネットワークも比例してスケールします
タイムアウト
:関数が強制終了されるまでの最大秒数
エフェメラルストレージ
:/tmp の一時領域
コンカレンシー
:同時実行数
メモリのサイジングと CPU の関係
メモリを増やすと
CPU も比例して増加
します
CPU バウンドな関数はメモリを増やすことで高速化できます
実行時間の短縮は
コスト削減
につながります
推測せず、テストで適切なサイズを見つけましょう
コンカレンシー:予約済みとプロビジョニング済みの違い
予約済みコンカレンシー
同時実行数の上限を設定します
下流システムや他の関数を保護します
プロビジョニング済みコンカレンシー
インスタンスを事前ウォームアップし、コールドスタートを防ぎます
レイテンシーが重要なユーザー向け関数に適しています
設定の管理と共有コードのパッケージング
環境変数
:環境ごとの設定値
レイヤー
:コードや依存関係を関数間で共有
エクステンション
:ツール用に関数と並行して実行
設定はデプロイパッケージに含めないようにしましょう
Lambda を VPC に接続する
内部リソースへのアクセスには
プライベートサブネット
に Lambda をアタッチします
Lambda は VPC 内に
ENI
を作成します
セキュリティグループ
でアクセス先を制御します
外部アクセスには NAT または VPC エンドポイントが必要です
Destinations と DLQ による失敗処理
非同期呼び出しは失敗時に
自動的に再試行
されます
Lambda Destinations
:onSuccess と onFailure でルーティング
デッドレタキュー
:最終的に失敗したイベントを捕捉
失敗したイベントを無視しないようにしましょう
練習しましょう!
AWS へのアプリケーションデプロイ
Preparing Video For Download...