AWS SNS 订阅 lambda 不会使用 Java API 自动创建事件源



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

现在,如果我们转到 Lambda 函数并查看事件源选项卡,则看不到列为事件源的 SNS 主题。因此,SNS 根本不会触发 Lambda 函数。对我来说看起来像一个 AWS 问题。

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

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

您需要为 SNS 添加调用 Lambda 的权限。 您可以通过调用 AddPermission 函数来执行此操作。

背景:Lambda SNS 使用推送模型来调用 Lambda。这意味着 SNS 直接调用您的 lambda 函数(类似于您从 Java 开发工具包调用 invokeFunction)。 lambda IAM 权限模型要求明确允许每个调用方调用函数。

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

最新更新