Ch11. プロビジョニングサービス

AWS上での環境構築を自動化するサービス。各種インスタンスの用意やApachのインストールと設定などを自動化してくれる。

Elastic Beanstalk

定番のWebアプリケーション構成・バッチサーバ構成を雛型としてAWS側が用意しており、その環境をAWS上に素早く導入する仕組み。

言語・実行環境(OS)を設定するだけで、S3との連携・サンプルアプリケーションの構築等まで実施してくれる。 Webコンソールだけでなく、AWS Toolkit for EclipseやEB CLIからも環境の構築を可能としている。

Elastic BeanstalkはCode Deployの様々なデプロイの手段を用意している。種類としてはCodeDeployよりも多い6種類で、それぞれにメリット/デメリットがある。ここではデプロイ方式の種類だけ挙げる。

  • All At Once
  • Rolling
  • Rolling With Additional Batch
  • Immutable
  • edコマンドによるURL swap
  • edコマンドによるRoute 53レイヤ切り替え

OpsWorks

Chefを利用した構成管理サービス。OSより上の構成管理を行う(つまりインスタンスの作成とそのうえで走るOSの設定はユーザーに委ねられる)。

Chefには

  • 【Chef Clientローカル】各インスタンスが自分自身のインスタンスの設定を行うためにChefを導入する
  • 【Chef Server/Client】マスターサーバを用意し、各クライアントがそのマスターサーバのレシピを適用する。またレシピの適用状態を管理するインスタンスが用意される。

【Chef Clientローカル】方式を利用する場合、OpsWorksスタックという仕組みを利用する。下記の概念が出てくる。

  1. スタック - 最上位レイヤ。「開発用スタック」「本番用スタック」「UAT用スタック」などある環境に配置されるインスタンス陣をまとめて指す。

  2. レイヤー - 同じ役割を持つ各インスタンス。「開発用環境のロードバランシングインスタンス陣」は「開発用スタックのロードバランシングレイヤー」となる。EC2インスタンスの起動時にレイヤーを指定することで、レシピが設定される。

  3. レシピ - 各インスタンスに設定される内容。

レイヤーを指定して起動したインスタンスには「OpsWorksエージェント」がインストールされ、自身のインスタンスに対して指定したレイヤーのレシピが適用される。その際のレシピはAWSのマネージドサービスである「OpsWorks」から行われる。

OpsWorks for Chef Automate

マスター/クライアント型の構成をとり、マスターサーバーが保持するレシピ情報を各クライアントに適用する。マスターサーバーで各クライアントのレシピの適用・適用情報の管理を行う方法を【Chef Automate】と呼ぶ。

AWSマネージドサービスとしてChef Automateを利用することを特別に「OpsWorks for Chef Automate」と呼んでいる。マスターサーバーのバックアップやインストール作業などが完全自動で行われる。

更にAWSが用意したマスターサーバー上に各レシピを登録してEC2を起動すると、そのレシピを反映したインスタンスが立ち上がる。更にAuto Scalingにも対応している。

CloudFormation

AWS独自の構成自動化ツール。以下の手順で構成が適用される。

  1. CloudFormationテンプレートを作成する。
  2. テンプレートを適用する。
  3. CloudFormationスタックが作成される。スタックに紐付く形でAWSリソースが作成される。

(Cloud Formation)スタックとは各AWSのリソース(EC2やS3バケットあるいはVPCやIAM)ひとかたまりを指す。テンプレートはこのスタック単位で記述され、テンプレートを変更して再適用すると新しいリソースが作成される。

テンプレートは別リージョンにもそのまま適用でき、(全く同じ構成で)別リージョンのスタックを作成することが出来る。 テンプレートは分割して記述することが出来る(IAMのテンプレート・VPCのテンプレート・DBのテンプレート)。このおかげで、各テンプレートを流用してスタックを作成しやすくなる。

セクション

※テンプレートの具体的な記述方法については執筆中(SAAの問題の中で具体的な記述方法に関して出題された場合は再度復習する。)

ここではテンプレートの書き方について言及する。テンプレートは下記の3つのセクションに分かれる。

  • Resourcesセクション
  • Parametersセクション
  • Mappingsセクション

Resourcesセクション

構築するAWSリソースの設計を記述する。 Type項目で記述するリソース(サービス)を指定する。選択するサービスに応じてProperties節に記述する内容は異なる。例えば、VPCであればネットワークアドレス(CiderBlock)が指定される。RDSであればDBの種類(EngineName)やバージョン(EngineVersion)などを指定する。

AWS resource and property types reference - AWS CloudFormation

Parametersセクション

環境によって変更したいような設定を変数として保持することが出来る。この変数は後述する組み込み関数によって参照される。