我尝试将expire days添加到文件和存储桶但是我遇到了这个问题:
sudo s3cmd expire s3://<my-bucket>/ --expiry-days=3 expiry-prefix=backup
错误:解析xml时出错:语法错误:第1行,第0列 错误:未找到 错误:S3错误:404(未找到)
和这个
sudo s3cmd expire s3://<my-bucket>/<folder>/<file> --expiry-day=3
错误:参数问题:仅使用桶名设置而不是's3:////'
来期待S3 URI如何使用s3cmd
在DO空间中为文件夹或文件添加过期天数?
答案 0 :(得分:0)
数字海洋空间未实施expire
选项
答案 1 :(得分:0)
考虑配置Bucket的生命周期规则
生命周期规则可用于在“生命”过程中对空间中的对象执行不同的操作。例如,可以配置Space以使其中的对象过期并在一段时间后自动删除。
要配置新的生命周期规则,请向
发送PUT
${BUCKET}.${REGION}.digitaloceanspaces.com/?lifecycle
个请求请求正文应包含一个名为
LifecycleConfiguration
的XML元素,其中包含Rule
个对象的列表。
https://developers.digitalocean.com/documentation/spaces/#get-bucket-lifecycle
答案 2 :(得分:0)
感谢 Vitalii 对 API 的回答。
但是 API 不是很容易使用,所以我是通过 NodeJS 脚本完成的。
首先,在此处生成您的 API 密钥:https://cloud.digitalocean.com/account/api/tokens
并将它们放入 ~/.aws/credentials
文件 (according to docs):
[default]
aws_access_key_id=your_access_key
aws_secret_access_key=your_secret_key
现在创建空的 NodeJS 项目,运行 npm install aws-sdk
并使用以下脚本:
const aws = require('aws-sdk');
// Replace with your region endpoint, nyc1.digitaloceanspaces.com for example
const spacesEndpoint = new aws.Endpoint('fra1.digitaloceanspaces.com');
// Replace with your bucket name
const bucketName = 'myHeckingBucket';
const s3 = new aws.S3({endpoint: spacesEndpoint});
s3.putBucketLifecycleConfiguration({
Bucket: bucketName,
LifecycleConfiguration: {
Rules: [{
ID: "autodelete_rule",
Expiration: {Days: 30},
Status: "Enabled",
Prefix: '/', // Unlike AWS in DO this parameter is required
}]
}
}, function (error, data) {
if (error)
console.error(error);
else
console.log("Successfully modified bucket lifecycle!");
});