无法使用CloudFormation在Lambda函数上创建SNS事件源

Lau*_*ard 18 amazon-web-services amazon-sns aws-cloudformation aws-lambda

这是与我的问题相关的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": [...]
Run Code Online (Sandbox Code Playgroud)

我可以在SNS仪表板中看到该主题: 在此输入图像描述

但它不会显示在lambda函数Event Sources面板中: 在此输入图像描述

关于这一点的奇怪之处在于,如果我从SNS仪表板为同一个lambda函数创建一个新订阅,则不会创建新的订阅,因为它将完全重复.但是,现在,如果我检查Lambda仪表板中的Event Sources面板,我可以看到以下新条目: SNS: JumpboxPresenceTopic在此输入图像描述

我觉得这在亚马逊方面是一个问题,但我可能是错的.我的方法有问题还是AWS的限制?

小智 14

您必须先授予SNS权限才能调用Lambda.以下是AWS的一个示例.请将其从S3更改为SNS,不要忘记将SourceArn设置为SNS主题ARN.

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

  • @Onema我有类似的问题,AWS支持告诉我删除"SourceAccount"并在Permission资源中添加指向SNS主题的"SourceArn",希望有所帮助! (5认同)
  • @deviavir,也为我工作.关键是"SourceAccount"不存在(我的脚本中有SourceAccount和SourceArn,并且在我删除SourceAccount之前它没有工作). (2认同)