ディーメイクAdvent Calendar 2023 12/18の記事です。
こんにちは、mori です。
先日、「AWS re:Invent 2023 ランチタイムおさらい会!(by JAWS-UG有志)」にご飯食べながら参加しました。
そこで「AWS Application Composer in VS Code」アップデートが紹介されていました。
AWS Application Composer 用の統合開発環境 (IDE) の拡張機能の紹介
- AWS Toolkitとして、VS Code上でApplication Composerが使えるようになりました
- Cloudformationのサポートリソースが1000以上になりました(アップデート前には13リソースだったらしい)
- 生成AIによるレコメンデーションもできる
これらが今回のアップデート内容のようです。
Cloudformationの1000以上のリソースをサポートと聞くと、ほぼなんでもできそうな気がしてきますね。気になりましたので、試してみました。
AWS Application Composerとは
マネージコンソール上のキャンバスを使って、AWSアイコンをドラック&ドロップ等の操作で、AWS構成図をビジュアル作成でき、また、作成した構成のCloudformationやSAMのテンプレートを出力することができる機能となります。

AWS Application Composer in VS Code
このAWS Application ComposerがVS Code上でできるようになったということで早速やってみたいと思います。
インストール方法について
VS Codeの拡張機能から「Application Composer」を検索し、「AWS Toolkit」をインストールします。

以上で、インストール作業は完了でございます。
やってみよう!AWS Application Composer in VS Codeを使ってみる
はじめ方も、非常に簡単です。
まず、空のyamlファイルを用意し、VS Codeのエクスプローラからファイルを選択し、右クリックのメニューの中から「Open with Application Composer」を選択します。これだけで利用できます。


VS Code上にApplication Composerが起動できました。
それでは、詳しく見ていこうと思います。
操作した感じは、マネージメントコンソールと大差ありません。同じようなGUI操作で利用することが可能でした。
VS Codeならではというか、Application Composerとエディタで2画面構成などもできます。
Application Composerで編集した内容を保存したタイミングで、即座に反映されます。
実際のCloudformation定義を確認しながら操作できるのはいいですね。

左のリソース一覧になりますが、扱えるリソースは「拡張コンポーネント」と「標準IaCリソース」に分かれています。
拡張コンポーネントの方は、リソースとリソースを線でつないだり、リソースプロパティもそのリソースごとに適したパラメータを入力できるようになっています。
SAMに対応していると思われ、リソース群もサーバレス関連のものが中心となっています。

一方で、標準IaCリソースの方は、Cloudformationを作成するためのリソース群になるようで、リソースプロパティも汎用的な作りなっています。リソースリファレンスから直接ドキュメントにもアクセスできます。

拡張コンポーネントの方はもともとあった機能かと思いますので、1000以上ある標準IaCリソースが今回のアップデート部分になるかと思います。
標準IaCリソースの方はもう一つの生成AIの機能も組み合わせることで使うことができますので、さっそく試してみます。
上の画像の「提案を生成」をクリックしてみます。
※生成AIによるレコメンデーションを利用するには、AWS Builder IDを登録が必要となります。
また、マネージメントコンソールからはできないようで、VS Codeからのみ実行できます。

生成には少し時間がかかるようですが、生成AIによるレコメンデーションされた定義が生成されました。「選択」を押して、プロパティの「保存」をすることでyamlファイルにも反映されました。もちろん、気に入らなければ「再生成」をクリックすることでまた別のテンプレートが提示されます。
今回、自動生成された部分はこんな感じでした。Ref
や GetAtt
などの呼び出し元がないので、残念ながらそのまま利用するのはできなそうです。
DBCluster:
Type: AWS::RDS::DBCluster
Properties:
Engine: aurora
MasterUsername: !If
- UseCustomMasterUserPassword
- !GetAtt DBClusterSecret.username
- !Ref DBClusterMasterUsername
MasterUserPassword: !If
- UseCustomMasterUserPassword
- !GetAtt DBClusterSecret.password
- !Ref DBClusterMasterPassword
DBClusterIdentifier: !Ref DBClusterIdentifier
DBSubnetGroupName: !Ref DBSubnetGroup
VpcSecurityGroupIds:
- !Ref DBClusterSecurityGroup
StorageEncrypted: true
KmsKeyId: !Ref DBClusterKmsKey
所感
生成AIによって生成されるテンプレートは、率直に言って、基本的にはサンプルの域を出ませんでした。周囲のリソースとの連動や定義の補完が期待されましたが、残念ながら単体のリソースとしてのレコメンデーションにとどまっています。
一方で、AWS Application Composerにおける最大の利点は、リソースを視覚的に把握できることです。セキュリティグループやルーティングテーブルなど、同様の定義も見やすくなり、具体的な修正や設定の見落としに対処しやすくなりました。CloudFormationのリソースを可視化し、作成・修正できる機能は非常に便利だと感じました。
さらに、キャンバスとYAMLファイルが同期していることが挙げられます。キャンバスを更新して保存すればファイルにも即座に反映され、逆にファイルを更新すればキャンバスにも即時に反映される仕組みが、ほぼリアルタイムでの更新確認を可能にしています。なお、複雑なCloudFormationでなければ、既存で利用しているCFnのテンプレートをリバースしてキャンバス上で可視化することも可能でした。
総じて、使い方次第ではCloudFormationを作成・更新するための非常に強力なツールになり得ると感じました。