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