使用JavaScript API设置S3对象到期(删除)

Bra*_*rad 8 amazon-s3 amazon-web-services node.js

我正在为Amazon AWS S3使用Node.js JavaScript API,并希望将对象设置为在创建对象后的指定天数到期.也就是说,如果我创建并上传新对象,我希望它从现在起100天左右自动删除.是否可以根据每个对象设置删除的到期时间?

文件表明这是可能的:

Amazon S3提供了一个Expiration操作,您可以在生命周期配置中指定该操作使对象失效.

...

当对象到达其生命周期的末尾时,Amazon S3将其排队以进行删除并异步删除它.到期日期与Amazon S3删除对象的日期之间可能存在延迟.您不需要为与已过期的对象关联的存储时间付费.

但是,我似乎必须在存储桶配置中设置此过期,而不是在上传/创建它时设置每个对象.

JavaScript的SDK文档表明,我可以设置一个Expires创建对象时的参数,但是这似乎是为Expires当S3返回后续GET请求对象HTTP标头.

有没有办法在创建对象时设置对象的到期日期?

s3.putObject({
  Bucket: config.s3.bucketName, 
  Key: s3Key, 
  Body: objBuffer,
  ACL: 'public-read',
  ContentType: 'image/jpeg',
  StorageClass: 'REDUCED_REDUNDANCY',
  // Some option here for setting expiration/deletion date?
}, function () {
  console.log(arguments);
});
Run Code Online (Sandbox Code Playgroud)

dcr*_*cro 11

您无法单独为每个对象设置过期规则.要定义对象过期规则,您必须定义存储桶生命周期配置.

要使用node.js API执行此操作,请参阅putBucketLifecycle调用.您还可以查看存储桶生命周期PUT操作的REST API文档.

  • 您正在描述的"Expires"参数是指您可以在对象上定义的`Expires` HTTP标头.该标头对S3对象的生命周期没有影响,它只影响客户端(浏览器,代理等)在从S3检索后将该对象保留在缓存中的时间. (7认同)
  • 我想知道为什么所有aws sdks都提到"Expires"参数,如果它不可能使用它.有什么解释吗? (2认同)