タダです.
これまで AWS Chatbot には固定のメッセージを通知することはできましたが,利用者の通知したいメッセージは Lambda をかましたりする必要がありました.そんな状況でしたが,特定のフォーマットで SNS にポストすれば Chatbot からカスタムメッセージを送る事ができるアップデートがきました.この記事では,EventBridge Rule の input transformer を経由してカスタムメッセージを送ってみたのでまとめていきます.
カスタムメッセージの通知概要
Chatbot へのカスタムメッセージの通知について簡単にまとめていきます.まず,カスタムメッセージのフォーマットは以下の通りで,必須なパラメーターは version
,source
,description
を指定する必要があります.また,メッセージにはメンションや絵文字を入れることもできる模様です.が,Slack の API を叩いてボタンを出すみたいなことはできなさそうです.
{ "version": String, "source": String, "id": String, "content": { "textType": String, "title": String, "description": String, "nextSteps": [ String, String, ... ], "keywords": [ String, String, ... ] }, "metadata": { "threadId": String, "summary": String, "eventType": String, "relatedResources": [ String, String, ... ], "additionalContext" : { "customerProvidedKey1": String, "customerProvidedKey2": String ... } } }
カスタムメッセージの通知実践
Chatbot へのカスタムメッセージ通知を試してみます.EventBridge Rule の input transformer を使って SNS -> Chatbot へ通知してみます.例として CodePipeline の手動承認リンクを送るのですが,EventBridge Rule で次の設定を入れます.
{ "source": ["aws.codepipeline"], "detail-type": ["CodePipeline Action Execution State Change"], "detail": { "state": ["STARTED"], "stage": ["ステージ名"], "action": ["承認用のアクション名"], "pipeline": ["パイプライン名"] } }
次に input transformer と input template に以下の定義を入れて Chatbot と関連付けられた SNS への通知を設定します.
※input transformer { "execution-id": "$.detail.execution-id", "pipeline": "$.detail.pipeline", "region": "$.region" } ※input template { "version": "1.0", "source": "custom", "content": { "textType": "client-markdown", "title": "test-custom-notify", "description": "[メッセージの内容]。\nhttps://<region>.console.aws.amazon.com/codesuite/codepipeline/pipelines/<pipeline>/view?region=<region>#/Deploy/approve/approve/<execution-id>(手動承認用のリンク)" } }
関連記事
通知結果の確認
うまくいけば,CodePipeline の手動承認フェーズで画像のようなメッセージが通知されます.
まとめ
簡単になりますが,Chatbot のカスタムメッセージ通知アップデートをさらってみました.簡単なメッセージの通知であれば,この機能を使ってみても良いと思いました.