我想要从 AWS Lambda 函数向 Amazon Simple Notification Service (Amazon SNS) 主题发布消息。
解决方法
请按照以下步骤使用 Lambda 函数向 Amazon SNS 主题发送消息。
**注意:**本文中的示例使用 Python 运行时系统,但您可以使用首选 Lambda 运行时系统。
1.创建 Amazon SNS 主题。
2.创建 Lambda 函数。
3.在 Lambda 函数中,确保 Lambda 执行角色有权发布类似于以下内容的 SNS 消息:
**注意:**请将 your-region、your-account-number 和 your-topic-name 替换为您的变量。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublishSNSMessage",
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:<your-region>:<your-account-number>:<your-topic-name>"
}
]
}
4.选择代码选项卡。然后,在代码源中,复制发布 Boto3 操作的以下代码并将其粘贴到代码编辑器中:
import json
import boto3
client = boto3.client('sns')
def lambda_handler(event, context):
response = client.publish(TopicArn='arn:aws:sns:<region>:<account-number>:<topic-name>',Message="Test message")
print("Message published")
return(response)
5.测试您的 Lambda 函数。
如果您的 Lambda 函数连接到 Amazon Virtual Private Cloud (Amazon VPC),请执行以下操作之一:
如果您的 Lambda 函数需要访问互联网,请确保您授予互联网访问权限。有关详细信息,请参阅如何为连接到 Amazon VPC 的 Lambda 函数提供互联网访问权限?
-或者-
对于私有网络,请在同一 VPC 中为 Amazon SNS 创建 Amazon VPC 端点。有关详细信息,请参阅为 Amazon SNS 创建 Amazon VPC 端点。
相关信息
当我尝试将 Lambda 函数订阅到 Amazon SNS 主题时,为什么会出现授权错误?