使用javascript SDK在lambda上启用SNS事件源

时间:2015-10-07 18:47:33

标签: node.js amazon-web-services aws-sdk amazon-sns aws-lambda

我尝试使用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中的事件源,但是它被禁用了。我可以进行另一个调用来启用它吗?还是有一种方法可以在我添加它时启用它?

2 个答案:

答案 0 :(得分:2)

您是SNS主题的所有者吗?如果没有,则所有者需要授予您(在主题策略中)订阅该主题的权利。

答案 1 :(得分:1)

这是一份简短的清单,可以帮助您完成所需的工作:

  1. 您的SNS Topic需要IAM access policy授予Lambda功能的访问权限。
  2. 您的Lambda函数需要execution policy授予SNS Topic执行权限。
  3. 让您的Lambda函数订阅SNS Topic
  4. 此核对表基于AWS移动博客文章Invoking AWS Lambda functions via Amazon SNS。请记住,Web控制台会自动执行这些步骤。如果您正在使用API​​,则必须自己执行它们。