- CloudFormationで使われる用語を理解する
- CloudFormationの構成を理解する
- 出来るだけaws-cliのコマンドを実行していく
前提条件#
- aws-cliがインストール済み
- AWSのaccess key発行済
- access keyを環境変数に設定済み
- CFn実行にS3にテンプレートが保存される動作は割愛する
- stack-nameが違っていても気にしない。ブログ記述時の試行錯誤によるもの。
テンプレート#
CloudFormation(以後、CFn)では、リソースを記述するファイルをCFnテンプレート
を呼ぶ。
CFnテンプレートの記法は、JSON
or YAML
。
1
2
3
4
5
6
7
| AWSTemplateFormatVersion: 2010-09-09
Description: Create coco's vpc
Resources:
CocoFirstVPC:
Type: 'AWS::EC2::VPC'
Properties:
CidrBlock: 10.10.0.0/16
|
スタック#
関連リソースを管理するための単一ユニットをスタック
という。
スタックを作成、更新、削除することでリソースのコレクションを作成、更新、削除する。
スタック内の全てのリソースはCFnテンプレートで定義される。
スタック作成時にパラメータを指定することで、インスタンスタイプなどをスタック作成時に指定できる。
ひとまず、ここまでで一度CFnをaws-cliから実行してみる。
1
2
3
4
5
| # stack作成
(*'-') <<< aws cloudformation create-stack --stack-name coco-vpc --template-body file://./example.yaml
{
"StackId": "arn:aws:cloudformation:ap-northeast-1:012345678901:stack/coco-vpc/4a6f6260-3f09-11e9-a59f-066cec78e1f8"
}
|
1
2
| # stack削除
(*'-') <<< aws cloudformation delete-stack --stack-name coco-vpc
|
CFnテンプレートから簡単なスタック作成/削除ができた。
変更セット#
スタックで実行中のリソースに変更を加える場合、スタックを更新する。
リソースに変更を加える前に変更案の概要となるのがchangeset(変更セット)
。
ここでは、前述で作成したVPCに対して、tag:Name
としてcoco-vpcを与える。
CFnテンプレートにtagを追加する記述を追加
1
2
3
4
5
6
7
8
9
10
11
12
13
| AWSTemplateFormatVersion: 2010-09-09
Description: Create coco's vpc
Resources:
CocoFirstVPC:
Type: 'AWS::EC2::VPC'
Properties:
CidrBlock: 10.10.0.0/16
# START changeset target
Tags:
-
Key: Name
Value: coco-vpc
# END changeset target
|
変更したCFnテンプレートを用いて、changesetを作成。その後、changesetの確認と適用を行う。
1
2
3
4
5
6
| # changeset作成
(*'-') <<< aws cloudformation create-change-set --stack-name coco-vpc --change-set-name first-changeset --template-body file://./example.yaml
{
"Id": "arn:aws:cloudformation:ap-northeast-1:012345678901:changeSet/first-changeset/8c6d9520-df98-4fae-b00c-28c0267703fc",
"StackId": "arn:aws:cloudformation:ap-northeast-1:012345678901:stack/coco-vpc/4a6f6260-3f09-11e9-a59f-066cec78e1f8"
}
|
1
2
| # changeset適用
(*'-') <<< aws cloudformation execute-change-set --stack-name coco-vpc --change-set-name first-changeset
|
以上が、CFnの用語説明とaws-cliからのstack操作/changeset操作の基本的な使い方になる。
まとめ#
Terraformとの比較
CloudFormation | Terraform |
---|
CFnテンプレート | tfファイル |
stack | module(?) |
parameter | var |
changeset作成 | terraform plan –out のfile |
changeset適用 | terraform apply |