更新AWS S3过期时间

2024-05-08

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

我将 AWS 设置为存储桶中的所有对象应在 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 甚至告诉我原因(尝试后阅读)。

void com.amazonaws.services.s3.model.ObjectMetadata.setExpirationTime(Date expirationTime)

For internal use only. This will *not* set the object's expiration time, and is only used to set the value in the object after receiving the value in a response from S3.

然后我根据此链接尝试了上述内容的变体(添加了 setStorageClass):https://alestic.com/2013/09/s3-lifecycle-extend/ https://alestic.com/2013/09/s3-lifecycle-extend/

任何帮助表示赞赏。


您似乎正在尝试实现以下目标:

  • 定义一个桶生命周期规则90 天后将永久删除对象
  • 将对象上传到存储桶中
  • 对于某些指定对象,重新启动 90 天超时

根据您引用的 alestic 博客文章,这可以通过将对象复制到其自身之上来完成。事实上,它似乎甚至不需要改变存储类别。

我将一个对象上传到存储桶,然后运行以下 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 天期限开始的日期。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新AWS S3过期时间 的相关文章

随机推荐