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

时间:2016-03-04 17:11:27

标签: aws-sdk aws-lambda aws-java-sdk

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

现在,如果我们转到Lambda函数并查看Event Sources选项卡,我们就不会将SNS主题列为事件源。所以SNS根本不会触发Lambda函数。看起来像是一个AWS问题。

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

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

1 个答案:

答案 0 :(得分:1)

您需要为SNS添加权限才能调用Lambda。您可以致电AddPermission Function来完成此操作。

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

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