Q97 — AWS SAA-C03 第4章
第 97/105 問 | ← 第4章
Q292. ある会社が、VPC内に2層構成のWebアプリケーションを展開しています。Web層には、複数の可用性ゾーンにまたがるパブリックサブネットを使用するAmazon EC2 Auto Scalingグループが使用されています。データベース層には、別のプライベートサブネット内に配置されたAmazon RDS for MySQL DBインスタンスが使用されています。Web層は、製品情報を取得するためにデータベースへのアクセスを必要としています。 Webアプリケーションは意図したとおりに動作しておらず、Webアプリケーションから「データベースに接続できない」というエラーが報告されています。データベース自体は正常に起動・実行中であることが確認済みです。ネットワークACL、セキュリティグループ、ルートテーブルのすべての設定は、デフォルト状態のままです。 このアプリケーションの問題を解決するために、ソリューションアーキテクトは何を推奨すべきでしょうか?
- A. Web層のEC2インスタンスからのトラフィックを許可する明示的なルールを、プライベートサブネットのネットワークACLに追加します。
- B. Web層のEC2インスタンスとデータベース層の間でトラフィックを許可するルートを、VPCのルートテーブルに追加します。
- C. Web層のEC2インスタンスとデータベース層のRDSインスタンスをそれぞれ異なるVPCにデプロイし、VPCピアリングを設定します。
- D. データベース層のRDSインスタンスのセキュリティグループに、Web層のセキュリティグループからのトラフィックを許可する受信ルールを追加します。 ✓
正解: D. データベース層のRDSインスタンスのセキュリティグループに、Web層のセキュリティグループからのトラフィックを許可する受信ルールを追加します。
解説
パブリックサブネットにデプロイされたWebアプリケーションが、プライベートサブネットに配置されたRDS DBインスタンスに接続できないという問題を解決するには、データベース層のRDSインスタンスのセキュリティグループに、Web層のセキュリティグループからのトラフィックを許可する受信ルールを追加することが推奨されます。したがって、正解は選択肢Dです。 選択肢Aは、プライベートサブネットのネットワークACLにWeb層のEC2インスタンスからのトラフィックを許可するルールを追加することを提案していますが、ネットワークACLはステートレスであり、Web層とデータベース層間の通信を有効化するには、受信ルールと送信ルールの両方を更新する必要があります。 選択肢Bは、VPCのルートテーブルにWeb層のEC2インスタンスとデータベース層の間のトラフィックを許可するルートを追加することを提案していますが、ルートテーブルはサブネット間やインターネットゲートウェイとの間のトラフィックをルーティングするために使用されるものであり、異なるセキュリティグループ間の通信を有効化するための仕組みではありません。 選択肢Cは、Web層のEC2インスタンスとデータベース層のRDSインスタンスを別々のVPCにデプロイし、VPCピアリングを設定することを提案しています。VPCピアリングは、異なるVPC内のリソース間の通信を可能にする手段ではありますが、本問で発生している問題を解決するには不要であり、アーキテクチャに過剰な複雑さを追加します。 データベース層のRDSインスタンスのセキュリティグループに、Web層のセキュリティグループからのトラフィックを許可する受信ルールを追加することで、Web層はDBインスタンスのエンドポイントを用いてデータベース層と通信できるようになります。セキュリティグループは、インスタンスレベルで受信および送信トラフィックを制御する仮想ファイアウォールとして機能します。RDSインスタンスに関連付けられたセキュリティグループを、Web層のAuto Scalingグループに関連付けられたセキュリティグループからの受信トラフィックを許可するように設定することで、2層間の通信が確立されます。この解決策は、問題文で提示された要件を満たしており、最もシンプルかつ効果的な対応です。