AI作成・独立検証済(有資格者監修なし)DVA-C02 対応
実行環境/ライフサイクル難易度 標準無料

開発者が実装したLambda関数は、呼び出しのたびにハンドラー内でDB接続クライアントとAWS SDKクライアントを新規生成しており、トラフィックが多い時間帯にレイテンシとDB接続数の増大が問題になっている。呼び出し間で再利用可能なリソースを再利用し、パフォーマンスを改善する実装として最も適切なものを選べ。(単一選択)

  1. ADB接続クライアントとSDKクライアントの初期化コードをハンドラー関数の外(グローバルスコープ)に移動し、実行環境がウォーム状態で再利用される際にそのまま再利用されるようにする
  2. Bハンドラー関数内で毎回新しいクライアントを生成する実装のまま、関数のメモリ割り当てだけを増やしてCPU性能を上げる
  3. C関数のタイムアウト値を最大の15分に設定し、1回の呼び出しの中でより多くの処理時間を確保できるようにする
  4. D関数をVPCから切り離し、パブリックサブネットからのみアクセスできるように再設計する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

Lambdaの実行環境(execution environment)はInit・Invoke・Shutdownの3フェーズからなるライフサイクルを持つ。 コールドスタート時にInitフェーズでランタイムの初期化・拡張機能の初期化・ハンドラーファイルのグローバルスコープのコード実行が行われ、 その後に実行環境は一定時間(ウォーム状態)維持され、後続の呼び出しで再利用される。

  • DB接続クライアントやAWS SDKクライアントをハンドラー関数の外(グローバルスコープ)で初期化しておくと、 Initフェーズで一度だけ生成され、後続のウォーム実行では再生成せずにそのまま再利用される。
  • これによりウォーム実行時のレイテンシが下がり、DBへの新規接続確立回数も抑えられ、接続枯渇のリスクを軽減できる。
  • ハンドラー関数内で毎回生成すると、ウォーム実行であっても呼び出しのたびに接続確立コストが発生し、この最適化の恩恵を受けられない。
各誤答が違う理由
  • Bメモリ増加でCPU割当は上がるが、毎回接続を生成するロジック自体は変わらず、接続確立コストとDB接続数増大の根本原因は解消しない。
  • Cタイムアウト値は1回の呼び出しあたりの最大実行時間の上限を変えるだけで、呼び出しごとの接続再生成という問題には無関係。
  • DVPC設定の有無は接続クライアントの再利用戦略とは別軸の話であり、ハンドラー内での再生成という実装上の問題を解決しない。
ひっかけ: 「コールドスタートを完全になくす」ことと「ウォーム実行時の再利用を最適化する」ことは別の話。本問は実行環境の再利用(execution context reuse)を活かす実装パターンが論点であり、 プロビジョンド同時実行(コールドスタート自体の排除)とは区別すること。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
この分野をもっと解いて、得点源に
Lambda開発 を含む問題を分野別に演習できます。
演習する →