Amazon cloudformation 如何添加';始终需要';将值添加到CommaDelimitedList
我正在尝试创建一个用于限制对所选S3存储桶的访问的。有一些默认的Amazon cloudformation 如何添加';始终需要';将值添加到CommaDelimitedList,amazon-cloudformation,Amazon Cloudformation,我正在尝试创建一个用于限制对所选S3存储桶的访问的。有一些默认的S3桶型ARN,它们必须始终存在,模板操作员可以添加其他桶型ARN的列表,以通过 在我的模板中,buckertans,允许操作员指定长度不受限制的ARN列表 BucketARNs: Type: CommaDelimitedList Description: 'Add the ARN of S3 Buckets that the Get* and List* access to. When specif
S3桶型ARN
,它们必须始终存在,模板操作员可以添加其他桶型ARN的列表,以通过
在我的模板中,buckertans
,允许操作员指定长度不受限制的ARN列表
BucketARNs:
Type: CommaDelimitedList
Description: 'Add the ARN of S3 Buckets that the Get* and List*
access to. When specifying a Bucket 2 values should be supplied one for the
bucket and for objects within that bucket, for example: arn:aws:s3:::MyContentBucket,arn:aws:s3:::MyContentBucket/* .
This defaults to all buckets.'
Default: arn:aws:s3:::*, arn:aws:s3:::*/*
使用此选项的策略文档如下所示
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- s3:Get*
- s3:List*
Resource:
!Ref BucketARNs
例如,我想做的是确保
ARN总是出现在buckertans
列表中。操作员可以删除中的默认值
,这是将其添加为默认值
并在说明
中添加信息以警告用户不要删除所需ARN的唯一解决方案吗?就像它很容易破碎一样
是否有人知道如何确保我始终拥有这些产品?考虑通过is变量指定的Buckertan列表
理想情况下,我想要一个列表连接函数使用FN::join将常量与参数连接起来有两个选项:
您可以在字符串
参数上使用AllowedPattern
以及Default
值,以确保提供的默认值始终包含在提供的参数中,然后在模板中使用时,使用Fn::Split
将参数解析为数组:
Parameters:
BucketARNs:
Type: String
Default: arn:aws:s3:::*, arn:aws:s3:::*/*
AllowedPattern: arn:aws:s3:::\*, arn:aws:s3:::\*\/\*.*
Resources:
Dummy:
Type: AWS::CloudFormation::WaitConditionHandle
Outputs:
Result:
Value: !Join [',', !Split [',', !Ref BucketARNs]]
您可以与和一起使用Fn::Join
将固定值附加到用户提供的参数:
Parameters:
BucketARNs:
Type: CommaDelimitedList
Resources:
Dummy:
Type: AWS::CloudFormation::WaitConditionHandle
Outputs:
Result:
Value: !Join [',', !Split [',', !Sub [
"arn:aws:s3:::*,arn:aws:s3:::*/*,${Buckets}",
{Buckets: !Join [',', !Ref BucketARNs]}
]]]
最后的!上述示例中的Join
仅用于在堆栈输出中输出数组,在使用模板的实际属性输入中的参数时不需要它们。我非常喜欢这样。我认为你的解决方案也适用于这个问题:
Parameters:
BucketARNs:
Type: CommaDelimitedList
Resources:
Dummy:
Type: AWS::CloudFormation::WaitConditionHandle
Outputs:
Result:
Value: !Join [',', !Split [',', !Sub [
"arn:aws:s3:::*,arn:aws:s3:::*/*,${Buckets}",
{Buckets: !Join [',', !Ref BucketARNs]}
]]]