kakakakakku blog

Weekly Tech Blog: Keep on Learning!

CloudFormation の IaC ジェネレーター機能をサクッと試せる「IaC Generator Workshop」

2024年2月にリリースされた AWS CloudFormation の「IaC ジェネレーター機能」を使うとマネジメントコンソール・AWS CLI などを使って作った(作ってしまった)リソースをスキャンして,自動的に AWS CloudFormation テンプレート化 (YAML / JSON) できる❗️もちろんそのまま AWS CloudFormation スタックにリソースをインポートすることもできる.

aws.amazon.com

今までも AWS CloudFormation のインポート機能はあったけど,リソース設定と見比べながら(そしてドリフト機能を活用しながら)テンプレートを書くのはそこそこ大変さがあったと思う.IaC ジェネレーター機能を使う流れは以下のブログにも載っていて,今回紹介するワークショップの内容にも似ている👀

aws.amazon.com

IaC Generator Workshop

この IaC ジェネレーター機能をサクッと試せるワークショップ「IaC Generator Workshop」も公開されていて,試してみた💡

実は2024年2月にワークショップも公開されていて,すぐに試そうと思ったけど,環境セットアップで使うスクリプト infrastructure-script.sh にアクセスすると Access Denied になってしまっていて進めなかった.1ヶ月ほど定期的に確認しても直ってなくて諦めていたけど,最近確認したら修正されていたので,改めてワークショップの内容を確認しておくことにした.

catalog.workshops.aws

ワークショップの内容としては,Amazon VPC 関連リソースと Amazon EC2 インスタンスをスクリプト (AWS CLI) で作って,リソースを AWS CloudFormation の「IaC ジェネレーター機能」でテンプレート化する.以下はスクリプトを実行したときに出力されたリソース情報一覧(既に削除済).

These are the resources created, you will need these ids later in the workshop.
Key Pair:  iacgenerator
VPC ID: vpc-00e0e3957e53ef021
Subnet ID: subnet-05a5cc381ac3dcce6
Internet Gateway ID: igw-0e98de8f97252af56
Route Table ID: rtb-0cff1f90fa8f83671
Security Group ID: sg-0c5db16219d23efd4
Instance ID: i-0c543696db799acf8

そして IaC ジェネレーター機能では,選択したリソースに関連するリソースも自動的に含めることができる.今回のワークショップだと AWS::EC2::NetworkAclAWS::EC2::SubnetNetworkAclAssociation などは「関連リソース」に含まれていた.

IaC Generator Workshop: テンプレート化

ちなみにテンプレート化したときに「リソース警告」も出ていた.AWS::EC2::InstanceAWS::EC2::Subnet など IaC ジェネレーター機能でサポートしてるリソースでもプロパティレベルでサポート対象外になっていることもありそうだった.このあたりは影響が出るかどうか確認しつつ,必要ならテンプレートを編集してからインポートすることもできる👌

docs.aws.amazon.com

IaC Generator Workshop: リソース警告

そして,最後はテンプレートをそのまま AWS CloudFormation スタックにインポートする.ちなみに今回のワークショップではテンプレート化するときに DeletionPolicy: Delete を指定するようになっているため,ワークショップ終了後のお掃除はインポートしたスタックを削除すれば良いという流れになっていた(ちなみに僕の環境だと一部の VPC リソースが削除失敗になってしまった💨).

IaC Generator Workshop: リソースをインポート

まとめ

もしまだ AWS CloudFormation の IaC ジェネレーター機能を試してなくて気になっていれば,1時間以内でサクッと終わるワークショップ「IaC Generator Workshop」がおすすめ❗️

関連ドキュメント

docs.aws.amazon.com