AWS Application Composerで簡単サーバレス構築

# AWS Application Composer とは?
2022/12/2[re:Invent](https://reinvent.awsevents.com/)で発表されたプレビュー版サービス
AWSのサービスをキャンバス上にドラッグ＆ドロップし、接続していくことで容易にサーバレスアプリケーションの開発が可能で構成図作成、テンプレートを生成することが可能。既存のテンプレートを読み込みすることも可能

#### 2022/12/12現在の対応リージョン・サービス

##### 対応リージョン
* us-east-1
* us-east-2
* us-west-2
* ap-northeast-1
* eu-central-1
* eu-west-1

#### 対応サービス
* API Gateway
* Cognito UserPool
* Cognito UserPoolClient
* DynamoDB Table
* EventBridge Event Rule
* EventBridge Schedule
* Kinesis Stream
* Lambda Function
* Lambda Layer
* S3 Bucket
* SNS Topic
* SQS Queue
* Step Functions State machine
:::note warn
上記以外のAWSリソースはRead-onlyと表示されAWS Application Composerでの構築は未対応
:::

## マネジメントコンソールで構築

[demo](https://docs.aws.amazon.com/application-composer/)があるのでこちらを実行してみる


##### 1.プロジェクトを作成
![スクリーンショット 2022-12-13 10.47.04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025887/aa24f21d-50da-c2bc-1ae7-c2d0314ea06c.jpeg)
ローカルディレクトリと同期が可能、今回は同期せずに開始

##### 2.Rest API を設計
![スクリーンショット 2022-12-13 11.16.45.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025887/31eff7f4-a4d4-2b38-23f9-090d96f52abe.jpeg)
キャンバスで API Gatewayリソースを選択し、 [詳細]を選択して[リソース プロパティ] パネルを表示します。

次のプロパティを入力して、最初のルートを作成

メソッドを選択: GET

パス: /items

##### 3.lambda関数を設計する
![スクリーンショット 2022-12-15 14.46.24.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025887/ad5c2765-1045-8141-29bf-8aa04fe8e1ca.jpeg)
キャンバスで 関数リソースを選択し、 [詳細]を選択して[リソース プロパティ] パネルを表示

LogicalIDフィールドに getItemsを入力して、関数を構成、保存を押す

##### 4.リソースを接続する
![スクリーンショット 2022-12-15 14.51.14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025887/3923563a-9b48-295a-dc7a-b08b59d81b96.jpeg)
API Gateway リソースでGET /itemsポートを選択し、それをgetItems Lambda 関数の左側のポートにドラッグして接続

これらの手順を繰り返して、残りの 4 つの Lambda 関数を API Gateway パスに接続

##### 5.図を整理する
雑にアイコンを配置していても、ボタンひとつで整理してくれます！便利ですね
![スクリーンショット 2022-12-15 14.58.12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025887/0988516f-397e-b120-0c0d-a42d251c87eb.jpeg)

##### 6.グループ化
Shiftを押しながら、キャンバス上の各Lambda関数を選択して[group]を押す
![スクリーンショット 2022-12-15 15.13.46.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025887/80cbfe36-8f28-659d-de74-d1fb9b6f86df.jpeg)

##### 7.テーブルを作成
DynamoDB テーブルを追加
![スクリーンショット 2022-12-15 15.24.26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025887/e513d0bc-27a2-3b6f-385c-b9ca3a5cae94.jpeg)
 Lambda 関数の右側のポートを選択し、DynamoDB テーブル リソースの左側のポートに接続


##### 8.samテンプレートを読み込む
samテンプレートを読み込みも可能

![スクリーンショット 2022-12-19 17.58.57.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025887/7d93bd2f-1b98-01f9-ab95-0b00a1b355b3.jpeg)
右上の「Menu」から[Open or CreateProject]を開く
![スクリーンショット 2022-12-19 18.00.06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025887/44e97520-d8c7-49a9-cd84-c436b6b7d8b8.jpeg)
samテンプレートがあるフォルダを選択しTemplatefileでtempate.yamlを選択しCreate
![スクリーンショット 2022-12-19 18.00.22.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025887/4c959f26-64f0-65af-3e2d-ffb024e9623d.jpeg)
![スクリーンショット 2022-12-19 18.04.31.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025887/129f6d81-2875-e6f5-21dd-1a166aa775c4.jpeg)

テンプレートが読み込まれ構成図

# まとめ
ノーコードでGUIでサクサクとサーバレス構成作成できテンプレートが作成できるのは便利
SAMテンプレートから取り込んで構成を起こすことも可能なので、ちょっとした構成図を作成したい場合などにも使えそう
GAされれば機能追加されていくと思うので、対応範囲が広がりそうと思いました