Подтвердить что ты не робот

Невозможно создать источник событий SNS для функции Lambda с помощью CloudFormation

Это код шаблона 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: введите описание изображения здесь

Но он не отображается в панели событий событий лямбды: введите описание изображения здесь

Странно, что если я создаю новую подписку с панели SNS для этой же лямбда-функции, новая подписка не будет создана, поскольку она будет точным дубликатом. Однако теперь, если я проверил панель "Источники событий" на панели "Лямбда", я могу увидеть новую запись для SNS: JumpboxPresenceTopic: введите описание изображения здесь

Я чувствую, что это проблема на стороне Амазонки, но я могу ошибаться. Что-то не так с моим подходом или это ограничение AWS?

4b9b3361

Ответ 2

Добавление правильного имени функции и источника в разрешениях помогло решить проблему

"MySNSTopic": {
            "Type": "AWS::SNS::Topic",
            "Properties": {
                "TopicName": "MyTopic",
                "DisplayName": "My Test Topic",
                "Subscription": [
                {
                    "Endpoint": { "Fn::GetAtt" : ["Lambda", "Arn"] },
                    "Protocol": "lambda"
                }
                ]
            }
    },
    "PermissionForEventsToInvokeLambda": {
          "Type": "AWS::Lambda::Permission",
          "Properties": {
            "FunctionName": { "Fn::GetAtt" : ["Lambda", "Arn"] },
            "Action": "lambda:InvokeFunction",
            "Principal": "sns.amazonaws.com",
            "SourceArn": { "Ref": "MySNSTopic" }
          }
      }
   },