#エピソード1〜AWS CloudFormationとは〜
業務でCloudFormationを触ることがあったため、そこで得たものをまとめていきます。
AWS CloudFormationとは
AWSのリファレンスは、以下のように記述されており、要は「設定さえ用意しておけば、いつでもリソースを構築でき、設定ファイルとして管理することが可能」というサービスです。
AWS CloudFormation では、Infrastructure as Code を実現することにより、AWS やサードパーティーの関連するリソースのコレクションをモデリングし、迅速に一貫してプロビジョニングし、ライフサイクル全体で管理することが容易になります。必要なリソースとその依存関係を CloudFormation テンプレートに記述すれば、1 つのスタックとして一括で起動し、設定できます。必要なときにはいつでもテンプレートを使用し、スタック全体を 1 つのユニットとして作成、更新、削除できます
引用:https://aws.amazon.com/jp/cloudformation/
必要なもの
CloudFormation用のロール
後述しますが、CloudFormationを使用してリソースを構築する場合、各リソースを作成するためのロールを選択する必要があります。
ロールを作成する際に、以下を指定する必要があります。
- ユースケースの選択時に
CloudFormation
を選択 - 構築するリソースに対するアクセス権限(ポリシー)を付与
CloudFormationテンプレート
テンプレートは、事前に用意してもよいですし、CloudFormationの機能であるデザイナーを利用して作成することも可能です。
テンプレートはJSON
形式かYAML
形式で記載することができます。
補足
デザイナーを使用するにしろ、自前でテンプレートを用意するにしろ、各リソースを作成するには様々な設定値(プロパティ)があり、それらを設定する必要があります。(例: S3のバケット名)
以下のページに各リソースごとのプロパティがまとまっています。
注意して欲しいのが、現在(2021/09)時点で日本語のドキュメントがありません。頑張って英語のドキュメントを読みましょう。
そして、言語を日本語
に設定していますとサイドバーにページ階層が表示されません。
ブラウザにて「ColudFormation
S3
」のような検索をすれば該当のページが表示されます。
使用方法
用語
- スタック
-
CloudFormationサービスにおけるリソースの単位。
スタックは、単一のユニットとして管理できる AWS リソースのコレクションです。
引用: https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/stacks.html
-
前提条件
今回はサンプルとして、S3バケットを構築します。以下のテンプレートを使用します。
デザイナーは使用しないため、ファイルとして用意しておいてください
AWSTemplateFormatVersion: 2010-09-09
Resources:
# https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html
S3BucketForRedirect:
Type: AWS::S3::Bucket
Properties:
BucketName: <バケット名>
※バケット名は各自で変更してください。
CloudFromation用のロールにはS3バケットを作成するための権限を付与してください。
操作しているリージョンにスタック及び、リソースが作成されるので、作成したいリージョンを選択してください。
実際に操作してみる
事前にテンプレートファイルを用意し、ローカル環境からアップロードする手順を紹介します。
また必要な項目以外は全てデフォルトの値を使用します。
スタックの作成
大項目 | 小項目 | 設定値 | 備考 |
---|---|---|---|
テンプレートの準備 | テンプレートの準備 | テンプレートの準備完了 | |
テンプレートの指定 | テンプレートソース | テンプレートファイルのアップロード | |
テンプレートファイルのアップロード | create_s3.yml | 上記にて作成したファイルを選択 |
スタックの詳細を指定
大項目 | 小項目 | 設定値 | 備考 |
---|---|---|---|
スタックの名前 | スタックの名前 | testforstudy | 同一リージョン内のスタックにて一意 |
スタックオプションの設定
大項目 | 中項目 | 小項目 | 設定値 | 備考 |
---|---|---|---|---|
アクセス許可 | IAMロール-オプション | 第1項目 | IAMロール名 | ロールの指定方法を選択 |
第2項目 | MyStudyCloudFormationRole | CloudFormation用のロールを選択 |
レビュー
各項目を確認します。
完成
このように「CREATE_COMPLETE
」となれば、完成です。
失敗した場合、イベントタブにエラー内容が表示されるため、それにしたがって修正を加えてください。
使用してみた感想
- テンプレートファイルを作成してしまえば、いくらでもリソースを構築が可能なのでとても便利。
- テンプレートファイルを用意するのが手間。
- AWSコンソールにて使用している値との紐付けが手間。