【问题标题】:Amazon S3: Delete empty buckets using LifecycleAmazon S3:使用 Lifecycle 删除空存储桶
【发布时间】:2014-09-08 07:29:24
【问题描述】:

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

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

而且效果很好……有点。 7天后,实际上桶中的所有文件都被清空了。但奇怪的是,bucket 本身仍然存在。结果,我的 S3 现在充满了空桶:

Image source

所以问题是,我怎样才能将桶设置为也删除自己?我是否缺少一些参数/配置?还是需要我明确地打电话给deleteBucket()

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 真可惜……我想我得想出我自己的逻辑了。谢谢!
    【解决方案2】:

    是的,您只能使用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(...);
    

    【讨论】:

      猜你喜欢
      • 2010-09-06
      • 2012-05-16
      • 2017-06-08
      • 1970-01-01
      • 2013-08-23
      • 2014-11-03
      • 2023-03-24
      • 2023-03-31
      • 1970-01-01
      相关资源
      最近更新 更多