Q44 — AWS DVA-C02 第2章
第 44/100 問 | ← 第2章
ある開発者がAWS Lambda関数を最適化しており、すべてのトラフィックに対して並列でこれらの変更をテストしたいと考えています。このLambda関数は、Amazon API GatewayのREST APIのリクエストを処理します。開発者は、変更を本番環境でテストしたいが、API GatewayのURLを変更したくありません。この要件を満たすソリューションはどれですか?
- A. 現在デプロイされている本番Lambda関数に対して関数バージョンを定義します。API Gatewayエンドポイントを更新し、新しいLambda関数バージョンを参照するようにします。最適化されたLambda関数コードをアップロードして公開します。本番API Gatewayステージでカナリアリリースを定義し、トラフィックの割合をカナリアリリースに向けます。API Gatewayエンドポイントを更新し、Lambda関数の$LATESTバージョンを使用するようにします。APIをカナリアステージに公開します。
- B. 現在デプロイされている本番Lambda関数に対して関数バージョンを定義します。API Gatewayエンドポイントを更新し、新しいLambda関数バージョンを参照するようにします。最適化されたLambda関数コードをアップロードして公開します。API Gatewayエンドポイントを更新し、Lambda関数の$LATESTバージョンを使用するようにします。新しいAPI Gatewayステージをデプロイします。
- C. Lambda関数の$LATESTバージョンにエイリアスを定義します。API Gatewayエンドポイントを更新し、新しいLambda関数エイリアスを参照するようにします。最適化されたLambda関数コードをアップロードして公開します。本番API Gatewayステージでカナリアリリースを定義し、トラフィックの割合をカナリアリリースに向けます。API Gatewayエンドポイントを更新し、Lambda関数の$LATESTバージョンを使用するようにします。カナリアステージにAPIを公開します。 ✓
- D. 現在デプロイされている本番Lambda関数に対して関数バージョンを定義します。API Gatewayエンドポイントを更新し、新しいLambda関数バージョンを参照するようにします。最適化されたLambda関数コードをアップロードして公開します。API Gatewayエンドポイントを更新し、Lambda関数の$LATESTバージョンを使用するようにします。APIを本番API Gatewayステージにデプロイします。
正解: C. Lambda関数の$LATESTバージョンにエイリアスを定義します。API Gatewayエンドポイントを更新し、新しいLambda関数エイリアスを参照するようにします。最適化されたLambda関数コードをアップロードして公開します。本番API Gatewayステージでカナリアリリースを定義し、トラフィックの割合をカナリアリリースに向けます。API Gatewayエンドポイントを更新し、Lambda関数の$LATESTバージョンを使用するようにします。カナリアステージにAPIを公開します。
解説
選択肢Cは、Lambda関数の$LATESTバージョンにエイリアスを定義することを提案しており、これによりLambda関数の新バージョンを$LATESTバージョンとシームレスに置き換えることができます。その後、API Gatewayでカナリアリリースを構成し、一部のトラフィックを新バージョンにルーティングすることで、本番環境でのテストが可能となり、すべてのトラフィックに影響を与えません。選択肢Aでは、API Gatewayエンドポイントを新しいLambda関数バージョンではなくエイリアスを参照するように更新する記述がありません。選択肢Bも同様に、直接新しいLambda関数バージョンをデプロイしており、エイリアスを使用していません。選択肢Dでは、APIを直接本番API Gatewayステージにデプロイしており、カナリアリリースについて言及していません。したがって、選択肢Cが要件を最も適切に満たすソリューションです。