如果Amazon SNS无法从Lambda触发器中发送消息,可以按照以下步骤解决问题:
import boto3
def lambda_handler(event, context):
sns = boto3.client('sns')
sns.publish(
TopicArn='arn:aws:sns:us-west-2:123456789012:my-topic',
Message='Hello from Lambda!'
)
return {
'statusCode': 200,
'body': 'Message sent to SNS'
}
确保在TopicArn参数中使用正确的SNS主题ARN。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SNSSendMessage",
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:us-west-2:123456789012:my-topic"
}
]
}
确保Resource参数中的ARN与SNS主题的实际ARN匹配。
检查Lambda函数是否与正确的VPC关联。如果Lambda函数与VPC关联,并且没有配置正确的VPC终端节点或Internet访问,则可能无法访问SNS服务。可以尝试将Lambda函数从VPC中解除关联,或者配置正确的VPC终端节点。
检查SNS主题是否已正确配置为接收由Lambda函数发送的消息。确保在主题的订阅列表中添加了正确的订阅者(例如电子邮件、短信等)。
检查Lambda函数执行日志以获取更多信息。可以在AWS控制台的Lambda函数页面上查看函数的CloudWatch日志。检查是否有与SNS相关的错误或异常日志。
通过执行上述步骤,您应该能够解决“Amazon SNS未能从Lambda触发器中发送消息”的问题。