AWS SES邮件转Slack Webhook的Lambda POST请求故障排查求助
问题排查:Lambda无法向Slack Webhook发送POST请求
我正在搭建「个人邮箱→AWS SES→S3→Lambda→POST请求」的工作流,目标是将AWS SES接收的邮件转发至Slack Webhook,但Lambda函数无法成功向Webhook URL发送POST请求。以下是我的Lambda代码及触发时的CloudWatch日志,恳请帮忙排查问题:
from ast import parse import boto3 import ConfigParser import urllib3 import json from email.parser import FeedParser from email.header import decode_header http = urllib3.PoolManager() def lambda_handler(event, context): try: record = event["Records"][0] bucket_region = record["awsRegion"] bucket_name = record["s3"]["bucket"]["name"] mail_object_key = record["s3"]["object"]["key"] s3 = boto3.client('s3', region_name=bucket_region) mail_object = s3.get_object(Bucket = bucket_name, Key = mail_object_key) mail_body = '' try: mail_body = mail_object["Body"].read().decode('utf-8') except: mail_body = mail_object["Body"].read() parser = FeedParser() parser.feed(mail_body) parsed_mail = parser.close() (d_sub, sub_charset) = decode_header(parsed_mail['Subject'])[0] subject = d_sub.decode(sub_charset) payload = parsed_mail.get_payload(decode=parsed_mail['Content-Transfer-Encoding']) body_charset = parsed_mail.get_content_charset() body = payload.decode(body_charset) url = "MY_SLACK_WEBHOOK_URL" msg = { "Content": parsed_mail } encoded_msg = json.dumps(msg).encode('utf-8') resp = http.request('POST',url, body=encoded_msg) print({ "message": parsed_mail, "status_code": resp.status, "response": resp.data }) except: print('Mail received, but I got some error.')
CloudWatch日志:
START RequestId: 00f3e7db-807e-48e9-a775-6f0117431b83 Version: $LATEST Mail received, but I got some error. END RequestId: 00f3e7db-807e-48e9-a775-6f0117431b83 REPORT RequestId: 00f3e7db-807e-48e9-a775-6f0117431b83 Duration: 1933.59 ms Billed Duration: 1934 ms Memory Size: 128 MB Max Memory Used: 74 MB Init Duration: 317.15 ms
内容的提问来源于stack exchange,提问作者girifir
相关产品推荐
相关产品推荐

