DVA-C02:AWS Certified Developer - Associate AWS サービスを用いた開発 問17
AWS サービスを用いた開発/AWS Lambda のコード開発Lambda 関数の設計で、同時に複数のリクエストが来ると関数の実行環境が複数並行して起動する。関数コードの書き方の原則として最も適切なものはどれか。
当サイトのオリジナル問題(DVA-C02:AWS Certified Developer - Associateの出題範囲「AWS サービスを用いた開発」に対応。実際の試験問題ではありません)
- A1 つの実行環境にグローバル変数で状態をため込み、全呼び出しで共有する
- B各呼び出しは独立・ステートレスに設計し、ローカルの状態に依存せず必要な状態は外部(DynamoDB 等)に保持する
- C関数内でローカルファイルに永続データを保存して次回も使う
- D同時実行は起きない前提で排他制御を省く
正解:B
解説
Lambda は同時リクエストに応じて実行環境が複数並行して起動し、環境の再利用も保証されないため、各呼び出しを独立・ステートレスに設計し、必要な状態は DynamoDB などの外部に保持するのが原則です。グローバル変数での状態共有やローカルファイルの永続前提、同時実行を無視した設計は誤りです。
下線の用語は 用語集 で意味を確認できます。
選択肢ごとの解説
- A誤り。実行環境は複数並行・再利用も不定で、グローバル変数での状態共有は信頼できません。
- B正しい。Lambdaはステートレス設計で、状態は外部に保持します。
- C誤り。ローカルファイルは永続化されず、次回利用を前提にできません。
- D誤り。同時実行は起こり得るため、前提を省くのは誤りです。