如何导出 SNS 主题以在 Cloudformation 中的不同堆栈中使用

zac*_*618 4 amazon-web-services amazon-sns aws-cloudformation

在一个 Cloudformation 模板中,我创建了一个 SNS 主题并将其导出。请注意,您不能导出一个SNS主题的Arn,因为该属性是不可用GetAtt文档

基础堆栈

Outputs:
  AlarmSNSTopic: 
    Description: Arn for SNS topic related to alarms
    Export:
      Name: AlarmSNSTopic
    Value: { "Fn::GetAtt": ["MyAlarmSNSTopic", "TopicName"] }
Run Code Online (Sandbox Code Playgroud)

然后在不同的模板中,我尝试使用以下内容引用该导出:

功能栈 1

InputQueueNoMessages:
  Type: AWS::CloudWatch::Alarm
  Properties:
    AlarmDescription: Some Alarm
  ...
  AlarmActions:
    Fn::ImportValue: AlarmSNSTopic
Run Code Online (Sandbox Code Playgroud)

当我这样做时,Cloudformation 告诉我它需要一个 ARN,而不是主题名称。

Invalid arn syntax: Blah-AlarmSNSTopic-random
Run Code Online (Sandbox Code Playgroud)

这可能吗?我错过了什么吗?

kic*_*hik 6

AWS::CloudWatch::Alarm需要 ARN AlarmActions,但您导出了主题名称。您的输出值应该是 ARN。

Outputs:
  AlarmSNSTopic: 
    Description: Arn for SNS topic related to alarms
    Export:
      Name: AlarmSNSTopic
    Value: !Ref MyAlarmSNSTopic
Run Code Online (Sandbox Code Playgroud)