在一个Cloudformation模板中,我创建了一个SNS主题并将其导出。请注意,您无法导出SNS主题的Arn,因为该属性对于docs上的GetAtt不可用。

BaseStack

Outputs:
  AlarmSNSTopic:
    Description: Arn for SNS topic related to alarms
    Export:
      Name: AlarmSNSTopic
    Value: { "Fn::GetAtt": ["MyAlarmSNSTopic", "TopicName"] }

然后在另一个模板中,我尝试使用以下内容引用该导出:

功能堆栈1
InputQueueNoMessages:
  Type: AWS::CloudWatch::Alarm
  Properties:
    AlarmDescription: Some Alarm
  ...
  AlarmActions:
    Fn::ImportValue: AlarmSNSTopic

当我这样做时,Cloudformation告诉我它需要一个ARN,而不是主题名称。
Invalid arn syntax: Blah-AlarmSNSTopic-random

这可能吗?我想念什么吗?

最佳答案

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

Outputs:
  AlarmSNSTopic:
    Description: Arn for SNS topic related to alarms
    Export:
      Name: AlarmSNSTopic
    Value: !Ref MyAlarmSNSTopic

10-04 23:31