这是与我的问题有关的Cloudformation模板代码:

"SNSTopic": {
  "Type": "AWS::SNS::Topic",
  "Properties": {
    "TopicName": "JumpboxPresenceTopic",
    "DisplayName": "Jumpbox Presence Topic",
    "Subscription": [
      {
        "Endpoint": {
          "Fn::GetAtt": [
            "Lambda",
            "Arn"
          ]
        },
        "Protocol": "lambda"
      }
    ]
  }
},
"Lambda": {
  "Type": "AWS::Lambda::Function",
  "Properties": [...]

我可以在SNS仪表板中看到该主题:
amazon-web-services - 无法使用CloudFormation在Lambda函数上创建SNS事件源-LMLPHP

但它不会显示在lambda函数的“事件源”面板中:
amazon-web-services - 无法使用CloudFormation在Lambda函数上创建SNS事件源-LMLPHP

奇怪的是,如果我从SNS仪表板为相同的lambda函数创建一个新的订阅,则不会创建新的订阅,因为它将完全相同。但是,现在,如果我检查Lambda仪表板中的“事件源”面板,则可以看到SNS: JumpboxPresenceTopic的新条目:
amazon-web-services - 无法使用CloudFormation在Lambda函数上创建SNS事件源-LMLPHP

我觉得这是亚马逊方面的问题,但我可能错了。我的方法有问题吗?还是AWS的局限性?

最佳答案

您必须授予SNS权限才能首先调用Lambda。
这是来自AWS的示例。请将其从S3更改为SNS,并且不要忘记将SourceArn设置为SNS Topic ARN。

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html

07-24 09:39
查看更多