我的最终目标是从cloudformation脚本创建策略文档。我想有一个脚本,其中选择参数,该值用于资源的名称。
" ARN:AWS:dynamodb:US-东-1:12345678:表/ monit的 - $ {dev的} /流/ *"
其中$ {dev}是参数值
Parameters:
Environment:
Default: dev
Description: Leveraged for environment tagging.
Type: String
AllowedValues:
- dev
- tst
- qa
- stg
- prd
我想尝试类似下面的内容,但不知道如何从参数中添加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"
答案 0 :(得分:0)
如果我理解正确,您可以使用Fn :: Join添加"环境"值。你不要使用自己的价值参考。
内部函数Ref返回指定参数或资源的值。
当您指定参数的逻辑名称时,它将返回参数的值。 指定资源的逻辑名称时,它会返回一个通常用于引用该资源的值,例如物理ID。
json示例:
"CustomInstanceProfileArn": {
"Fn::Join": [
"", ["arn:aws:iam::", {
"Ref": "AWS::AccountId"
},
":instance-profile/", {
"Ref": "InstanceProfile"
}
]
]
},
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html