Ошибка облачной информации AWS: Ошибка проверки шаблона: Ошибка шаблона: ресурс NotificationsTopic не поддерживает тип атрибута Arn в Fn :: GetAtt - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь создать стек облачной информации AWS, используя шаблон yaml.Цель состоит в том, чтобы создать тему sns для некоторых уведомлений.Я хочу вывести тему arn, чтобы иметь возможность подписать несколько функций на эту тему, просто указав тему arn.

Однако при попытке создать стек из консоли aws я получаю сообщение об ошибке:

"Ошибка проверки шаблона: Ошибка шаблона: ресурс NotificationsTopic не поддерживает тип атрибута Arn в Fn :: GetAtt"

Я сделал то же самое для сегментов s3, таблиц динамодаба и все работает хорошо, но по какой-то причине с темой SNS я не могу получить ARN.

Я хочу избежать жесткого кодирования темы arn во всех функциях, которые подписаны.Потому что, если однажды тема ARN изменится, мне нужно будет изменить все функции, вместо этого я хочу импортировать тему arn во все функции и использовать ее.Таким образом, мне не придется ничего менять, если по какой-либо причине у меня появится новая тема для arn.

Это шаблон:

    Parameters:
  stage:
    Type: String
    Default: dev
    AllowedValues:
      - dev
      - int
      - uat
      - prod

Resources:
   NotificationsTopic:
        Type: AWS::SNS::Topic
        Properties:
          DisplayName: !Sub 'notifications-${stage}'
          Subscription:
            - SNS Subscription
          TopicName: !Sub 'notifications-${stage}'
Outputs:
  NotificationsTopicArn:
    Description: The notifications topic Arn.
    Value: !GetAtt NotificationsTopic.Arn
    Export:
      Name: !Sub '${AWS::StackName}-NotificationsTopicArn'
  NotificationsTopicName:
    Description: Notifications topic name.
    Value: !Sub 'notifications-${stage}'
    Export:
      Name: !Sub '${AWS::StackName}-NotificationsTopicName'

1 Ответ

0 голосов
/ 24 ноября 2018

Не все ресурсы одинаковы.Всегда проверяйте документацию для конкретного ресурса.Он имеет раздел «Возвращаемые значения», и вы можете легко проверить, что в теме SNS ARN имеет значение Ref, поэтому вам не нужно использовать GetAtt function

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html

...