我想为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
如何设置对象过期?
像这样使用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
],
// ...
],
],
]);
注意
- 此方法将替换现有的所有规则。所以如果你需要添加一个我建议您使用的新规则
getBucketLifecycleConfiguration
在前面,并合并前面 - 生命周期规则只能在前缀(或标签)上设置,不能在对象上设置。
- 'prefix'是你的路径,不包括文件名,以斜杠结尾。
https://docs.aws.amazon.com/aws - sdk - php/v3/api/api s3 - 2006 - 03 - 01. - html # putbucketlifecycleconfiguration
生命周期策略是按桶设置的,而不是按文件设置的。
下面是如何为桶设置生命周期策略:
- 在AWS S3控制台(web版本)中,单击桶 上的<
- 选择属性/strong>;生命周期扩展 出现
- 添加规则。单击它。
- 使用您自己的一组规则完成向导