Я пытаюсь создать стек облачной информации 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'