助け合いフォーラム

AWS

AWS ソリューションアーキテクト - アソシエイト(SAA-C03)
問題ID : 36520
問題を開く
ある大手商社は、現在業務システムの運用環境をアジアに位置するリージョンで稼働させている。同社は、最近の自然災害のリスクを受けて、災害復旧(DR)のための冗長性を高めることを決定した。現在の運用環境と同じアーキテクチャを、北米にあるリージョンに迅速かつ確実に構築したいと考えている。この要件を効率的に満たすためにはどのような手段がよいか。

正解

現行のインフラストラクチャを参考にして、それをベースにテンプレートを作成する。その後、AWS CloudFormationを利用して新しいリージョンにこのテンプレートを適用し、DR用のインフラを構築する

解説

この設問は、同じ構成のインフラストラクチャを別のリージョンに迅速かつ確実に構築したいという要件を求めています。

CloudFormationはAWSクラウド上での環境構築を自動で行うサービスの1つです。テンプレートには、リソースやその設定などの情報が含まれており、このテンプレートを使用して別のリージョンで同じインフラストラクチャを構築することができます。同じアーキテクチャを異なるリージョンに構築するための手法として、効率的であり冗長性を高めるための適切な方法です。

したがって正解は以下となります。
・現行のインフラストラクチャを参考にして、それをベースにテンプレートを作成する。その後、AWS CloudFormationを利用して新しいリージョンにこのテンプレートを適用し、DR用のインフラを構築する

その他の選択肢については、以下の通りです。

・AWS Elastic Beanstalkを使用し、現在の運用環境の設定をエクスポートして、別のリージョンに新しい環境を自動的に構築する
Elastic Beanstalkは、アプリケーションが動作する定番の構成を提供します。しかし「現在の運用環境の設定をエクスポートする」という機能は提供していません。そのため新しいリージョンでの環境を手動でセットアップする必要があります。
また、Elastic Beanstalkは定番の構成を提供しますが、ある特定の構成の詳細な設定は提供しませんので、設問にある構成を構築できるかは不明です。よって誤りです。

・AWS Configを使用して、現在のインフラストラクチャで使用されるリソースのインベントリを記録し、その情報を使用して手動で別のリージョンに構築する
Configは、AWSリソースの設定を管理し、記録・評価するサービスです。リソースの「インベントリを記録する」というよりは、リソースの設定とその変更履歴を追跡・監査するものです。さらに、Configは直接的に「その情報を使用して手動で別のリージョンに構築する」機能を提供していません。よって誤りです。

・AWS Backupを使用して、現在のリージョンでのリソースのバックアップを取得し、そのバックアップを北米のリージョンにリストアすることで、DR用の環境を復元する
Backupは、ストレージやデータベース等のバックアップを一元管理するフルマネージドのサービスです。全体のシステムやアーキテクチャのバックアップ・リストアの目的では利用できません。よって誤りです。

参考

【AWS CloudFormation】
AWS CloudFormationは、AWSクラウド上で環境を自動的に構築するサービスです。JSONやYAML形式で記述されたテンプレートをもとに、AWSのインフラストラクチャを構築および管理します。
CloudFormationは「IaC(Infrastructure as Code)」を実現するAWSのサービスです。IaCとは、仮想サーバー、データベース、ネットワーク設定などのITインフラをコードで定義する技術です。IaCの主なメリットは、以下のとおりです。
・再現性のある環境構築 … 異なる複数の環境で一貫性のあるインフラ構成を再現できる
・環境の共有 … 定義されたコードを他のユーザーが使用できる
・変更管理の向上 … コードによりリソース構成やパラメータの変更管理が容易になる
・人的エラーの削減 … 手動操作を減らすことで、設定ミスなどのエラーが発生しにくくなる

CloudFormationを用いると、EC2やELBなどのサーバー環境だけでなく、CloudWatchのような運用支援サービスも含め、ほぼ全てのAWSリソースをコード化して、構築および運用を自動化できます。

[CloudFormationの利用イメージ]


