AWS CloudFormation,请参考标签中的参数

时间:2020-03-12 00:37:52

标签: amazon-web-services amazon-cloudformation

我正在尝试将一组标签应用于SNS主题,并且其中一个标签引用一个参数。下面给出的是我的模板的一部分(我减少了标签以突出我的问题)

AWSTemplateFormatVersion: 2010-09-09
Description: Deploys resources 

Parameters:
  MyParameter:
    Type: String
    Default: "testEnvironment"

Mappings:
  Mp1:
    Mp1-1:
      tags:
        - Key: key1
          Value: !Ref MyParameter

Resources:
  snsTopic:
    Type: AWS::SNS::Topic
    Properties:
      DisplayName: snsTopic
      TopicName: snsTopic
      Tags: !FindInMap [Mp1, Mp1-1, tags]

现在,当我在CloudFormation上运行它时,出现以下错误:

Every entry in list for property Tags must be a map of String

有人知道如何解决此问题,或者我做错了什么?

1 个答案:

答案 0 :(得分:1)

您不能以这种方式定义映射。 Docs清楚地说:

不能在映射部分中包含参数,伪参数或内部函数。

所以您的映射应该是

Mappings:

  Mp1:
    Mp1-1:
      tags:
        - Key: key1
          Value: MyValue # <-- No !Ref here, just fixed string

如果要使用!Ref MyParameter,则应将其放在AWS::SNS::Topic资源中。

Resources:
  snsTopic:
    Type: AWS::SNS::Topic
    Properties:
      DisplayName: snsTopic
      TopicName: snsTopic
      Tags: 
        - Key: key1
          Value: !Ref MyParameter