AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将 AWS Lambda 与 Amazon SNS 结合使用

您可使用 Lambda 函数处理 Amazon Simple Notification Service 通知。Amazon SNS 支持 Lambda 函数作为发送到主题的消息的目标。您可以将函数订阅到同一账户或其他 AWS 账户中的主题。

Amazon SNS 通过包含消息和元数据的事件异步调用您的函数。

例 Amazon SNS 消息事件

{ "Records": [ { "EventVersion": "1.0", "EventSubscriptionArn": "arn:aws:sns:us-east-2:123456789012:sns-lambda:21be56ed-a058-49f5-8c98-aedd2564c486", "EventSource": "aws:sns", "Sns": { "SignatureVersion": "1", "Timestamp": "2019-01-02T12:45:07.000Z", "Signature": "tcc6faL2yUC6dgZdmrwh1Y4cGa/ebXEkAi6RibDsvpi+tE/1+82j...65r==", "SigningCertUrl": "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem", "MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e", "Message": "Hello from SNS!", "MessageAttributes": { "Test": { "Type": "String", "Value": "TestString" }, "TestBinary": { "Type": "Binary", "Value": "TestBinary" } }, "Type": "Notification", "UnsubscribeUrl": "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:123456789012:test-lambda:21be56ed-a058-49f5-8c98-aedd2564c486", "TopicArn":"arn:aws:sns:us-east-2:123456789012:sns-lambda", "Subject": "TestInvoke" } } ] }

对于异步调用,Lambda 对消息排队并处理重试。如果 Amazon SNS 无法到达 Lambda 或消息被拒绝,Amazon SNS 将在几个小时内以递增的间隔重试。有关详细信息,请参阅 Amazon SNS 常见问题中的可靠性

要执行跨账户 Amazon SNS 传输到 Lambda,您需要授权从 Amazon SNS 调用 Lambda 函数。反过来,Amazon SNS 需要允许 Lambda 账户订阅 Amazon SNS 主题。例如,如果 Amazon SNS 主题在账户 A 中且 Lambda 函数在账户 B 中,则这两个账户都必须相互授予对其各自的资源的访问权限。由于并非所有设置跨账户权限的选项均能从 AWS 控制台使用,您可使用 AWS CLI 设置整个过程。

有关更多信息,请参阅 Amazon Simple Notification Service 开发人员指南 中的使用 Amazon SNS 通知调用 Lambda 函数