SNS -> Lambda 订阅在通过 API 设置时不起作用,但在通过管理控制台设置时起作用
SNS -> Lambda subscription doesn't work when set via API, but does when set by admin console
我正在使用节点 aws-sdk
为 Lambda 设置 SNS 订阅。调用 returns 成功 - 它为我提供了一个订阅 ARN,当我查看 Web 控制台时它出现了。但是,当我向主题发布消息时,没有任何反应。我尝试在 Web 控制台中设置相同的订阅(所有字段看起来完全一样)并且 确实 有效。
控制台是否在幕后做了一些我不知道的事情?在 SNS topic/Lambda 上设置权限,诸如此类?
事实证明我对权限的怀疑是正确的 - 您还需要添加一个具有以下模式的 Lambda.addPermission
:
{
FunctionName: functionArn,
StatementId: Date.now().toString(),
Action: 'lambda:InvokeFunction',
Principal: 'sns.amazonaws.com',
SourceArn: topicArn
}
我正在使用节点 aws-sdk
为 Lambda 设置 SNS 订阅。调用 returns 成功 - 它为我提供了一个订阅 ARN,当我查看 Web 控制台时它出现了。但是,当我向主题发布消息时,没有任何反应。我尝试在 Web 控制台中设置相同的订阅(所有字段看起来完全一样)并且 确实 有效。
控制台是否在幕后做了一些我不知道的事情?在 SNS topic/Lambda 上设置权限,诸如此类?
事实证明我对权限的怀疑是正确的 - 您还需要添加一个具有以下模式的 Lambda.addPermission
:
{
FunctionName: functionArn,
StatementId: Date.now().toString(),
Action: 'lambda:InvokeFunction',
Principal: 'sns.amazonaws.com',
SourceArn: topicArn
}