Amazon S3:使用Lifecycle删除空桶

时间:2014-09-08 07:29:25

标签: php amazon-web-services amazon-s3

所以我使用aws/aws-sdk-php-laravel创建存储桶并存储内容。创建每个存储桶后,我使用putBucketLifecycle()添加生命周期,以便在7天后自动删除它,如下所示:

$s3->putBucketLifecycle([
    'Bucket'    => $bucket,
    'Rules'     => [
        [
            'Expiration' => 7,
            'ID'         => 'expires-after-7-days--' . uniqid(),
            'Prefix'     => '',
            'Status'     => 'Enabled',
        ],
    ],
]);

它运作良好......有点儿。事实上,7天后,存储桶中的所有文件都会被清除。但奇怪的是,本身仍然存在。结果,我的S3现在充满了空桶:

Empty buckets Image source

所以问题是,如何设置桶以自行删除?我错过了一些paremeter /配置吗?或者我需要明确地致电deleteBucket()吗?

2 个答案:

答案 0 :(得分:0)

Buckets不会删除自己。生命周期策略仅适用于存储桶中的对象,尽管名称为“存储桶生命周期”。

答案 1 :(得分:0)

是的,您只能使用putBucketLifecycle()删除存储桶内的对象,因为生命周期规则适用于存储桶内的对象。

删除存储桶中的所有对象(到期后)后,您可以使用以下调用来删除存储桶

// check if bucket is empty
$s3->listObjects(...);
// or use ListObjects iterator
$s3->getIterator('ListObjects', array('Bucket' => $bucket));
// delete bucket if its empty
$s3->deleteBucket(...);