是否可以仅使用本机库通过AWS Lambda向Slack发出POST请求?

我正在尝试使用webhooks向Slack发出POST请求。我可以在本地将curl发送到我的Slack实例,但是当尝试在lambda中发送curl时,尝试发送有效负载会遇到麻烦。

我所见过的一切都说我必须使用和压缩自定义库,但是出于我正在做的目的,我需要使用本机python代码。有没有发送此POST请求的方法?

import json
import urllib.request
#import botocore.requests as requests

def lambda_handler(event,context):
  message=event['message']
  response = urllib.request.urlopen(message) 
  print(response) 

这段代码给了我400错误,这就是我知道我要击中想要的URL的原因(URL在message变量中),但是每次尝试通过添加标头和文本正文来发送有效负载的尝试似乎都失败了。 / p>

zyz1225 回答:是否可以仅使用本机库通过AWS Lambda向Slack发出POST请求?

您可以尝试以下操作:

SLACK_URL = 'https://hooks.slack.com/services/....'

req = urllib.request.Request(SLACK_URL,json.dumps(message).encode('utf-8'))
response = urllib.request.urlopen(req)
,
  • 请找到所附的lambda_handler代码,希望对您有所帮助。
  • 所有要在Slack上发布的消息都放在一个SNS主题上,然后由Lambda读取并使用Slack Webhook网址发布到Slack频道。
import os
import json
from urllib2 import Request,urlopen,URLError,HTTPError

# Get the environment variables
SLACK_WEBHOOK_URL = os.environ['SLACK_WEBHOOK_URL']
SLACK_CHANNEL = os.environ['SLACK_CHANNEL']
SLACK_USER = os.environ['SLACK_USER']

def lambda_handler(event,context):
    # Read message posted on SNS Topic
    message = json.loads(event['Records'][0]['Sns']['Message'])

# New slack message is created
    slack_message = {
        'channel': SLACK_CHANNEL,'username': SLACK_USER,'text': "%s" % (message)
    }
# Post message on SLACK_WEBHOOK_URL
    req = Request(SLACK_WEBHOOK_URL,json.dumps(slack_message))
    try:
        response = urlopen(req)
        response.read()
        print(slack_message['channel'])
    except HTTPError as e:
        print(e)
    except URLError as e:
        print(e)
本文链接:https://www.f2er.com/3128524.html

大家都在问