为单个对象创建/添加生命周期配置
Create / Add lifecylce configuration for individual object
我想使用 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
其写为“为存储桶创建新的生命周期配置或替换现有的生命周期配置”。那么,我们不能为单个对象创建/添加生命周期吗?
您正在尝试等待 callback
,您需要等待 promise
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()
根据下面的文档,这将创建一个新的 bucket 生命周期(如果那里还没有)并替换现有的。所以这是按预期工作的。
据我所知,您需要添加另一个规则
putBucketLifecycleConfiguration creates a new lifecycle configuration for the bucket or replaces an existing lifecycle configuration.
因此,首先使用 getBucketLifecycleConfiguration
获取所有生命周期规则,然后将新规则附加到该列表,然后使用 putBucketLifecycleConfiguration
。
注意:ID 应该是唯一的。
我想使用 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
其写为“为存储桶创建新的生命周期配置或替换现有的生命周期配置”。那么,我们不能为单个对象创建/添加生命周期吗?
您正在尝试等待 callback
,您需要等待 promise
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()
根据下面的文档,这将创建一个新的 bucket 生命周期(如果那里还没有)并替换现有的。所以这是按预期工作的。
据我所知,您需要添加另一个规则
putBucketLifecycleConfiguration creates a new lifecycle configuration for the bucket or replaces an existing lifecycle configuration.
因此,首先使用 getBucketLifecycleConfiguration
获取所有生命周期规则,然后将新规则附加到该列表,然后使用 putBucketLifecycleConfiguration
。
注意:ID 应该是唯一的。