AWS Application Composerを触ってみよう
Application Composerお試し
数日前にGAとなったサービスを使ってみました!
機能の確認とデプロイ操作をしてみるのが目的なので、最初にlambda関数を1つ、一度デプロイ後に、s3バケットを一つ、作成するだけにしています。
プロジェクト作成
AWSのマネジメントコンソールで、サービスを表示プロジェクトの作成をクリックします。
Create Project
というモーダルが表示されるので、Selected folder
をクリックすると、エクスプローラーが立ち上がります。
ローカル環境で、適当にフォルダを用意します。
読み取りの許可を問われるので、ファイルを表示する
をクリックします。
すると、チェックマークと合わせて、選択したフォルダ名が表示されますので、Create
をクリックします。
もう一度質問されるので、変更を保存
をクリックします。
作成画面が表示されましたので、ここからは各々自由なアーキテクチャーを画面上で作成できるようになります。
リソースの作成
左側のリソースからLambda Functionを選択して、右側にドラッグ&ドロップします。
Detailsをクリックすると、右側にプロパティ設定の画面が表示されます。
Runtimeをnode.js16
、メモリは128MBに変更してみて、Saveをクリックします。
Resouce Configuration changes has been saved
と表示され、更新が完了したことを確認します。
この状態で、用意していたフォルダをVSCodeで開きます。
既にtemplate.yaml
とlambda関数が配置されたsrc
フォルダがある状態です。
template.yaml
を確認してみます。
(1件エラーが表示されていますが、拡張機能の影響で、この後に作業に影響はないです)
コードも添付しておきます。
template.yaml
Transform: AWS::Serverless-2016-10-31
Resources:
Function:
Type: AWS::Serverless::Function
Properties:
Description: !Sub
- Stack ${AWS::StackName} Function ${ResourceName}
- ResourceName: Function
CodeUri: src/Function
Handler: index.handler
Runtime: nodejs16.x
MemorySize: 256
Timeout: 30
Tracing: Active
FunctionLogGroup:
Type: AWS::Logs::LogGroup
DeletionPolicy: Retain
Properties:
LogGroupName: !Sub /aws/lambda/${Function}
デプロイ(Stackの作成)
デプロイをAWS SAMを用いて実施していきます。
※SAM CLIは導入済の状態ですので、インストールされていない方は以下を参考にお願いします)
コマンド実行
- yamlファイルがApplication Composerによって更新されたことを検知して、Stackも更新しても問題ない!という方
sam sync --stack-name demo --watch
- いや、yamlファイルの更新されても、都度コマンドを実行して、更新をかけたい!(勝手にStackまで更新されるのは困るよ~)
sam sync --stack-name demo
Y/n
を問われるので、Y
を入力します。
2,3分待つと・・・デプロイが完了しました!
AWSのマネジメントコンソールからLambda関数を開き、実際に作成されていることを確認します。
VScode上でsrcフォルダのindex.jsと同一の内容であることが確認できます。
デプロイ(Stackの更新)
Application Composerの画面に戻りs3バケットを追加します。
再度VSCodeに戻ると・・・
AWSバケットに関する実装が追加されました。
- samのsync(同期)でwatchオプションをつけていない場合
- 再度コマンド実行
- samのsync(同期)でwatchオプションをつけていた場合
- yamlファイルの更新と同時に、リソースも更新が実行されます。
バケット一覧を確認すると・・・
新たにバケットが作成されています。(公開できない部分は隠してますので、ご理解ください)
触ってみて
GUIといいますが、Step Functionと同じように、画面からリソースをマウス操作で作成するだけで、様々なアーキテクチャを構築できるのは、開発速度向上につながる印象を受けました。
もう少し掘り下げてみていきたいと思います!!
Discussion