■テンプレートとスタック
CloudFormationは、リソース構成を定義したテンプレートをもとに環境を構築し、その環境を「スタック」という単位で管理します。テンプレートはJSONまたはYAML形式で記述され、AWSリソースの構成や設定を定義する設計図の役割を果たします。
例えば、Webアプリケーションをリリースする場合には、必要なAWSリソース(VPCやEC2インスタンスなど)をテンプレートに定義し、CloudFormationがプロビジョニング(構築)します。もしWebアプリケーションが不要になった場合は、スタックを削除することで関連するリソースをまとめて解除できるため、不要になった環境を簡単に削除できます。
テンプレートは自分で記述して作成する方法以外にも、AWSが提供するサンプルテンプレートや、マネジメントコンソールのGUIを使用して作成できます。

[JSON、YAMLでの記述例(EC2インスタンス作成)]


[マネージメントコンソールのテンプレート作成画面(EC2インスタンス作成)]


■サービスロール
サービスロールは、CloudFormationに対して、ユーザーの代わりにスタック内のリソースを操作する許可を与えるためのIAMロールで、スタックの定義時に指定することができます。
サービスロールを指定すると、CloudFormationはスタックで実行されるすべての操作にこのロールの権限を使用します。これにより、ユーザーが直接各リソースに対するアクセス権限を持っていなくても、AWSリソースのプロビジョニングを行うことができます。

■スタックセット
AWS CloudFormationで作成したテンプレートを基に、複数のAWSアカウントで、または複数のリージョンでスタックを構築したい場合には「スタックセット(StackSets)」を利用します。管理者アカウントで作成したテンプレートを利用して、ターゲットアカウント(プロビジョニングを行うアカウント)とプロビジョニングを行うリージョンを指定することで、一度の操作で複数の同じ環境を構築できます。
テスト環境を複数構築したい場合や、新たにアカウントを払い出す際に下準備となる操作(IAMやセキュリティグループの設定など)をスタックセットとして作成しておく、といった利用ができます。

【AWS Service Catalog】
AWS Service Catalogは、主にCloudFormationテンプレートを製品として登録し、他のAWSユーザーへ共有できるサービスです。共有先のAWSユーザーは、セルフサービスで製品からAWS環境をデプロイ(構築)できます。製品の管理者は、製品のバージョンや、製品がいつ・誰に使用されたかを一元的に管理できるので、共有するAWS環境の一貫性とコンプライアンスを維持できます。


例えば、システム管理者が構築したAWS環境をService Catalogに登録してアプリケーション開発者に共有することで、アプリケーション開発者は容易に自身のAWSアカウント内に開発環境をデプロイできます。また、システム管理者は共有したAWS環境のバージョンや使用履歴を一元管理できます。

【環境構築の自動化サービス】
インフラ環境を自動的に構築・管理するサービスには、「AWS CloudFormation」のほかに「AWS Elastic Beanstalk」などがあります。

CloudFormationはインフラやサーバーに関する知識が必要ですが、多くのAWSサービスに対応しており、柔軟な設定が可能です。

Elastic BeanstalkはCloudFormationほどの柔軟性はありませんが、サーバーやインフラに関する深い知識がなくても、定番の構成を利用して簡単にアプリケーションを公開できます。
※詳細は「Elastic Beanstalk」の分野を参照してください。
上に戻る

CloudFormationでDR環境を迅速に構築することは可能なのか

投稿日 2024/12/05

現在の運用環境と同じアーキテクチャを、北米にあるリージョンに迅速かつ確実に構築したいと考えている。この要件を効率的に満たすためにはどのような手段がよいか。

上記問いの回答が「現行のインフラストラクチャを参考にして、それをベースにテンプレートを作成する。その後、AWS CloudFormationを利用して新しいリージョンにこのテンプレートを適用し、DR用のインフラを構築する」だということに疑問を感じたので、質問させていただきます。

疑問に思った点は、「迅速かつ確実に構築したい」の「迅速」の部分です。
CloudFormationで既存環境のリソースを一からテンプレート化することは、(規模や開発者のスキルにもよりますが)「迅速」にはできないのではないかと思いました。
テンプレートがすでにあって、それをDR環境用に修正するだけなのであれば、すぐに対応可能と思いますが、
問題文をみる限りでは既存環境でCloudFormationで構築してなさそうなので。。。

考えすぎなのかもしれませんが、どなたかご意見をいただきたいです。

2024/12/05 10:53

既存の環境からテンプレートを作成できるツールがあるみたいです。
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/generate-IaC.html


コメント

H Honda_Wakana

2024/12/05 11:11

ご返信ありがとうございます。 そのようなツールがあるのですね! 実務でも使えそうです。 ありがとうございます!

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?