目前,我们已经为 Slack 设置了 AWS Chatbot 集成,以接收有关 CodePipeline 的通知 - CodeBuilds 的结果以及 CodePipeline 所有阶段的状态。我注意到开箱即用的集成消息并不像我想要的那样具有描述性。
例如:如果由于单元测试失败而导致构建失败,聊天机器人将输出
POST_BUILD: COMMAND_EXECUTION_ERROR: Error while executing command: <command>. Reason: exit status 1
,这很好,但我宁愿将该消息更改为更具描述性的内容 - 告诉我测试已失败。
我认为 Chatbot 订阅了 SNS 主题,一旦这些主题被发送出去,它就会在 Slack 上发布一条消息。有没有办法自定义它发送的消息的内容?
官方答案是否定的,但我发现有一个解决方法。您可以使用 Cloudwatch EventBridge 消息并根据您的喜好进行调整。
简单说一下
发布以下消息
{
"version": "0",
"id": "13cde686-328b-6117-af20-0e5566167482",
"detail-type": "Your custom message",
"source": "aws.ecr",
"account": "123456789012",
"time": "2019-11-16T01:54:34Z",
"region": "azAZ0-9!-_/|?!.,",
"resources": [],
"detail": {}
}
你会看到类似的东西
并且您可以根据一些限制
自由编辑区域、详细类型和帐户更新:进一步阅读文档后,我发现我们无法修改 aws 聊天机器人中的事件消息。
尽管以下方法是正确的,但 AWS Chatbot 不支持通知的发起服务。
您可以像下面这样自定义
Event Rule
,我选择 FAILED
状态,您可以自定义您想要的任何事件,然后订阅 lambda 到它,您可以在其中构建有意义的消息,然后将其发送到具有以下内容的 SNS 主题: AWS Chatbot
已订阅:
{
"source": [
"aws.codepipeline"
],
"detail-type": [
"CodePipeline Action Execution State Change"
],
"detail": {
"state": [
"FAILED"
]
}
}
我为 PagerDuty 呼叫做了类似的事情,以便值班人员收到正确的消息,并在警报中附加了一些更多信息。
对于@Tom 的回答来说,这个回复太长了。但我想补充一点,这对我有用(必须保留合理的区域名称),并且您还可以包含大量宽松格式:
{
"version": "0",
"id": "12345678-1234-aaaa-aaaa-123456789012",
"detail-type": "The heading for your message",
"source": "aws.events",
"account": "123456789012",
"time": "2023-06-02T00:58:25Z",
"region": "ap-southeast-2",
"resources": [
"Some random text \nwith newline\n>indented too\nin *bold* and _italic_.",
"A second dot point in the list.",
"`code block`",
"And a big code block:```with some\nmultiline\ncode.```"
],
"detail": {}
}
通过此更新,是的,你可以
[2023/09/12]
https://aws.amazon.com/about-aws/whats-new/2023/09/custom-notifications-aws-chatbot/