boto3 在 SNS 中发布消息
boto3 publish message in SNS
我想 运行 一个脚本来向我的 sns 主题发布消息。我按照文档进行操作,我的代码是这样的:
import boto3
client = boto3.client('sns')
response = client.publish(
TopicArn='my topic arn',
Message='ptt message '
)
print("Response: {}".format(response))
它打印响应 json,但我在我的 AWS SNS 控制台中没有看到任何消息。我有一个 lambda 函数,作为这个 sns 的订阅者,它是非常基本的。
lambda 代码:
import json
def lambda_handler(event, context):
# TODO implement
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
如何确定我的消息 "ptt message" 已成功发布?我该如何检查?
为了测试集成,您可以为 SNS 主题配置传递状态日志记录。 SNS 的 GUI 中对此有一个简单的设置。这会将您的订阅触发器的日志导出到 CloudWatch。
其次,你的 Lambda 没有对事件做任何事情,所以你的 "ptt message stays in the "event" 字典。例如,你可以记录你的事件并查看实际消息正文所在的结构。
import logging
def lambda_handler(event, context):
logging.info(event)
...
为了简单地查看 Lambda 是由订阅触发的,您可以打开 CloudWatch Logs,找到 AWS 为您的 Lambda 自动创建的 LogGroup(其中包含函数名称)并搜索 Log Group . "last X minutes" 提供舒适的过滤器。
为了测试此集成,如果感觉比 运行 脚本更方便,您还可以从 Web 界面向 SNS 主题发布测试消息。
我想 运行 一个脚本来向我的 sns 主题发布消息。我按照文档进行操作,我的代码是这样的:
import boto3
client = boto3.client('sns')
response = client.publish(
TopicArn='my topic arn',
Message='ptt message '
)
print("Response: {}".format(response))
它打印响应 json,但我在我的 AWS SNS 控制台中没有看到任何消息。我有一个 lambda 函数,作为这个 sns 的订阅者,它是非常基本的。
lambda 代码:
import json
def lambda_handler(event, context):
# TODO implement
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
如何确定我的消息 "ptt message" 已成功发布?我该如何检查?
为了测试集成,您可以为 SNS 主题配置传递状态日志记录。 SNS 的 GUI 中对此有一个简单的设置。这会将您的订阅触发器的日志导出到 CloudWatch。
其次,你的 Lambda 没有对事件做任何事情,所以你的 "ptt message stays in the "event" 字典。例如,你可以记录你的事件并查看实际消息正文所在的结构。
import logging
def lambda_handler(event, context):
logging.info(event)
...
为了简单地查看 Lambda 是由订阅触发的,您可以打开 CloudWatch Logs,找到 AWS 为您的 Lambda 自动创建的 LogGroup(其中包含函数名称)并搜索 Log Group . "last X minutes" 提供舒适的过滤器。
为了测试此集成,如果感觉比 运行 脚本更方便,您还可以从 Web 界面向 SNS 主题发布测试消息。