到期对象s3到php sdk

时间:2015-09-09 12:14:01

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

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

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

但是当我在aws S3 Console上检查文件时,对象会保持:

Expiry Date:    None
Expiration Rule:    N/A

如何设置对象到期?

2 个答案:

答案 0 :(得分:2)

像这样使用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. “前缀”是您的路径,不包括文件名,并带有反斜杠。

资源

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

答案 1 :(得分:0)

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

以下是如何为存储桶设置生命周期策略:

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