所以我使用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现在充满了空桶:
所以问题是,如何设置桶以自行删除?我错过了一些paremeter /配置吗?或者我需要明确地致电deleteBucket()
吗?
答案 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(...);