Amazon cloudformation 根据值动态创建资源名称

Amazon cloudformation 根据值动态创建资源名称,amazon-cloudformation,Amazon Cloudformation,我的最终目标是从cloudformation脚本创建一个策略文档。我希望有一个脚本,其中选择了参数,并使用该值来表示资源名称中的值 “arn:aws:dynamodb:us-east-1:12345678:table/monit-${dev}/stream/*” 其中${dev}是一个参数值 参数: 环境: 默认值:dev 描述:用于环境标记。 类型:字符串 允许值: -发展 -tst -质量保证 -stg -珠三角 我想尝试以下方法,但不知道如何从参数添加Ref环境,或者是否有其他方法 'Fn

我的最终目标是从cloudformation脚本创建一个策略文档。我希望有一个脚本,其中选择了参数,并使用该值来表示资源名称中的值

“arn:aws:dynamodb:us-east-1:12345678:table/monit-${dev}/stream/*”

其中${dev}是一个参数值

参数:
环境:
默认值:dev
描述:用于环境标记。
类型:字符串
允许值:
-发展
-tst
-质量保证
-stg
-珠三角

我想尝试以下方法,但不知道如何从参数添加Ref环境,或者是否有其他方法

'Fn::Sub':'arn:aws:dynamodb:${aws::Region}:${aws::AccountId}'

所以我不必创建一堆不同的脚本

    PolicyDocument:
      Statement:
      - Effect: Allow
        Action:
        - dynamodb:DescribeStream
        - dynamodb:GetRecords
        - dynamodb:GetShardIterator
        - dynamodb:ListStreams
        - dynamodb:Scan
        #This will need to changed for other tables
      Resource:
         - "arn:aws:dynamodb:us-east-1:12345678:table/monit-dev/stream/*"
         - "arn:aws:dynamodb:us-east-1:12345678:table/monit-dev"

如果我理解正确,可以使用Fn::Join添加“Environment”值。您不使用它自身的值的Ref

内在函数Ref返回指定参数或资源的值

指定参数的逻辑名称时,它将返回参数的值。 指定资源的逻辑名称时,它将返回一个通常可用于引用该资源的值,例如物理ID

json示例:

    "CustomInstanceProfileArn": {
      "Fn::Join": [
        "", ["arn:aws:iam::", {
            "Ref": "AWS::AccountId"
          },
          ":instance-profile/", {
            "Ref": "InstanceProfile"
          }
        ]
      ]
    },