はじめに
今回はCloudFormationの基礎の復習をかねて、AWS上にVPCをコードでデプロイしてみました。
CloudFormationの基礎をまとめた記事もございますので、ぜひご参照ください。
今回のゴール
テンプレートを作成する
すべてのAWSリソースの記述法を暗記することは難しいため、公式ドキュメントを参照しながら記述していきます。
(そのままコピペして使えるExamplesもあるため、活用します)
AWSTemplateFormatVersion: "2010-09-09"
# 「AWSTemplateFormatVersion」にはテンプレートのフォーマットバージョンを指定します。
# 必須ではありませんが、将来の互換性を考慮して記述しておくことが推奨されています。
Description: Basic VPC
# 「Description」テンプレートの説明文を記述します。
# 必須ではありませんが、可読性を高めるためにも記述しておくことが推奨されています。
Resources:
myVPC: # このテンプレート上で参照する際の名前タグです
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
Tags:
- Key: Name
Value: test-vpc
# AWSコントロール上で手動で作成した場合の「名前タグ」「IPv4 CIDR」のみを定義しています。
スタックを作成する
AWSコンソールに移動し、
①CloudFormation > スタック に移動します。
②「スタックの作成」タブを開きます。
③新しいリソースを使用(標準)を押します。
①既存のテンプレートを選択を選択します。
②テンプレートファイルのアップロードを選択します。
③作成したテンプレートを開きます。
④次へを押します。
①「スタック名」を入力します。
②次へを押します。
スタックオプションの設定は今回はデフォルトのままで次へを押します。
「確認して作成」画面の内容を確認し、問題なければそのまま送信を押します。
しばらく待つと、スタックの作成が完了しました。
作成されたリソースを確認・比較してみた
比較のために、AWSコントロール上で手動で作成した場合の結果はこちらです。
・「名前タグ」をtest-vpcに設定する
・「IPv4 CIDR」を10.0.0.0/16に設定する
その他はすべてデフォルトのままで作成しました。
そして、今回CloudFormationテンプレートで作成した結果がこちらです。
IDは違うものの、完全に一致しました!
(セキュリティ上モザイクでわかりにくくなってしまい申し訳ありません)
スタックを更新してみた
テンプレートのNameタグを「test-vpc」から「test-vpc2」に変更してみました。
AWSTemplateFormatVersion: "2010-09-09"
# 「AWSTemplateFormatVersion」にはテンプレートのフォーマットバージョンを指定します。
# 必須ではありませんが、将来の互換性を考慮して記述しておくことが推奨されています。
Description: Basic VPC
# 「Description」テンプレートの説明文を記述します。
# 必須ではありませんが、可読性を高めるためにも記述しておくことが推奨されています。
Resources:
myVPC: # このテンプレート上で参照する際の名前タグです
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
Tags:
- Key: Name
Value: test-vpc2
# AWSコントロール上で手動で作成した場合の「名前タグ」「IPv4 CIDR」のみを定義しています。
①再びCloudFormation > スタック に移動します。
②対象のスタックにチェックを入れます。
③「スタックを更新」タブを開きます。
④変更セットを作成を押します。
①標準変更セットを選択します。
②既存のテンプレートを置換を選択します。
③テンプレートファイルのアップロードを選択します。
④編集後のテンプレートをアップロードします。
⑤次へを押します。
「変更セットの詳細」はデフォルトのままで次へを押します。
「変更セットオプションを設定」も今回はデフォルトのままで次へを押します。
「変更セットをレビュー」を確認し、そのまま変更セットを作成を押します。
①「リソースの変更」に表示されているリソースを選択すると、
②変更内容を事前にプレビューすることができます。
(この段階ではまだ変更は実行されていません)
③「置換」項目は、この変更によって既存のリソースを「削除→新規作成」する必要があるかを示しています。
(今回はNameタグの変更のみなので、既存リソースは削除されません)
問題なければ変更セットを実行を押します。
しばらく待つと、変更が反映されていることが確認できました。
スタックを削除する
①CloudFormation > スタック に移動します。
②削除したいスタックを選択します。
③スタックを削除を押します。
①画面の指示に従い入力します。
②スタックを削除を押します。
しばらく待つと、スタックが削除されました。
また、今回作成VPCに紐づくように自動作成された
・ルートテーブル
・ネットワークACL
・セキュリティグループ
も合わせて削除されたことが確認できました。


















