DVAAWSのサービスを使用した開発

開発者はAmazon API Gatewayを使用してREST APIを設計しています。本番環境(prod)、テスト環境(test)、開発環境(dev)の各ステージごとに、バックエンドとして呼び出すAWS Lambda関数のバージョン(またはエイリアス)を変更したいと考えています。APIの定義やリソース構成をステージごとに個別作成することなく、最小限の設定作業で環境差分を管理・吸収するための設計戦略として正しいものはどれですか。

A
API Gatewayのモック統合を利用して、環境名に応じたLambda関数へのリダイレクト処理をレスポンスマッピングテンプレートに記述する。
モック統合は実際のバックエンドを呼び出さずに直接レスポンスを返す機能であり、実Lambda関数への動的なルーティングには使用できません。
B
API Gatewayのステージ変数を作成し、統合リクエストのLambda関数のARN指定部分で `${stageVariables.functionAlias}` のように動的参照する。
✓ 正解
ステージ変数を使用することで、単一のAPI構成を維持したまま各ステージが指し示すLambda関数のバージョンやエイリアスを安全かつ容易に切り替えられます。
C
Lambda関数のソースコード内で、リクエストのヘッダーから送られてくるAPI Gatewayのステージ名を判定して条件分岐する処理を実装する。
Lambda関数側で環境分岐を行うアプローチでは、関数自体を環境ごとに分離して安全にテスト・デプロイするという本来の要件を満たせません。
D
ステージごとに個別のAPI Gateway REST APIインスタンスを新規作成し、それぞれの統合設定に個別のLambda ARNをハードコードする。
環境ごとにAPI Gatewayを個別作成・管理する方法は設定の複製や更新作業が増え、管理負荷と設定ミスのリスクが大幅に上昇するため不適切です。

解説

API Gatewayの「ステージ変数」を使用すると、デプロイ先のステージ(prod/test/devなど)ごとに異なる環境変数値を保持できます。統合リクエストのURI設定で `arn:aws:apigateway:region:lambda:path/2015-03-31/functions/arn:aws:lambda:region:account-id:function:MyFunction:${stageVariables.lambdaAlias}/invocations` のようにステージ変数を埋め込むことで、API定義を1つに保ったまま環境ごとの呼び出し先Lambda(エイリアスやバージョン)を動的に切り替えることが可能です。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
DVA の問題一覧に戻る