AWS認定資格 WEB問題集&徹底解説
ソリューションアーキテクト-プロフェッショナル
問題文と選択肢
A) ECR イメージの 2 つ目のリージョンへのクロスリージョンレプリケーションを設定する。
B) 2 つ目のリージョンの ECR リポジトリから VPC エンドポイントを作成する。
C) 2 つ目のデプロイターゲットを 2 つ目のリージョンに追加して、App Runner 設定を編集する。
D) App Runner を 2 番目のリージョンにデプロイする。Route 53 レイテンシールーティングポリシーを 設定する。
E) 目的の 2 つのリージョンで Amazon DynamoDB グローバルテーブルを使用して、データベースを 変更する。
F) 2 つ目のリージョンで書き込み転送が有効になっている Aurora グローバルデータベースを使用する。
- A,D,F
- B,D,E
- C,E,F
- A,E,F
A. A,D,F
A・D・F の組み合わせが正解。App Runner はリージョン単位のサービスであり、参照する ECR リポジトリも同一リージョンに必要なため、まず A(ECR のクロスリージョンレプリケーション)で 2 つ目のリージョンにイメージを配置する。
次に D で 2 つ目のリージョンに App Runner サービスをデプロイし、Route 53 のレイテンシールーティングで両リージョンへトラフィックを振り分けることで Active-Active が成立する。
データ層は F の Aurora グローバルデータベースを使い、書き込み転送を有効にすればセカンダリリージョンのアプリからの書き込みがプライマリへ自動転送される。既存の Aurora MySQL をそのまま活かせるため、アーキテクチャの変更が最小限という要件も満たす。
B. B,D,E
B・D・E の組み合わせ。B が不要で、E が過大な変更のため誤り。
B の VPC エンドポイントは、VPC 内のリソースから ECR へプライベートに接続するための仕組みで、App Runner がマネージド環境から ECR のイメージを取得する動作には必要ない。そもそも 2 つ目のリージョンにイメージそのものを複製する手当て(A)が抜けている。
E の DynamoDB への移行は、リレーショナルな Aurora MySQL を NoSQL に作り替えることを意味し、アプリケーションのデータアクセス層を全面的に書き直す最大級のアーキテクチャ変更になる。
C. C,E,F
C・E・F の組み合わせ。C が実現不可能なため誤り。
App Runner の設定には「2 つ目のリージョンをデプロイターゲットとして追加する」ような項目は存在しない。App Runner サービスは作成したリージョン内で完結するため、リージョンごとにサービスを個別に作成する必要がある(= D が必要)。
加えて E の DynamoDB 移行も「変更を最小限に」という要件に真っ向から反する。F だけが妥当な要素である。
D. A,E,F
A・E・F の組み合わせ。A と F は正しいが、E が誤りであり、さらに2 つ目のリージョンへのアプリのデプロイとトラフィック分散(D)が欠落している。
ECR にイメージを複製し(A)、Aurora グローバルデータベースを構築(F)しても、2 つ目のリージョンで App Runner が動いていなければ Active-Active にはならないし、ユーザーを両リージョンに振り分ける Route 53 の設定も無い。
E の DynamoDB グローバルテーブルは Active-Active な書き込みには適するが、既存の Aurora MySQL を捨てる大改修となり、要件に反する。
構成図
Route 53(レイテンシールーティング)
├────────────────┐
▼ ▼
[リージョン1] [リージョン2]
App Runner App Runner
▲ イメージ ▲ イメージ
ECR ──レプリケーション──▶ ECR
│ │
Aurora プライマリ ◀─書き込み転送─ Aurora セカンダリ
─レプリケート─▶
App Runner はリージョンサービス。マルチリージョンは「各リージョンにデプロイ+Route 53」。DB はAurora グローバル DB +書き込み転送。
正解への思考ルート
問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。| 要件 | 判断ポイント |
|---|---|
| App Runner でホストし、ECR のイメージを使用している(前提) | App Runner はリージョンサービスで、イメージも同一リージョンの ECR に必要。記述 A(ECR のクロスリージョンレプリケーション)を含む組み合わせが前提になる →選択肢(B・C)を消す |
| 2 つの AWS リージョンに Active-Active でデプロイする | 記述 D(各リージョンに App Runner をデプロイ+Route 53 レイテンシールーティング)が必須。設定 1 つで複数リージョンへ展開する記述 C の機能は存在しない →選択肢(A)が正解/選択肢(C・D)を消す |
| データは既存の Aurora MySQL DB クラスターに格納している | 記述 F(Aurora グローバルデータベース+書き込み転送)なら、セカンダリからの書き込みがプライマリへ転送され、既存の MySQL 資産をそのまま活かせる →選択肢(A・C・D)は候補 |
| 「アーキテクチャの変更を最小限に抑えながら」 | 記述 E の DynamoDB への移行はデータモデルとコードの全面改修となり、この制約に真っ向から反する →選択肢(B・C・D)を消す |
| App Runner から ECR へのイメージ取得方法 | App Runner はマネージド環境から ECR に直接アクセスできる。記述 B の VPC エンドポイントは不要な追加要素 →選択肢(B)を消す |
ひっかけポイント
- 記述 C の「2 つ目のデプロイターゲットを追加して App Runner 設定を編集する」は存在しない機能。「設定を編集するだけ=変更が最小限」に見えるが、実現できない案は最小限でも何でもない
- 記述 E の DynamoDB グローバルテーブルはマルチリージョン Active-Active の定番なので強く目を引く。しかし本問は既存の Aurora MySQL があるうえで「変更を最小限に」と言っており、DB エンジンの乗り換えは真逆の選択
- 「Aurora グローバルデータベースはセカンダリが読み取り専用だから Active-Active にできない」と早合点しない。書き込み転送を有効にすればセカンダリからの書き込みが可能(Aurora MySQL でサポート)
- 記述 B の VPC エンドポイントは「セキュア・プライベート」の響きで正しそうに見えるが、App Runner の ECR アクセスには不要。しかもこの組み合わせにはイメージを複製する手順が無いため、そもそも 2 つ目のリージョンでデプロイできない
出題バリエーション
同じ知識が本番では条件を変えて出題されます。| 問題文がこう変わったら | 正解はこう変わる |
|---|---|
| 「障害時のみもう 1 つのリージョンを使う(Active-Passive)」 | Route 53 のフェイルオーバールーティング+ Aurora グローバル DB のリージョン昇格が正解軸に。 |
| 「新規開発で、両リージョンで低レイテンシーな書き込みを行いたい」 | DynamoDB グローバルテーブル(マルチアクティブ書き込み)が正解に浮上する。 |
| 「App Runner ではなく ECS / EKS でコンテナを実行している」 | 各リージョンに ECS サービスを作成し、ALB + Route 53(または Global Accelerator)で振り分ける形になる。 |
| 「リージョン間の切り替えを即座に(IP 固定で)行いたい」 | AWS Global Accelerator のエンドポイントグループが正解軸に。 |
| 「グローバルデータベースのセカンダリで大量の書き込みを行いたい」 | 書き込み転送はプライマリへの往復レイテンシーが乗るため不向き。データの分割やマルチアクティブ設計の検討が問われる。 |
リファレンス
この問題を解くために必要な知識を扱う公式ドキュメントです。| 知識項目 | 公式ドキュメント |
|---|---|
| Aurora グローバルデータベースの書き込み転送(セカンダリからの書き込み) | Amazon Aurora Global Database の書き込み転送を使用する - Amazon Aurora |
A) ECR イメージの 2 つ目のリージョンへのクロスリージョンレプリケーションを設定する。
B) 2 つ目のリージョンの ECR リポジトリから VPC エンドポイントを作成する。
C) 2 つ目のデプロイターゲットを 2 つ目のリージョンに追加して、App Runner 設定を編集する。
D) App Runner を 2 番目のリージョンにデプロイする。Route 53 レイテンシールーティングポリシーを 設定する。
E) 目的の 2 つのリージョンで Amazon DynamoDB グローバルテーブルを使用して、データベースを 変更する。
F) 2 つ目のリージョンで書き込み転送が有効になっている Aurora グローバルデータベースを使用する。
- A,D,F
- B,D,E
- C,E,F
- A,E,F