継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

EventBridge を経由して AWS Chatbot のカスタムメッセージを通知する

タダです.

これまで AWS Chatbot には固定のメッセージを通知することはできましたが,利用者の通知したいメッセージは Lambda をかましたりする必要がありました.そんな状況でしたが,特定のフォーマットで SNS にポストすれば Chatbot からカスタムメッセージを送る事ができるアップデートがきました.この記事では,EventBridge Rule の input transformer を経由してカスタムメッセージを送ってみたのでまとめていきます.

aws.amazon.com

カスタムメッセージの通知概要

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
                ...
            }
        }
}

docs.aws.amazon.com

カスタムメッセージの通知実践

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>(手動承認用のリンク)"
  }
}

関連記事

sadayoshi-tada.hatenablog.com

通知結果の確認

うまくいけば,CodePipeline の手動承認フェーズで画像のようなメッセージが通知されます.

まとめ

簡単になりますが,Chatbot のカスタムメッセージ通知アップデートをさらってみました.簡単なメッセージの通知であれば,この機能を使ってみても良いと思いました.