Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 更新AWS S3到期时间_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services 更新AWS S3到期时间

Amazon web services 更新AWS S3到期时间,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我想知道如何延长密钥的过期时间。我指的不是访问对象的签名URL,而是密钥本身 我将AWS设置为有一条规则,即bucket中的所有对象都应在90天内过期。这是我在大多数情况下希望发生的事情。有时我需要将单个密钥的生命周期延长90天。事实上,重置倒计时是可以的 我使用AWS SDK尝试了这一点,但没有效果 我的第一次尝试是使用copyObject更改元数据: ObjectMetadata meta = s3client.getObjectMetadata( bucket, key ); meta.s

我想知道如何延长密钥的过期时间。我指的不是访问对象的签名URL,而是密钥本身

我将AWS设置为有一条规则,即bucket中的所有对象都应在90天内过期。这是我在大多数情况下希望发生的事情。有时我需要将单个密钥的生命周期延长90天。事实上,重置倒计时是可以的

我使用AWS SDK尝试了这一点,但没有效果

我的第一次尝试是使用copyObject更改元数据:

ObjectMetadata meta = s3client.getObjectMetadata( bucket, key );
meta.setExpirationTime( getFutureDate( 90*DAYS ) );
CopyObjectRequest copyObjectRequest = new CopyObjectRequest( bucket, key, bucket, key );
copyObjectRequest.setNewObjectMetadata( meta );
copyObjectRequest.setStorageClass( StorageClass.Standard );
s3client.copyObject( copyObjectRequest );
上述措施不起作用。JavaDoc甚至告诉我为什么(尝试后阅读)

然后,我尝试了基于此链接的上述变体(添加了setStorageClass):


非常感谢您的帮助。

您似乎正在努力实现以下目标:

  • 使用生命周期规则定义一个bucket,该规则将在90天后永久删除对象
  • 将对象上载到bucket中
  • 对于某些指定的对象,请重新启动90天超时
根据你引用的alestic博客文章,这可以通过复制对象本身来完成。事实上,它甚至不需要更改存储类

我将一个对象上传到bucket,然后运行以下Python代码:

import boto
conn = boto.s3.connect_to_region('ap-southeast-2')
mybucket = conn.get_bucket('BUCKET-NAME')
mybucket.copy_key('OBJECT-NAME', 'BUCKET-NAME', 'OBJECT-NAME')

这段代码将对象复制到“自身”,管理控制台显示了一个新的上次修改日期。我没有测试生命周期规则,但我假设这是用于确定90天周期开始的日期。

我确实有正确的答案。下面的Python代码可能会执行相同的技巧,将BUCKET/KEY复制到自身上,并且还会重置过期时间。AWS S3根据24小时时钟将到期时间四舍五入到同一时间,因此不会注意到在同一天进行的任何复制。在90天的刷新中,我让密钥保留了一周左右的时间来进行测试,看起来“最后一次修改”+ExpirationRuleDays=“expiration Date”仍然有效

我创建了两个键,在运行下面的代码之后,我从S3管理控制台获得了下面的表单

旧版-1

Last Modified:  Thu Jun 04 15:48:58 GMT-700 2015
Expiry Date:    Wed Sep 02 17:00:00 GMT-700 2015
Expiration Rule:    Auto-Expire after 90 days
Last Modified:  Mon Jun 08 15:37:01 GMT-700 2015
Expiry Date:    Sun Sep 06 17:00:00 GMT-700 2015
Expiration Rule:    Auto-Expire after 90 days
新增-1

Last Modified:  Thu Jun 04 15:48:58 GMT-700 2015
Expiry Date:    Wed Sep 02 17:00:00 GMT-700 2015
Expiration Rule:    Auto-Expire after 90 days
Last Modified:  Mon Jun 08 15:37:01 GMT-700 2015
Expiry Date:    Sun Sep 06 17:00:00 GMT-700 2015
Expiration Rule:    Auto-Expire after 90 days
旧版-2

Last Modified:  Thu Jun 04 13:34:36 GMT-700 2015
Expiry Date:    Wed Sep 02 17:00:00 GMT-700 2015
Expiration Rule:    Auto-Expire after 90 days
Last Modified:  Mon Jun 08 15:41:19 GMT-700 2015
Expiry Date:    Sun Sep 06 17:00:00 GMT-700 2015
Expiration Rule:    Auto-Expire after 90 days
新-2

Last Modified:  Thu Jun 04 13:34:36 GMT-700 2015
Expiry Date:    Wed Sep 02 17:00:00 GMT-700 2015
Expiration Rule:    Auto-Expire after 90 days
Last Modified:  Mon Jun 08 15:41:19 GMT-700 2015
Expiry Date:    Sun Sep 06 17:00:00 GMT-700 2015
Expiration Rule:    Auto-Expire after 90 days
代码:
你所说的“上述措施不起作用”是什么意思?它跑了吗?它是否给出了一个错误?这看起来像是与上面的Java示例相同的Python,并且可能也会工作。我得到了最后一次修改数据的确认,该数据用于确定90天的开始,尽管面包屑非常混乱。