AWS EBS 快照每月一次,每天一次,持续 7 天

AWS EBS Snapshot once a month and daily for 7 days

我想每周 天制作一个快照并删除超过 7 天的快照 但同时,我想保存 一个本月快照。

有人知道如何编辑这些行来制作这个吗?

我每天都用corn执行ebs-snapshot.sh,我需要保存,比如每月第一天做的快照

 # How many days do you wish to retain backups for? Default: 7 days
retention_days="7"
retention_date_in_seconds=`date +%s --date "$retention_days days ago"`

[...] 

# Purge all instance volume snapshots created by this script that are older than 7 days
for snapshot_id in $(cat /tmp/snapshot_info.txt)
do
    echo "Checking $snapshot_id..."
    snapshot_date=$(aws ec2 describe-snapshots --output=text --snapshot-ids $snapshot_id --query Snapshots[].StartTime | awk -F "T" '{printf "%s\n", }')
    snapshot_date_in_seconds=`date "--date=$snapshot_date" +%s`

    if (( $snapshot_date_in_seconds <= $retention_date_in_seconds )); then
        echo "Deleting snapshot $snapshot_id ..." >> $logfile
        aws ec2 delete-snapshot --snapshot-id $snapshot_id
    else
        echo "Not deleting snapshot $snapshot_id ..." >> $logfile
    fi
done

Automate the Amazon EBS Snapshot Lifecycle - Amazon Elastic Compute Cloud

可能会更容易

此功能可以使用定义的保留策略定期自动创建快照。

只需将其配置为创建每日快照并保留 7 天。

至于每月快照,既然你显然想永远保留它们,只需触发一个每月创建一次快照的cron作业。不需要保留逻辑,因此它只是一个简单的 aws ec2 create-snapshot 命令。