【发布时间】:2022-03-08 13:24:28
【问题描述】:
基本上,我使用这个 Example Python code snippet for Slack 来自 aws 提供的 example python Lambda function。
#!/usr/bin/python3.6
import urllib3
import json
http = urllib3.PoolManager()
def lambda_handler(event, context):
url = "https://hooks.slack.com/services/xxxxxxx"
msg = {
"channel": "aws-events",
"username": "Event_Notifier",
"text": event['Records'][0]['Sns']['Message'],
"icon_emoji": ""
}
encoded_msg = json.dumps(msg).encode('utf-8')
resp = http.request('POST',url, body=encoded_msg)
print({
"message": event['Records'][0]['Sns']['Message'],
"status_code": resp.status,
"response": resp.data
})
很遗憾,上面的代码没有产生任何输出,也没有向 slack 通道发送消息。
所以我们进行了如下调整,现在它总是在有事件时发送一个通用消息(我们设置的),但对于团队来说这不是一个有意义的消息,它并不能真正帮助找到正确的事件消息本身。团队每次都必须去 aws 控制面板检查触发器是针对什么事件的。
#!/usr/bin/python3.6
import urllib3
import json
http = urllib3.PoolManager()
def lambda_handler(event, context):
print(event)
url = "https://hooks.slack.com/services/xxxxxxx"
msg = {
"channel": "aws-events",
"username": "Event_Notifier",
#"text": event['Records'][0]['Sns']['Message'],
"text": "Upcoming Events, check here https://phd.aws.amazon.com/phd/home?region=eu-west-1#/event-log",
"icon_emoji": ""
}
encoded_msg = json.dumps(msg).encode('utf-8')
resp = http.request('POST',url, body=encoded_msg)
print({
#"message": event['Records'][0]['Sns']['Message'],
"message": "Upcoming Events, check here https://phd.aws.amazon.com/phd/home?region=eu-west-1#/event-log",
"status_code": resp.status,
"response": resp.data
})
现在,我们进行了进一步的更改,但现在完全停止了。
#!/usr/bin/python3.6
import urllib3
import json
http = urllib3.PoolManager()
def lambda_handler(event, context):
print(event)
url = "https://hooks.slack.com/services/xxxxxxx"
last_event = event['Records'][0]['Sns']['Message']
msg = {
"channel": "aws-events",
"username": "Event_Notifier",
"text": "Upcoming Events, check here https://phd.aws.amazon.com/phd/home?region=eu-west-1#/event-log" + "```\n" + str(last_event) + "\n```",
"icon_emoji": ""
}
encoded_msg = json.dumps(msg).encode('utf-8')
resp = http.request('POST',url, body=encoded_msg)
print({
"message": "Upcoming Events, check here https://phd.aws.amazon.com/phd/home?region=eu-west-1#/event-log" + "```\n" + str(last_event) + "\n```",
"status_code": resp.status,
"response": resp.data
})
现在对于如何使其与 Amazon EventBridge 正常工作一无所知。
【问题讨论】:
标签: python python-3.x amazon-web-services aws-lambda aws-event-bridge