【AWS re:Invent 2024レポート】AWS CloudFormationの便利な機能を紹介するワークショップに参加しました。
2025年3月21日 藤崎 真智子 Machiko Fujisaki(詳しく見る)

クラウドソリューション部の藤崎です。インフラエンジニアとしてAWSアーキテクチャへの移行検討、構築などを行っています。
2024年12月2日(月)からラスベガスで開催されていた「AWS re:Invent 2024」に参加しました。
現地で参加したAWS CloudFormationのワークショップについてレポートします。
タイトル:Using AWS CloudFormation to deploy infrastructure with speed & safety(DOP306)
・登壇者:Kevin DeJong, Bhavani Kanneganti

ワークショップのアジェンダはこちらです。

ワークショップで紹介する機能の概要解説
AWS CloudFormationとは、JSONやYAMLで記述したコード(テンプレート)を元に、スタックと呼ばれる形でAWS環境上のリソースを自動生成するInfrastructure as Code(IaC)のサービスです。

このワークショップでは、AWS CloudFormationで安全かつ迅速にシステム構築するための機能や周辺ツールが紹介されました。
・おすすめのエディタ
・Cfn-Lintによる構文解析
・Amazon Q Developerによる生成AIを活用したテンプレートの自動生成
・AWS Application ComposerによるGUIベースでのテンプレート作成
・IaCジェネレーターによる既存リソースのIaC化
・AWS CloudFormation Guardによる安全なリソースのデプロイ
紹介された機能と周辺ツールについての解説
・おすすめのエディタ
AWS CloudFormationテンプレートはJSON/YAMLのどちらかの形式で作成します。
おすすめのエディタとして、Visual Studio CodeとIntelliJ IDEsが紹介されました。
今回のワークショップでは、Amazon EC2インスタンス上でホストされたVisual Studio Code Serverを利用しました。

・Cfn-Lintによる構文解析
Cfn-lintはCloudFormationテンプレートの構文解析ツールです。
Cfn-lintを利用することで構文エラーやスペルミスに気づきやすくなります。
Cfn-lint はVisual Studio Code、IntelliJ IDEなどのエディタに拡張機能を追加して利用できます。

・Amazon Q Developerによる生成AIを活用したテンプレートの自動生成
Amazon Q Developerは生成AIを活用して開発者向けのサポートを行う会話アシスタントサービスです。
AWS CloudFormationの開発支援にも対応しており、テンプレートの自動生成、既存テンプレートからのリソース説明文生成などが可能です。

Amazon Q DeveloperもCfn-lint と同様にVisual Studio Codeなどのエディタに拡張機能として追加できます。
Amazon Q Developerには無料利用枠と有償利用枠(Amazon Q Developer Pro)がありますが、ワークショップでは無料利用枠を選択しました。
エディタにAmazon Qの拡張機能を追加後、AWS IAM Identity CenterやAWS Builder IDでログインすることでAmazon Q Developerを活用した生成AIによるコード生成機能が利用可能となります。

・AWS Application ComposerによるGUIベースでのテンプレート作成
AWS Application Composerはサーバレスアプリケーションの設計と構築をGUIベースで行うツールです。ドラッグアンドドロップによる直感的な操作でAWS CloudFormationやSAMのテンプレートを編集できます。
またVisual Studio Codeなどのエディタに拡張機能としてAWS Toolkitを追加することで、エディタからAWS Application Composerも利用できます。

・IaCジェネレーターによる既存リソースのIaC化
IaCジェネレーターはAWSアカウント内に存在するAWS CloudFormationスタックで管理されていないリソースを検出し、AWS CloudFormationテンプレートやAWS CDKのコードを生成するツールです。
IaCジェネレーターを利用する際、まずAWSアカウント内のリソースを全てスキャンします。スキャン終了後、アカウント内に含まれるリソースや使用中のサービスを確認できます。

スキャンにより検出されたスタック管理されていないリソースの中からAWS CloudFormationテンプレートを生成したいリソースを選択することで、選択したリソースのテンプレートを自動生成します。
自動生成されたAWS CloudFormationテンプレートをインポートすることで、既存リソースをAWS CloudFormationのスタックで管理できます。


・AWS CloudFormation Guardによる安全なリソースのデプロイ
AWS CloudFormation GuardはPolicy as Codeの評価ツールです。
AWS CloudFormation Guardにより事前定義したポリシーをコードとして記述しておくことで、AWS CloudFormationテンプレートをデプロイする前にテンプレートの内容がルールに準拠しているか評価します。
(こちらはワークショップ内ではおまけとして紹介されておりました。筆者は時間の都合上試すことができませんでした。)
ワークショップのスライドでは、AWS CloudFormation GuardでS3バケットのルールを定義しておくことで、ルールに違反するAWS CloudFormationテンプレートのデプロイを阻止する例が紹介されました。


まとめ
re:Invent 2024のレポートとして、AWS CloudFormationの便利な機能を紹介するワークショップの内容を紹介しました。
今回のワークショップではエディタと統合して利用可能な便利機能を多く学ぶことができました。
Amazon Q Developerを初めて体験しましたが、Visual Studio Code等のエディタに拡張機能を追加するだけで利用できるため、想像していたよりも導入が簡単でした。今後はテンプレート作成時の時間短縮や効率化に活用しようと思います。
また自然言語によるテンプレートの作成や修正を依頼することでテンプレート作成の時間短縮ができそうです。さらにテンプレートの内容を解説させることで、テンプレートの内容を理解する助けにもなりそうです。
残念ながら、Amazon Q Developerは現在英語以外の言語に対応していないため、今後のアップデートで日本語でも利用可能になると嬉しいです。
AWS Application Composerについては、作成中のテンプレートをエディタ上に構成図として表示することで、設定もれやエラーチェックの確認に役立ちそうです。
IaCジェネレーターはスタック管理されていない既存リソースの把握に便利そうです。
注意点として、IaCジェネレーターで生成するテンプレートには省略可能なパラメーターも全て記載されます。また、パラメータセクションが無くリソース名やリソースのIDはリソースセクションにハードコードされます。
IaCジェネレーターで生成したテンプレートからスタックにインポートする際は、IaCのベストプラクティスに沿って管理しやすい形にテンプレートを修正すると良さそうです。
ワークショップの最後に、今回実施したワークショップと同じ内容の常設ワークショップURLを教えていただきました。
https://catalog.us-east-1.prod.workshops.aws/workshops/37bb45e2-a385-4c09-a376-39399688a445/en-US
AWS環境を自分で用意する必要がありますが、同じ内容のワークショップを試すことができます。
時間がある時に詳しく試してみたいです。