【问题标题】:expiration object s3 through php sdk通过 php sdk 过期对象 s3
【发布时间】:2015-12-05 09:46:57
【问题描述】:

我想在 s3 上为一个对象设置一个过期日期我这样创建对象:

$this->s3->putObject(array(
'Bucket' => BUCKET,
'Key'=> "path",
'SourceFile'   => $fileTmp,
'Expires' => time()+2*60,
'ACL'    => 'private'
));

但是当我在 aws S3 控制台上检查文件时,对象会保留:

Expiry Date:    None
Expiration Rule:    N/A

如何设置对象过期时间?

【问题讨论】:

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


    【解决方案1】:

    像这样使用putBucketLifecycle 方法:

        $result = $client->putBucketLifecycleConfiguration([
            'Bucket' => '<string>', // REQUIRED
            'LifecycleConfiguration' => [
                'Rules' => [ // REQUIRED
                    [
                        'Expiration' => [
                            'Date' => <integer || string || DateTime>,
                            'Days' => <integer>,
                            'ExpiredObjectDeleteMarker' => true || false,
                        ],
                        'ID' => '<string>',
                        'Prefix' => '<string>',
                        'Status' => 'Enabled|Disabled', // REQUIRED
                    ],
                    // ...
                ],
    ],
    ]);
    

    注意

    1. 此方法将替换所有现有规则。所以如果你需要 附加一条新规则,我建议您使用 getBucketLifecycleConfiguration之前和合并之前 新规则。
    2. 您只能在前缀(或标签)上设置生命周期规则,而不是在对象上。
    3. 'prefix' 是您的路径,不包括文件名,带有尾部斜杠。

    资源

    https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putbucketlifecycleconfiguration

    【讨论】:

      【解决方案2】:

      生命周期政策是按存储桶设置的,而不是按文件设置的。

      以下是为存储桶设置生命周期政策的方法:

      1. 在 AWS S3 控制台(网页版)中,单击存储桶
      2. 选择属性;展开生命周期
      3. 添加规则 出现。点击它。
      4. 使用您自己的规则集完成向导

      【讨论】:

      • php sdk 可以做同样的事情吗?
      • 不知道,如果API支持,那么SDK也支持。
      • 问题提到了php sdk。你的答案是关于控制台的。检查我的答案以使用 php sdk
      猜你喜欢
      • 2016-07-24
      • 2018-09-24
      • 2017-03-09
      • 2011-09-25
      • 1970-01-01
      • 2016-05-10
      • 2014-11-10
      • 1970-01-01
      • 2018-11-01
      相关资源
      最近更新 更多