我尝试使用Javascript AWS SDK在lambda上创建SNS事件源。 我有以下代码段:
var permissionParams = {
FunctionName: "MyFunction",
Action: "lambda:Invoke",
Principal: "sns.amazonaws.com",
StatementId: "snsinvoke",
SourceArn: "MyArn"
};
lambda.addPermission(permissionParams, function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
}
});
这与另一个订阅该主题的调用结合在一起创建了lambda中的事件源,但是它被禁用了。我可以进行另一个调用来启用它吗?还是有一种方法可以在我添加它时启用它?
答案 0 :(得分:2)
您是SNS主题的所有者吗?如果没有,则所有者需要授予您(在主题策略中)订阅该主题的权利。
答案 1 :(得分:1)
这是一份简短的清单,可以帮助您完成所需的工作:
SNS Topic
需要IAM access policy
授予Lambda
功能的访问权限。Lambda
函数需要execution policy
授予SNS Topic
执行权限。Lambda
函数订阅SNS Topic
。此核对表基于AWS移动博客文章Invoking AWS Lambda functions via Amazon SNS。请记住,Web控制台会自动执行这些步骤。如果您正在使用API,则必须自己执行它们。