はじめに
Amazon SNSからSlackやTeamsに通知する際は、Lambda越しに送信する必要があります。
構成としてはSNS->Lambda(->Slack,Teams)と単純ですが、先日発表されたAWS Application Composerで、どの程度まてテンプレートファイルを自動作成してくれるのか、試してみました。
参考
やったこと
Select folderで、自PCのフォルダを選びます。
選択したフォルダに、自動作成されるファイルが保存されていきます。全角文字列が混じっていても大丈夫そうです。
SNSを配置します。詳細で論理IDが変更できますので修正してみました。
Permissionsは自由入力ができるだけで、アタッチさせるIAMロールのArnを直接指定するようです。
また環境変数も設定してみました。
保存すると、テンプレートが生成されていました。環境変数やSNSからのイベントもちゃんと作成されています。
Lambda用のロググループなんかも作成してくれています。
ファイルは以下の様に自動生成されていました。
D:.
│ template.yaml
│
└─functions
└─notifyteams
handler.py
requirements.txt
先ほど画面で見たテンプレートは、template.yaml
に出力されています。
Pythonファイルの中身は簡素でした。ここから先を自分で作ることになるようです。
import json
def handler(event, context):
# Log the event argument for debugging and for use in local development.
print(json.dumps(event))
return {}
注意点
使っていて気づいた点です。現時点でプレビュー版なので、一般利用時には変更されているかもしれません。
IAMロールがない
Lambda関数にアタッチさせるIAMロールは、テンプレートの中にはありませんでした。SNSと接続していることを検知して、「対象のSNSを操作するインラインポリシーが定義されたロール」まで作ってくれることを期待していましたが、IAMロールを作成してはもらえませんでした。
別途作成してPermissionsで指定するか、作成されたテンプレートを直接編集する必要があります。
2022.12.08追記
IAMロールは、今回の構成では明示的に作る必要がないため、生成されないだけでした。
他の構成(Event BridgeやStep Functions)を使った際は、IAMロールも生成されていました。
保存時点の構成で作成される
ちょくちょく保存すると、その状態でファイル群が作成され、変更しても作成されたものは残ったままになります。
以下は、デフォルトがsrcフォルダを指定しており、そのまま保存したため、(指定しなくなった)srcフォルダが残った状態になっています。
Handlerが反映されない
Handlerの部分ですが、画面上ではapp.handler
に変更し、Template.yamlには反映されます。
しかし、自動生成されるファイルはhandler.py
と、デフォルトの設定値でのファイルになっていました。
おわりに
GUIで、凡そのSAMテンプレートを作成してくれるのはだいぶ助かります。「SAMテンプレートが書けなくても作れるようになる」までのものではないですが、それでも十分便利と感じました。
早く一般利用可能になってほしい、大変期待できる新サービスでした。