繁体   English   中英

通过 php sdk 过期对象 s3

[英]expiration object s3 through php 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

如何设置对象过期时间?

像这样使用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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM