🎙️

【新機能】AWS Application ComposerがGAになったので触ってみました!

2023/03/12に公開

新サービスがGA!

こんにちわ!

DevelopersIO BASECAMP参加者の加藤です!

先日の事ですがAWS Application ComposerがGAになりました!

昨年のre:Inventにて発表されていたサービスだそうです。
https://dev.classmethod.jp/articles/aws-application-composer/

ドキュメントから引用した概要は以下になります。

AWS Application Composer は、視覚的なキャンバスで AWS のサービスをドラッグ、グループ化、接続することで、デベロッパーがアプリケーションアーキテクチャをより簡単に設計できるようにする視覚的なビルダーです。

今回はこちらを触ってみたいと思います。

先にまとめ

AWS Application Composerは
・複数AWSサービスからサーバーレスアプリを構築するために使用できるビジュアルデザイナー。
・インポート・エクスポートが可能。
・インタラクティブなビルダーを使用し、キャンバス上で設計したアーキテクチャからCloudFormation およびSAM(Serverless Application Model)テンプレートを自動的に作成。
・既存のワークフローへの統合も可能。
・Webアプリがローカルファイルシステムでファイルの「読み取り」・「書き込み」・「保存」を行うことが出来るファイルシステムアクセスAPIをサポートするブラウザーが必要である為、ブラウザにはGoogle ChromeまたはMicrosoft Edgeを使用する事が推奨される。
・「接続モード」と「未接続モード」が存在する。
・接続モードにて[リージョン].console.aws.amazon.comが指定フォルダ内のファイルにアクセス出来るのは「サイトのすべてのタブを閉じるまで」との事。
・現在リソースとして表示されているのは13項目(サービスでいうと10種)

AWS Management Console(マネコン)からデモを体験

接続〜表示まで

サービス検索欄に「Application Composer」と入力します。

最上部表示されたサービスをクリック。

最初に表示される画面になります。デモ動画が格好良くヌルヌル動いています。

現状、左側のメニューカラムにあるのは、
ホームにあたるサービス名とCanvasの二択のようです。


「デモを開く」を選択しました。


・接続モード
・未接続モード
の二種類があるようです。

◉接続済みにチェックが入った状態で「フォルダを選択」をクリックしてみます。

ローカルの任意の場所に任意のフォルダを作成してみました。
(ここではApplication_Composer_Test)
選択をして「開く」をクリックします。

ブラウザ上部に以下のように表示されます。

「ファイルを表示する。」をクリック。

先ほどの画面に戻ってくるとローカルの指定フォルダ名が表示されています。

作成をクリックします。

キャンバス画面が表示されました!


左サイドカラムの操作

画面が表示された段階では左サイドカラムの2つあるタブの内「リソース」が選択された状態になっています。


画面の関係で2列に並べて表示していますが、
現在リソースとして表示されている以下の13項目のようです。
(Step Functionsステートマシンも使えるのですね。)


タブを「リソース」から「リスト」へ移動するとこのように表示されます。

クリックすると以下のキャンバス画面内の対応した項目に移動が出来るようです。

テンプレート画面への切り替え

キャンバス内上部には画面の切り替えスイッチが配置されています。

先ほどまでのキャンバス画面から「テンプレート」画面に変更してみます。

切り替え後の画面です。

「Transform: AWS::Serverless-2016-10-31」(※AWS::Serverless 変換)が宣言されておりSAMテンプレートである事がわかります。


右サイドカラムの操作

最初は開いていませんが、右サイドにもカラムが出現します。

試しにキャンバスにS3をリリースしてみました。


クリックして「詳細」を選択すると右サイドにカラムが現れます。

S3に関してはこのカラムでは論理ID名を含め3項目しか変更出来ないようです。

試しに 先ほどのテンプレート画面で論理ID名を変更してみました。

Bucket→NameChangedBucket


キャンバスに戻ると、

無事に反映されているようです。

これに関しては元々「直観的に作成出来る」=抽象的になっている訳で、
これ以上細かい事を設定したい場合は先ほどの「テンプレート」或いはローカルに生成されたファイルから直接プロパティを編集するようにという事のように思います。


メニュー操作

コンソール画面右上には「メニュー」が設置されています。


  • プロジェクトを開く/作成

    「サポート」内の
  • キャンバスのツアー = クリックしても何も起きませんでした。
    (このデモが「キャンバスのツアー」であるからかもしれません。)
  • デプロイ方法 = こちらへのリンクでした。
  • ドキュメント = こちらへのリンクでした。
  • キーボードショートカット

ローカルフォルダへのファイル生成

ここまで操作してからようやく、先ほど接続したフォルダ内にファイルが生成されている事に気がつきました。

どのタイミングで作成・更新がされるのかは確認出来ませんでしたが、
キャンバス内やテンプレート内に変更が起きたタイミング都度か、数秒・数分おきに更新をしているかになるかと思います。

デモで用意されたリソースが反映されたフォルダ内の階層は以下でした。

root
├ template.yaml
├ README.md
├ samconfig.toml
└ src
  ├ CreateItem
  │ ├ index.json
  │ └ package.json
  ├ GetItem
  │ ├ index.json
  │ └ package.json
  ├ UpdateItem
  │ ├ index.json
  │ └ package.json
  ├ ListItem
  │ ├ index.json
  │ └ package.json
  └ DeleteItem
   ├ index.json
   └ package.json

SAMテンプレートなのでsamconfig.tomlがあるようです。

samconfig.toml

README.md

CreateItem/index.json

CreateItem/pacage.json


一度作成されたファイルは

試しにLambda関数リソースをキャンバスにリリースし詳細を押下します。

ランタイムが「nodejs18.x」になっています。

srcフォルダ内にも「Function」が出来ており

2ファイルが作成されています。


ランタイムを「python3.9」に変更して保存してみます。



新たに2ファイルが増えましたが、元々あったnodejs18.xのファイルが削除される訳ではないようです。


インポート

恐らくここまででローカルフォルダに生成されたファイルを先ほどのメニューでインポートすればキャンバスに同期接続した状態が出来ると思いますのでこちらは割愛して、

「サーバレスでないリソースを含むテンプレート」をインポートしたらどうなるかを見てみます。


フォルダを作成


手持ちのテンプレートをコピーして収めます。


インポート。


既存リソースタイプ以外はアイコンこそ付加しないものの、インポートエラー的なものも起きずに取り込めたようです。

ただしリソースの頭に「読み取り専用リソース」と表示されている事からApplication Composerで編集は難しいものと思われます。

更に、上部に以下メッセージが表示されています。

Many resources detected
The preview has limited support for visualizing large sets of resources. We are expanding this in GA. Please use the Feedback link to share and shape our plan.

「訳:多くのリソースを検出 プレビューでは、大規模なリソースのセットを視覚化するためのサポートが限られています。私たちはGAでこれを拡張しています。私たちの計画を共有し、形成するためにフィードバックリンクを使用してください。」

との事で、テキストリンクをクリックすると

となりました。

おわりに

以上、AWS Application ComposerがGAになったので触ってみた!でした。

触ってみると色々面白い部分がありました。

是非お手隙に試してみてください^^

お読みいただきありがとうございました。

デベキャン

Discussion