助け合いフォーラム
効率よく環境構築を行うにはどのAWSサービスを利用するのがよいか。
正解
AWS CloudFormation
解説
「テンプレート」と呼ばれる設計書にどのAWSリソースをどのように利用するかを記述すると、CloudFormationはテンプレートに書かれた通りにAWSリソースをプロビジョニングします。
![<img src="/mondai3/img/jpg/k58489.jpg">](https://ping-t-resouces.com/uploads/question_image/file/22909/k58489.jpg)
同じ操作を何度も行う場合や、似たような環境を複数構築したいような場合に利用することができます。
WordPressとはWebページやブログを作成するオープンソースのソフトウェアです。WordPressを動作させるには、Webサーバーアプリケーション(Apache、Nginx)やデータベース(RDS)、プログラミング言語(PHP)などが必要です。
本設問ではこれらを整備した環境を部署ごとに個別に、つまり同じ環境を複数作成する必要があるため、CloudFormationを利用するのが効率的です。
以上より正解は
・AWS CloudFormation
です。
なお、CloudFormationではWordPressの動作環境をサンプルテンプレートとして公開しています。
・スケーラブルで耐久性の高い WordPress
その他の選択肢については以下の通りです。
・AWS Auto Scaling
AWSリソースを自動的にスケーリングするサービスです。
環境構築はできないので、誤りです。
・AWS Elastic Beanstalk
アプリケーションのデプロイ(動作環境への展開)を行うための定番環境を自動で構築するサービスです。
定番の環境を選択して構築するので、独自のシステムを構築するようなケースには適していないので、誤りです。
・AWS CloudWatch Logs
AWSサービスやEC2インスタンスのOSやアプリケーションのログを収集し、一元管理するサービスなので誤りです。
参考
AWS CloudFormationはAWSクラウド上での環境構築を自動で行うサービスの1つです。自動的に構築を行うサービスとしては他に「Elastic Beanstalk」などがあります。
![<img src="/mondai3/img/jpg/kkk58470.jpg">](https://ping-t-resouces.com/uploads/question_image/file/22907/kkk58470.jpg)
CloudFormationではElastic Beanstalkより多くのAWSサービスに対応しており柔軟な構成を組むことができますが、その分各AWSサービスやロードバランサーなどのインフラストラクチャ(基盤)技術についての知識も必要です。
※JSON、YAMLとは、どちらもテキスト形式のデータ定義言語です。記述方式に差異はありますが、いずれも人間が記述しやすく、また読みやすい形式の言語です。
![【図を表示3】](https://ping-t-resouces.com/uploads/question_image/file/22910/kkk58489.jpg)
CloudFormationはいわゆるIaC(Infrastructure as Code)です。IaCとは、仮想化されたサーバーやデータベース、ネットワーク構成などの環境をコード(コンピュータが処理可能な形式)で定義し、それを実行することによって再現(構築)するという技術をいいます。IaCのメリットには、例えば以下のようなものがあります。
・同じ作業を別の人間が実施できる
・同じ、または似た構成の環境を何度も作成できる
・環境がコード化されていることにより、リソース量やパラメータなど環境の変更管理が容易になる
CloudFormationではほぼすべてのAWSリソースをコード化することができます。EC2やELBなどサーバー環境の構築だけでなくAmazon CloudWatchなど運用支援のサービスも含まれているため、CloudFormationを利用することで構築および運用を自動化することができます。
●テンプレートとスタック
以下はCloudFormationの利用イメージです。
![【図を表示】](https://ping-t-resouces.com/uploads/question_image/file/22909/k58489.jpg)
CloudFormationを利用し始めるには、ユーザーはまず「テンプレート」というコードを作成します。テンプレートはJSONまたはYAML形式で書かれたコードです。テンプレートは、例えばEC2インスタンスのインスタンスタイプやRDBのパラメータの定義など、AWSリソースをどのように利用するか、という設計図にあたります。
テンプレートを作成した後は、CloudFormationに読み込ませることによりAWSリソースがプロビジョニング(構築)されます。このときAWSリソースは「スタック」という単位で管理されます。
例えばWebアプリケーションをリリースしたい場合、CloudFormationのテンプレートにはEC2インスタンスやS3など必要なAWSリソースを定義し、プロビジョニングします。Webアプリケーションが不要になった場合、(一つ一つのAWSリソースではなく)プロビジョニングしたスタックをすべて削除することで、Webアプリケーションとして利用していたリソースを削除することができます。
スタックは1つのテンプレートから複数作成することもできます。またスタックを削除した場合も、テンプレートからもう一度同じスタックを作成することも可能です。
なお、上例では複数のAWSリソースを定義していますが、VPCだけ、EC2インスタンスだけ、といったプロビジョニングも可能です。
テンプレートは自分で作成することも可能ですが、AWSによって配布されているサンプルを利用したり、マネジメントコンソールからGUIで作成することもできます。
![【図を表示2】](https://ping-t-resouces.com/uploads/question_image/file/22911/kk58489.jpg)
●サービスロール
サービスロールは、CloudFormationに対して、ユーザーの代わりにスタック内のリソースを操作する許可を与えるためのIAMロールで、スタックの定義時に指定することができます。
サービスロールを指定すると、CloudFormationはスタックで実行されるすべての操作にこのロールの権限を使用します。これにより、ユーザーが直接各リソースに対するアクセス権限を持っていなくても、AWSリソースのプロビジョニングを行うことができます。
●スタックセット
AWS CloudFormationで作成したテンプレートを基に、複数のAWSアカウントで、または複数のリージョンでスタックを構築したい場合には「スタックセット(StackSets)」を利用します。管理者アカウントで作成したテンプレートを利用して、ターゲットアカウント(プロビジョニングを行うアカウント)とプロビジョニングを行うリージョンを指定することで、一度の操作で複数の同じ環境を構築できます。
テスト環境を複数構築したい場合や、新たにアカウントを払い出す際に下準備となる操作(IAMやセキュリティグループの設定など)をスタックセットとして作成しておく、といった利用ができます。
【AWS Service Catalog】
AWS Service Catalogは、主にCloudFormationテンプレートを製品として登録し、他のAWSユーザーへ共有できるサービスです。共有先のAWSユーザーは、セルフサービスで製品からAWS環境をデプロイ(構築)できます。製品の管理者は、製品のバージョンや、製品がいつ・誰に使用されたかを一元的に管理できるので、共有するAWS環境の一貫性とコンプライアンスを維持できます。
![<img src="/mondai3/img/jpg/k64007.jpg">](https://ping-t-resouces.com/uploads/question_image/file/25527/k64007.jpg)
例えば、システム管理者が構築したAWS環境をService Catalogに登録してアプリケーション開発者に共有することで、アプリケーション開発者は容易に自身のAWSアカウント内に開発環境をデプロイできます。また、システム管理者は共有したAWS環境のバージョンや使用履歴を一元管理できます。
Cloud formationとElastic Beanstalkがどうしてもわからない
どの解説を読んでもCloud formationとElastic Beanstalkの違いがどうしても理解できないです。
Cloud formationは、リソースを構築できるサービスで
Elastic Beanstalk はインフラ環境をの構築できるサービスであると認識しております。
今回の設問は、WordPress環境を部署ごとに用意するためのサービスを聞かれていますが、なぜElastic Beanstalkが不正解なのか理由を教えていただきたいです。
AWS初心者のためなかなか理解できず、、
ぜひ回答よろしくお願いいたします。
CloudFormationとElastic BeanstalkはどちらもAWS環境を自動的に構築できるサービスですが、それぞれ下記のような特徴があります。
CloudFormation
・インフラ環境をコード化して各AWSリソースを構築する
・コードの書き換えによって、細かいカスタマイズが可能
・複数の環境をまとめて管理できる
Elastic Beanstalk
・基本的にAWSが用意したインフラ環境の中から選択する
・CloudFormationよりも容易に構築が可能な分、柔軟なカスタマイズはできない
・インフラの専門的知識を持たない人でも、AWS環境の構築が可能
設問の「この環境は企業の部署ごとに個別に用意する必要がある」ことから、WordPress環境を部署ごとにカスタマイズする要件があることが分かります。
Elastic Beanstalkは前述のとおり、AWSが容易したインフラ環境の中から選択するので、部署ごとの細かいカスタマイズしたい要件には適していません。
一方、CloudFormationでは部署全体の共通コードを作成し、部署ごとに異なる部分のみコードを書き換えるだけで対応できます。
各サービスの作成画面だけでも触ってみると理解が深まると思います。
最後のデプロイさえしなければ料金もかからないので。
コメント
この投稿に対して返信しませんか?