1

以下是使用 AWS Java API 重现的步骤: 1. 创建 Nodejs Lambda 函数 2. 创建 SNS 主题 3. 将 SNS 主题订阅到使用其 ARN 创建的 lambda 函数

现在,如果我们转到 Lambda 函数并查看 Event Sources 选项卡,我们不会看到 SNS 主题被列为事件源。所以 SNS 根本不会触发 Lambda 函数。对我来说似乎是 AWS 问题。

PS:用于重现上述问题的 AWS 用户密钥附加了全面访问(管理策略)。所以它看起来不像是权限问题。如果我通过 AWS 控制台重复上述步骤,事件源会正确添加到 Lambda 函数中。

有没有人遇到过这个问题?如何解决这个问题?或任何解决方法。

4

1 回答 1

1

您需要添加 SNS 调用 Lambda 的权限。您可以通过调用AddPermission Function来做到这一点。

背景:Lambda SNS 使用 Push Model 调用 Lambda。这意味着 SNS 直接调用您的 lambda 函数(类似于您从 Java SDK 调用 invokeFunction)。lambda IAM 权限模型要求显式允许每个调用者调用该函数。

这与 Lambda Kinesis 事件源不同,后者使用拉模型(lambda 函数运行,然后从 Kinesis 流中提取记录)。

于 2016-03-05T02:23:58.333 回答