こんにちわ。プロフェッショナルサービス事業部の小松です。
前回、IaCジェネレータのリソース検出についてアップデートをお届けしましたが、同じ記事内ではApplication Composerについてのアップデートも紹介されていました。
https://aws.amazon.com/jp/about-aws/whats-new/2024/08/cloudformation-resource-discovery-template-review-iac-generator/
AWS Application Composer は re:Invent2022 で発表されたサービスで、サーバレスアプリケーションを視覚的に設計および構築するローコードツールになります。
Application Composerが日本GAになった際の過去の記事はこちら
今回は、実際にApplication Composerでのリソースの取り込みについて動作を見ていきたいと思います!
事前準備
まずは、リソース検出対象とする簡単なFargate上で動作するWebアプリケーションをデプロイしておきます。また、ECSは手動でクラスターやサービスを作ると、CloudFormationスタックを自動的に作成してくれるため、DeletionPolicyをRetainに設定して、CloudFormationの管理から切り離しておきます。

取り込むためのいつものサンプルアプリをデプロイしておきます。

ちょっと見た目をリッチにするためにALBを添えて
ジェネレーターからの取り込み
事前準備が終わったら、IaCジェネレータからリソースをスキャンして実際にテンプレートを作っていきましょう。

まずはIaCジェネレータで再スキャンを実施

取り込む対象がスキャンされたことを確認。

テンプレートの作成をしていきます。

とりあえず、テンプレートの名前だけ入力して

さっき作成したECSクラスターをとりあえず選択してみましょう。

すると、次の画面では該当のクラスターに関連するリソースがすべてリストアップされてきます。
VPCやサブネットなどのネットワーク周りから、タスク実行ロールなどのIAMリソースまで拾ってくれました。
ここで意外だったのが、TargetGroupまでは関連として対象Resourceに含まれたものの、ALBまでは含まれてくれませんでした。

次の画面では内容を確認してテンプレートを作成していきます。

だいぶ長々としたテンプレートが作成されました。ちょっと手を加えたくなる感じですね。一部のサポートされていないプロパティがある旨の警告が表示されていました。いったんここでは無視してキャンバスの方を見ていきましょう。

いいですね。インポートしたいリソースと関連リソースがグラフィカルに表示されています。では、実際にこれらのリソースをスタックにインポートしてみましょう。


リソースのインポートを押してしばらく待つと、無事にスタックインポートが完了しました!


実際にインポートしてみて
これまでIaCでリソース管理をしてこなかった環境で一気にIaC化を進めるために使うのではなく、IaCで構築しなかった一部のリソースをスタックに取り込むときには使えそう…というのが感想となりました。
また、インポートしてほしくないリソースはちゃんと除外してインポートしないと、あとあとで面倒なことが起こるということも実感できています。(VPCとかSubnetとか…)
お気づきになりましたでしょうか。
AWS Application Composerが登場したのは本当に一瞬でしたね…。IaCジェネレータからシームレスに連携できるようになった、ということかと思います。
IaCでのリソース管理は最初のハードルは多少高く感じるかもしれませんが、運用していく中では大きなメリットがいっぱいあります。このようなツールを駆使して是非ともチャレンジしてみてください!