如何自动删除 AWS S3 备份

42次阅读
没有评论

问题描述

希望能够自动化删除 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
            }
        }
    ]
}'

参考资料

通过这种方式,您可以根据备份的类型自动进行删除或迁移操作,无需手动解析列表和执行删除操作,极大地简化了备份管理的流程。

正文完