我想要从 AWS Lambda 函数向 Amazon Simple Notification Service (Amazon SNS) 主题发布消息。
解决方法
请按照以下步骤使用 Lambda 函数向 Amazon SNS 主题发送消息。
注意: 本文中的示例使用的是 Python 运行时,但您还可以使用首选 Lambda 运行时。
完成以下步骤:
-
打开 Amazon SNS 控制台。
-
创建 Amazon SNS 主题。
-
在详细信息页面上,复制 Amazon 资源名称 (ARN) 以供后续步骤使用。
-
打开 Lambda 控制台。
-
创建 Lambda 函数。
-
在 Lambda Functions(函数)页面上,选择 Code(代码)选项卡。然后,在 Code source(代码源)中,复制发布 boto3 操作的以下代码并将其粘贴到代码编辑器中:
import json
import boto3
client = boto3.client('sns')
def lambda_handler(event, context):
response = client.publish(TopicArn='arn:aws:sns:your-sns-topic-arn',Message="Test message")
print("Message published")
return(response)
注意: 将 your-sns-topic-arn 替换为您在上一步中复制的 Amazon SNS 主题 ARN。
-
选择 Deploy(部署)。
-
选择 Configuration(配置)选项卡,然后选择 Permissions(权限)。
-
选择 Role name(角色名称),再选择 Add permissions(添加权限),然后选择 Create inline policy(创建内联策略)。
-
选择 JSON 选项卡,然后输入以下 AWS Identity and Access Management (IAM) 策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublishSNSMessage",
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:your-sns-topic-arn"
}
]
}
注意: 将 your-sns-topic-arn 替换为您在上一步中复制的 Amazon SNS 主题 ARN。
11. 选择 Next(下一步),然后选择 Create policy(创建策略)。
如果您的 Lambda 函数连接到 Amazon Virtual Private Cloud (Amazon VPC),请执行以下操作之一:
相关信息
当我尝试将 Lambda 函数订阅到 Amazon SNS 主题时,为什么会收到授权错误?