首页 > 解决方案 > 为单个对象创建/添加生命周期配置

问题描述

我想使用 aws-sdk Node Js 为 S3 存储桶中的某些对象设置不同的到期日期。为此,我使用了putBucketLifecycleConfiguration和。putBucketLifecycle据我所知,我使用不同的前缀(= 对象名称)来设置不同对象的到期日。但是这种方法不是创建新的生命周期,而是取代现有的。

const params = {
 Bucket: Env.AWS_BUCKET, /* required */
 LifecycleConfiguration: {
   Rules: [
    {
      Expiration: {
        Days: 1
    }, 
  Filter: {
     Prefix: fullPathOfObject
   }, 
  Status: "Enabled"
  }
 ]
}
};

const putBucketLifecycleConfigRequest = s3.putBucketLifecycleConfiguration(params);

putBucketLifecycleConfigRequest.
on('success', function(response: any) { 
console.log("success");
}).
on('error', function(error: any) {
console.log(error);
}).
on('complete', function(response: any) {
console.log("complete");
}).
send();

/***
const putBucketLifecycleRequest = s3.putBucketLifecycle(params);

putBucketLifecycleRequest.
 on('success', function(response: any) { 
 console.log("success");
 }).
 on('error', function(error: any) {
 console.log("error");
 }).
 on('complete', function(response: any) {
 console.log("complete");
 }).
 send();

**/

我已经阅读了许多答案和文档,但不知道如何在 s3 存储桶中创建多个生命周期。

在 AWS 文档中:https ://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putBucketLifecycle-property

其书面“为存储桶创建新的生命周期配置或替换现有的生命周期配置”。那么,我们不能为单个对象创建/添加生命周期吗?

标签: node.jsamazon-web-servicesamazon-s3aws-sdk

解决方案


您正在尝试等待 a callback,您需要等待 apromise

const params = {
    Bucket: 'aws-bucket-name' 
    LifecycleConfiguration: {
        Rules: [
            {
                Expiration: {
                    Days: 1,
                },
                Filter: {
                    Prefix: fullPathOfObject,
                },
                Status: 'Enabled',
            },
        ..add another rule here
        ],
    },
}

await s3.putBucketLifecycleConfiguration(params).promise()

根据下面的文档,如果那里还没有存储桶生命周期并替换现有存储桶生命周期,这将创建一个新的存储桶生命周期。所以这是按预期工作的。

据我所知,您需要添加另一条规则

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putBucketLifecycleConfiguration-property


推荐阅读