问题描述
希望能够自动化删除 AWS S3 的备份文件。他注意到,如果对备份文件打上”daily”、”weekly”、”monthly”、”yearly”中的一个标签,AWS 将根据他所期望的保留期限,按照不同的时间段删除备份文件。然而,他对于如何在每日备份过程中确定应该使用哪个标签感到困惑。
以下是他当前使用的备份代码片段:
// 上传备份文件
aws s3 cp /tmp/backup_2007020644.20200703.1248_blobs.tar s3://foo-bar-baz-someaccount-us-east-2/backup_2007020644.20200703.1248_blobs.tar --region us-east-2 --only-show-errors
// 标记备份文件
aws s3api put-object-tagging --bucket foo-bar-baz-someaccount-us-east-2 --key backup_2007020644.20200703.1248_blobs.tar --tagging --region us-east-2 TagSet=[{Key=backuptype,Value=blobs}]
// 列出 S3 存储桶中的文件
aws s3 ls s3://foo-bar-baz-someaccount-us-east-2 --region us-east-2
他也考虑了手动解析列出的备份文件列表,然后根据保留策略逐个发出删除命令,但他认为一定有更好的方法来解决这个问题,他寻求一些建议。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
用户已经接近正确的思路,只需在备份过程中添加一些逻辑,然后让 AWS S3 处理其余的部分。
以下是解决方案的建议步骤:
步骤1:备份文件打标签
在上传备份文件后,使用 put-object-tagging
命令为备份文件打上相应的标签。您可以根据备份文件的类型,打上不同的标签,比如 “daily”、”weekly”、”monthly”、”yearly”。
aws s3api put-object-tagging --bucket foo-bar-baz-someaccount-us-east-2 --key backup_2007020644.20200703.1248_blobs.tar --tagging --region us-east-2 TagSet=[{Key=backuptype,Value=blobs}]
步骤2:设置 S3 存储桶生命周期策略
在 AWS S3 控制台或使用 AWS CLI,为您的 S3 存储桶设置生命周期策略。根据不同标签,设置相应的策略。以下是建议的设置:
– “yearly” 标签的备份:在上传后的 365 天后,将备份文件转移到 Glacier 存储,无限期保留。
– “monthly” 标签的备份:在上传后的 365 天后,删除备份文件,保留 1 年。
– “weekly” 标签的备份:在上传后的 183 天后,删除备份文件,保留 6 个月。
– “daily” 标签的备份:在上传后的 31 天后,删除备份文件,保留 1 个月。
您可以在 AWS S3 控制台上为存储桶设置生命周期策略,也可以使用 AWS CLI 命令进行设置。以下是通过 AWS CLI 设置的示例命令:
aws s3api put-bucket-lifecycle-configuration --bucket foo-bar-baz-someaccount-us-east-2 --lifecycle-configuration '{
"Rules": [
{
"Status": "Enabled",
"Filter": {
"Tag": {
"Key": "backuptype",
"Value": "yearly"
}
},
"Transitions": [
{
"Days": 365,
"StorageClass": "GLACIER"
}
]
},
{
"Status": "Enabled",
"Filter": {
"Tag": {
"Key": "backuptype",
"Value": "monthly"
}
},
"Expiration": {
"Days": 365
}
},
{
"Status": "Enabled",
"Filter": {
"Tag": {
"Key": "backuptype",
"Value": "weekly"
}
},
"Expiration": {
"Days": 183
}
},
{
"Status": "Enabled",
"Filter": {
"Tag": {
"Key": "backuptype",
"Value": "daily"
}
},
"Expiration": {
"Days": 31
}
}
]
}'
参考资料
通过这种方式,您可以根据备份的类型自动进行删除或迁移操作,无需手动解析列表和执行删除操作,极大地简化了备份管理的流程。