【问题标题】:Not able to receive an SNS message when using a Lambda function triggered by the topic使用主题触发的 Lambda 函数时无法接收 SNS 消息
【发布时间】:2020-08-26 22:28:46
【问题描述】:

我正在尝试使用 AWS SNS 来触发一个用 Python 2.7 编写的 Lambda 函数来传递一个小的 JSON 负载。主题和订阅工作正常,调用了 Lambda 实例,但代码没有提取消息,我正在使用以下代码:

import sys,requests,json,pymysql,logging,boto3

def lambda_handler(event, context):
    print("Received event: " + json.dumps(event, indent=2))
    message = event['Records'][0]['Sns']['Message']
    parsed_message = json.loads(message)
    print("From SNS: " + parsed_message)
    return(parsed_message)

我尝试调用 Python 函数,但我不知道调用它时参数应该来自哪里。我是否遗漏了需要包含在 Lambda 函数中的另一个调用或一段代码?

【问题讨论】:

  • 这个已经解决了,我有一段代码没有缩进。

标签: python-2.7 aws-lambda amazon-sns


【解决方案1】:

SNS 将向 AWS Lambda 发送一个事件及其有效负载,您可以通过这种方式在 Monitoring -> CloudWatch Insights 中打印和预览:

import json

def lambda_handler(event, context):
    print("Received event: " + json.dumps(event, indent=2))

要测试 Lambda 调用,它不会直接来自 SNS,您需要提供 Event Payload,它是从我之前的代码 sn-p 中获得的。

此代码示例适用于 Lambda Python3 环境:

lambda_handler.py

from __future__ import print_function
import json
print('Loading function')

def lambda_handler(event, context):
    #print("Received event: " + json.dumps(event, indent=2))
    message = event['Records'][0]['Sns']['Message']
    print("From SNS: " + message)
    return message

也许您可以将运行时从 Python 2.7 更改为 Python 3.7?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 2021-02-15
    • 2018-04-08
    • 2018-12-02
    • 2018-05-10
    • 2021-05-14
    • 2015-10-12
    相关资源
    最近更新 更多