まえがき
AWS Cloudformationを初めて使用した際のメモを整理し、Cloudformationはめんどくさそうという意識のハードルを下げる内容にまとめました。
AWS Cloudformationの説明
AWSリソースの構築を自動化するサービス。
リソース情報を記載したJSONかYAMLのフォーマットをテンプレートとし、それを読み込ませることで自動的な構築が可能。
Cloudformation自体は無料。構築したリソース自体の料金は別途発生します。
テンプレートから同じ環境を再構成できるのでリソースの構築が簡単です。
同様にリソースの削除も容易にできます。
とりあえず試してみる
テンプレートの準備
-
AWSドキュメントのCloudFormationユーザーガイド > テンプレートリファレンス> AWS Identity and Access Management > AWS::IAM::User にあるIAMユーザーを作成するテンプレートを参考に作成していきます。
-
テンプレートのフォーマットはYAMLの方が馴染みがあるので、YAMLで作成します。
iam_user_create_001.yaml
Resources: MyIAMUser: Type: 'AWS::IAM::User' Properties: UserName: '{my-iam-user}'
-
UserNameの{my-iam-user}には任意の名前を記載するようにします。
とりあえず作成するなら上記の情報だけで良さそうです。
(AWS CloudFormation テンプレートバージョン、Descriptionなど無くても動くものはひとまず無視します。)
Cloudformationの実行
-
AWSのサービスメニューからCloudformationを選択します。
-
スタックの作成ボタンからスタックの作成画面に遷移し、各ステップで操作を行います。
なお、スタックはテンプレートから作成された環境群を意味します。 -
ステップ 4:レビューで最終確認をします。送信を押下すると作成が始まります。
(IAMのリソースを作成するにあたり承認が求められます。内容を承認して送信します。)
Cloudformationの完了
-
作成に失敗した場合は以下の状態になります。
IAMユーザーの確認
パラメータを使ってテンプレートに汎用性を持たせる
とりあえずIAMユーザーを作成することが出来ました。
ですが、先ほどのテンプレートでは、ユーザーを作成する度にテンプレート内のユーザー名の変更が発生します。
そこでCloudformationの実行準備時に設定できるパラメータをテンプレートに記載することで、IAMユーザー作成テンプレートに汎用性を持たせます。
テンプレートセクション
- テンプレートは1つ以上のセクションで構成されます。セクションで唯一必須なのが先ほどのテンプレートにも記載した
Resources:
です。 -
Parameters:
はCloudformation実行時 (スタックを作成または更新するとき) にテンプレートに渡す値です。
パラメータを使ったテンプレートの準備
-
先ほどのIAMユーザー作成のテンプレートにパラメータを追加して、ユーザー名を指定してIAMユーザーを作成できるようにします。
-
パラメータの詳細についてはAWSドキュメントのCloudFormationユーザーガイド > テンプレートの操作内 > テンプレートの構造分析 > パラメータ を参照してください。
iam_user_create_002.yaml
Parameters: # パラメータ名がUserNameParameter データ型がString UserNameParameter: Type: String Resources: MyIAMUser: Type: 'AWS::IAM::User' Properties: # !RefでパラメータのUserNameParameterを参照 UserName: !Ref UserNameParameter
Cloudformationの実行
- ファイルのアップロードまでは先ほどと同じです。
- ステップ 2:パラメータの入力欄「UserNameParameter」が確認できました。ここに任意のユーザー名を記入します。
- そのあとの作成も先ほどと同じです。
Cloudformationの完了
IAMユーザーの確認
作成したリソースの削除
- 冒頭に説明した通りリソースの削除は容易に行えます。
リソース削除の実行
IAMユーザーの確認
あとがき
ただ単にIAMユーザーをCloudformationで構築する方法をまとめました。
今回Qiita初投稿になりましたが記事を書くことの難しさを痛感しました。