首页 > 解决方案 > 使用 AWS CDK 实施生命周期后无法删除 S3 存储桶

问题描述

我是 aws cdk 的初学者,我已经使用 AWS CDK 实施了 S3 生命周期管理,以在创建存储桶 10 天后删除存储桶(包括文件)。

cdk实现如下:

Builder builder = BucketProps.builder().encryption(BucketEncryption.KMS_MANAGED).removalPolicy(RemovalPolicy.DESTROY);

final String bucketName = ApplicationProperties.INSTANCE.getBatchS3Name();
final List<LifecycleRule> lifecycleRules = new ArrayList();
final LifecycleRule rule = new LifecycleRule.Builder().expiration(Duration.days(10)).build();
lifecycleRules.add(rule);
builder.lifecycleRules(lifecycleRules);

this.bucket = new Bucket(stack, "BatchWorkBucket", builder.build());

但是 s3 对象在 10 天后没有被删除。如附图所示,它即将过期。我们没有在 cdk api ( https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-中设置“删除过期的删除标记或不完整的分段上传”或其他选项的选项) s3.LifecycleRule.html#transitions)。

您能否在这个主题上帮助我,如何使用 aws cdk 删除 s3 对象。

在此处输入图像描述

标签: javaamazon-s3aws-cdks3-lifecycle-policy

解决方案


我相信这是按预期工作的。标记为过期的对象最终将被删除,但不会在 10 天之后被删除,就像您的情况一样。根据文档

当对象根据其生命周期策略达到其生命周期的终点时,Amazon S3 将其排队等待移除并异步移除。到期日期与 Amazon S3 删除对象的日期之间可能存在延迟。


推荐阅读