【发布时间】:2020-10-22 20:19:39
【问题描述】:
我在 CloufFormation 模板中定义了一个 S3 存储桶:
Resources:
Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: !Ref BucketName
我想选择性地向存储桶添加保留政策,因此:
Resources:
Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: !Ref BucketName
LifecycleConfiguration:
Rules:
- ExpirationInDays: !Ref RetentionDays
我不需要在 CF 模板的所有部署中使用 LifecycleConfiguration/ExpirationInDays,因为某些存储桶会无限期地保留其对象。我有looked at the documentation,似乎没有无限期保留/永不过期的值。 我曾想过拥有两个存储桶——一个带有 LifecycleConfiguration,一个没有,然后我可以使用一个条件(例如,如果 RetentionDays 参数 = -1)来确定创建哪个存储桶:
Conditions:
HasNoRetention: !Equals [!Ref RetentionDays, -1]
HasRetention: !Not [Condition: HasNoRetention]
Resources:
Bucket:
Type: AWS::S3::Bucket
Condition: HasNoRetention
Properties:
AccessControl: Private
BucketName: !Ref BucketName
BucketWithRetention:
Type: AWS::S3::Bucket
Condition: HasRetention
Properties:
AccessControl: Private
BucketName: !Ref BucketName
LifecycleConfiguration:
Rules:
- ExpirationInDays: !Ref RetentionDays
这里的问题是存储桶在 YAML 定义中具有不同的名称(“Bucket”和“BucketWithRetention”) - 所以以后很难在其他资源中引用正确的存储桶,因为您必须这样做确定创建了哪个存储桶。
【问题讨论】:
标签: amazon-web-services amazon-s3 yaml amazon-cloudformation