■CloudFormation
ネットワークをテンプレートで管理できる
同一ネットワークの再現が容易になり、gitなどで変更履歴を管理することもできるようになる
■ネットワークの構築(aws_cloudformation/test/vpc_only.template にテンプレートの例がある)
CloudFormation → スタックの作成
ステップ1 テンプレートの指定
テンプレートの準備
テンプレートの準備完了
テンプレートの選択
テンプレートファイルのアップロード → テンプレートファイルを選択
ステップ2 スタックの詳細の指定
スタックの名前
SampleVPC
ステップ3 スタックオプションの設定
削除保護
有効(必要なら)
※その他必要に応じて設定
ステップ4 確認
内容を確認して「スタックの作成」をクリック
エラーがなければ1分程度で構築が完了し、Statusが「CREATE_IN_PROGRESS」から「CREATE_COMPLETE」に変わる
その後VPCなどを確認すると反映されていることを確認できる
■ネットワークの変更(aws_cloudformation/test/vpc_network.template にテンプレートの例がある)
CloudFormation → スタックを選択 → アクション → スタックの更新
編集したテンプレートを選択すると、その変更分が反映される
エラーがなければ1分程度で構築が完了し、Statusが「UPDATE_IN_PROGRESS」から「UPDATE_COMPLETE」に変わる
その後VPCなどを確認すると反映されていることを確認できる
■ネットワークの削除
CloudFormation → スタックを選択 → アクション → スタックの削除
そのスタックで作成されたリソースはすべて削除されるので注意
例えばスタックにEIPが含まれていた場合、スタックを削除して作りなおすとIPアドレスが変わってしまう
SSHの接続先やメール送信制限解除申請など、諸々の作業もやり直す必要があるので注意
スタックの削除時「スタックを削除すると、すべてのスタックリソースが削除されます。」と表示されているが、
スタックの削除中にエラーになって止まった?
「関連する○○がある」という旨のエラーでどうしても削除できない場合、手動でVPCを削除すると大丈夫のことがある
■インスタンスの起動(aws_cloudformation/instance.template)
vpc_network.template でVPCを構築
その後 instance.template でインスタンスを作成
SSHで接続
インスタンスに手動でEIPを設定
22番ポートを開放したセキュリティグループを作成して割り当て
自動作成されたルートテーブルを調整
送信先 : 0.0.0.0/0
ターゲット : 自動作成されたインターネットゲートウェイ
SSHで接続を確認
HTTPで接続
セキュリティグループを調整して80番ポートを開放
SSHで接続し、rootのパスワードを設定&Apacheをインストール
HTTPで接続を確認
※EIPやセキュリティグループの調整などもテンプレートで管理できる…はず。要勉強
※UserDataでApache自動インストール(aws_cloudformation/instance_httpd.template)は何故か反応せず…。要勉強
■変更の検出
CloudFormationで構築した後に手動で行った変更を、検出できるようになったとのこと
ただし解説を読むかぎり、まだ検出できない内容もあるみたいなので注意
またサブネットを削除すると、そのサブネットに属するEC2なども削除されるかも。気軽に変更を行うのはリスクがありそうなので注意
AWS CloudFormationで手動で行った変更が検出可能になりました!!! | DevelopersIO
https://dev.classmethod.jp/cloud/aws/cloudformation-support-drift-detection/
CloudFormation → スタックを選択 → アクション → ドリフトの検出
手動で変更した内容を検出できる
コードになおすとどうなるのかも表示してくれるので、それをもとにテンプレートを調整できる
■注意
コンソールでできるすべての操作が、CloudFormationに対応しているとは限らないので注意
また、更新をすべてCloudFormationで管理すると手間が増える可能性があるので注意
「初期構築にCloudFormationを使用し、以降の更新はコンソールから手動で行う」のような手法も検討するといい
【AWS】CloudFormationの作成ノウハウをまとめた社内向け資料を公開してみる | DevelopersIO
https://dev.classmethod.jp/cloud/aws/cloudformation-knowhow/
【CloudFormation入門1】5分と6行で始めるAWS CloudFormationテンプレートによるインフラ構築 | DevelopersIO
https://dev.classmethod.jp/cloud/aws/cloudformation-beginner01/
■基本的なネットワークの作成
aws_cloudformation/create_vpc.yaml
で基本的なネットワークを作成できる
■メモ
【AWS初学者向け・図解】CloudFormationの組み込み関数を現役エンジニアがわかりやすく解説? | エンジニア女子の生態ログ
https://o2mamiblog.com/aws-cloudformation-intrinsic-function-beginner-1/