【发布时间】:2021-12-08 10:14:59
【问题描述】:
我正在使用 AWS lambda 函数向我们的 slack 通道发送警报。但是,由于一些未知问题,我没有收到松弛警报,甚至没有从 AWS lambda 函数收到任何类型的错误消息。日志表示该函数成功运行,没有任何错误,但我没有收到任何警报
代码:
import json, sys, csv, os
import requests
def lambda_handler(event, context):
def Send2Slack(message):
if __name__ == '__main__':
print('inside slack function')
url = "webhook_URL"
title = (f"New Incoming Message")
slack_data = {
"username": "abc",
"channel" : "xyz",
"attachments": [
{
"color": "#ECB22E",
"fields": [
{
"title": title,
"value": message,
"short": "false",
}
]
}
]
}
byte_length = str(sys.getsizeof(slack_data))
headers = {'Content-Type': "application/json", 'Content-Length': byte_length}
response = requests.post(url, data=json.dumps(slack_data), headers=headers)
if response.status_code != 200:
raise Exception(response.status_code, response.text)
output = "Hello Slack "
Send2Slack(output)
请让我知道我做错了什么并帮助我解决这个问题。
【问题讨论】:
-
您是否添加了日志来检查您得到的响应是什么?仅仅因为它的 200 并不意味着它做了你想要的。 200 是“我们成功收到您的消息并能够响应” - 该响应可能(而且通常是!)不是完全失败的失败消息 - 例如,如果您的频道名称无法找到,那么它可能返回 200 - 频道不存在。
-
您能帮帮我吗,如何添加日志以检查响应是什么?另外,我在本地运行相同的脚本而不使用 lambda 函数,并且我收到了一个松弛警报。我觉得有时只有这个 lambda_handler 函数。请帮我解决问题。
-
如果您没有将
inside slack function写入日志,请尝试缩进def Send2Slack(message):,使其与output = "Hello Slack"处于同一级别。我认为 Lambda 看到的是一个空的lambda_handler。 (只是猜测/不是 python 程序员)。仅供参考,slack 会为channel_not_found错误返回 404。
标签: python-3.x amazon-web-services aws-lambda devops