以下是使用AWS Java API重现的步骤: 1.创建Nodejs Lambda函数 2.创建SNS主题 3.将SNS主题订阅到使用它的ARN创建的lambda函数
现在,如果我们转到Lambda函数并查看Event Sources选项卡,我们就不会将SNS主题列为事件源。所以SNS根本不会触发Lambda函数。看起来像是一个AWS问题。
P.S:用于重现上述问题的AWS用户密钥附加了全面访问(管理员策略)。所以它看起来不像权限问题。如果我通过AWS控制台重复上述步骤,则会将事件源正确添加到Lambda函数中。
以前有人遇到过这个问题吗?怎么解决这个?或任何解决方法。
答案 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中提取记录)。