【问题标题】:AWS Lambda Function Issue with Slack WebhookSlack Webhook 的 AWS Lambda 函数问题
【发布时间】: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


【解决方案1】:

我可以回答这个问题。

def Send2Slack(message):
    if __name__ == '__main__':

一旦我从 send2slack 函数中删除了 if __name__ == '__main__':,它就起作用了。

否则,我无法进入该功能。 感谢您的所有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2019-08-21
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    相关资源
    最近更新 更多