Q10 — AWS SAA-C03 第16章
第 10/100 問 | ← 第16章
Q1210. ある企業が、AWSサービスを活用してイベント駆動型アプリケーションを構築したいと考えています。また、デプロイメント時にブルー/グリーン環境間のトラフィックを制御するために、Amazon API Gateway REST API を使用したいとしています。これらの要件を満たすソリューションはどれですか?
- A. 2つのAWS Lambda関数を作成します。API Gatewayを、それぞれのLambda関数を指す2つのステージ変数で設定します。AWS Serverless Application Model(AWS SAM)を使用して、API Gatewayのステージ変数を更新することでブルー/グリーンデプロイメントを実行します。
- B. 単一のAWS Lambda関数を作成します。AWS Systems Manager Run Command を使用して、2つの異なるバージョン間でLambda関数のエイリアスを切り替えることでブルー/グリーンデプロイメントを実行します。
- C. 2つのAWS Lambda関数を作成します。AWS Serverless Application Model(AWS SAM)を使用してLambda関数を更新します。また、デプロイメント中に環境タグに基づいて各Lambda関数にイベントをルーティングするためにAmazon EventBridgeを使用します。
- D. 単一のAWS Lambda関数を作成します。AWS Serverless Application Model(AWS SAM)を使用してブルー/グリーンデプロイメントを実行し、2つのLambdaエイリアスを作成した後、API Gatewayのステージ変数を更新してエイリアス間の切り替えを行います。 ✓
正解: D. 単一のAWS Lambda関数を作成します。AWS Serverless Application Model(AWS SAM)を使用してブルー/グリーンデプロイメントを実行し、2つのLambdaエイリアスを作成した後、API Gatewayのステージ変数を更新してエイリアス間の切り替えを行います。
解説
企業が、Amazon API Gateway REST API を用いてデプロイメント中のブルー/グリーン環境間のトラフィック制御を実現するイベント駆動型アプリケーションを構築するという要件を満たす最も適切なソリューションは、選択肢Dです。単一のAWS Lambda関数を作成し、AWS Serverless Application Model(AWS SAM)を用いて2つのLambdaエイリアスを作成・管理し、API Gatewayのステージ変数を更新することでエイリアス間のトラフィック切り替えを行う方法です。 分析: ・単一Lambda関数とエイリアスの活用: ブルー/グリーンデプロイメントでは、単一のLambda関数に対して「blue」「green」などのエイリアスを定義し、それぞれ異なるバージョン(例:$LATESTや特定のバージョン番号)を指すように設定することで、トラフィックの切り替えを簡潔かつ安全に行えます。これにより、安定版(ブルー)を維持しつつ、新機能を含むバージョン(グリーン)を並行してテスト・検証できます。 ・AWS SAMによるブルー/グリーンデプロイメントの自動化: AWS SAMは、サーバーレスアプリケーションの定義・デプロイをコードとして管理(Infrastructure as Code)するためのフレームワークです。SAMテンプレート内でLambdaエイリアスを宣言・更新し、同時にAPI Gatewayのステージ変数を動的に書き換えることが可能であり、再現性・監査性・自動化に優れています。 ・API Gatewayのステージ変数によるトラフィック制御: API Gatewayのステージ変数をLambda関数のARN(例:arn:aws:lambda:us-east-1:123456789012:function:MyFunction:blue)に設定することで、ステージ(例:prod)へのリクエストを指定されたエイリアスへルーティングできます。ステージ変数の更新は即時反映され、ゼロダウンタイムでの環境切り替えが実現可能です。 他の選択肢が不適切な理由: A:2つの独立したLambda関数を別々に作成すると、コード重複・設定管理コスト・権限設定の二重化など、運用上のオーバーヘッドが増大します。エイリアスによるバージョン管理の方がリソース効率・保守性ともに優れています。 B:Systems Manager Run Commandによるエイリアス切り替えは、手動またはスクリプト依存の操作であり、CI/CDパイプラインとの統合やロールバックの自動化が困難です。AWS SAMのような宣言的・自動化されたアプローチに比べ、スケーラビリティと信頼性に劣ります。 C:EventBridgeを介した環境タグベースのルーティングは、本来API Gatewayが担うべきHTTPレベルのトラフィック制御を非同期イベント基盤に委ねる過剰な設計です。不要な遅延・複雑性・障害点の増加を招き、また、API Gatewayのステージ変数やエイリアス機能を活用しない非効率なアプローチです。