AWS日本账号 AWS亚马逊云快照自动创建

亚马逊aws / 2026-04-17 17:06:40

下载.png

你有没有过这种经历:凌晨两点,手机突然狂震——监控告警:某台生产数据库实例的根卷IO延迟飙升到800ms。你抓起咖啡猛灌一口,登录控制台手忙脚乱查EBS状态,结果发现……上次手动打快照是三个月前,且没保留最近7天的增量备份。更绝望的是,快照列表里躺着147个名字叫snap-0a1b2c3d4e5f67890的幽灵快照,根本分不清哪个对应上周三的紧急补丁回滚点。

别慌——这不是你的错,是快照还没“学会自己起床刷牙”。AWS的EBS快照本身不会自动诞生,它需要被温柔而坚定地安排上日程。今天我们就把“AWS亚马逊云快照自动创建”这件事,从玄学变成小学数学题:加减乘除都写清楚,连注释都给你标好页码。

一、先划重点:自动快照 ≠ 点一下“启用自动备份”就完事

AWS官方没有“一键开启自动快照”的开关。它的底层逻辑是:用生命周期管理策略(Lifecycle Manager)驱动EC2 API调用,配合IAM权限、资源标签、时间规则三者咬合运转。漏掉任意一环,你的策略就会像没拧紧的水龙头——看似滴答运行,实则漏光所有备份。

二、四步走通全自动快照流水线

Step 1:给EBS卷贴上“身份证”(打标签)

别跳过这步!生命周期策略只能按标签筛选目标卷。比如你想只备份带Backup: Daily标签的卷,那就必须提前打标:

aws ec2 create-tags \
  --resources vol-0abcdef1234567890 \
  --tags Key=Backup,Value=Daily

注意:标签Key区分大小写,backupBackup是两个世界。我们建议统一用PascalCase,避免半夜debug时怀疑人生。

Step 2:配IAM角色——让策略有“手”能干活

新建一个IAM角色(比如叫EC2-Snapshot-Manager),附加以下最小权限策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateSnapshot",
        "ec2:DeleteSnapshot",
        "ec2:DescribeSnapshots",
        "ec2:DescribeVolumes"
      ],
      "Resource": "*"
    }
  ]
}

⚠️ 切记:不要直接给EC2实例挂Admin权限!曾有客户因此导致快照策略误删了隔壁团队的RDS备份——技术无罪,权限放养有责。

Step 3:创建生命周期策略(核心操作)

进入EC2控制台 → 左侧导航栏「Lifecycle Manager」→ 「Create lifecycle policy」:

  • Policy type:选EBS snapshot management
  • Resource type:选Volumes(不是Instances!别被“EC2”二字迷惑)
  • Target tags:填Backup = Daily(必须完全匹配)
  • Schedule
    • Frequency:Daily
    • Time:选你业务低峰期(比如UTC+0 02:00,国内就是上午10点)
    • Retention:设Keep last 14 snapshots(别贪多!快照不收费?错!存储费按GB/月收,1TB快照存一年≈$120)

点击创建——恭喜,你的第一个自动化快照引擎已点火。但别急着庆祝,接着看Step 4。

Step 4:验证+兜底(防策略哑火)

策略创建后不会立即执行,首次触发需等待下一个调度周期。怎么确认它活了?

  1. 等一轮调度后,进Snapshots页面,筛选Owner = self + Description contains "Created by AWS Data Lifecycle Manager"
  2. 检查快照描述里是否含目标卷ID(如vol-0abcdef1234567890
  3. 手动触发一次:用CLI强制创建
    aws ec2 create-snapshot \
        --volume-id vol-0abcdef1234567890 \
        --description "Manual-test-DLM-$(date +%Y%m%d)"
    如果成功,说明网络、权限、卷状态全OK;如果报错UnauthorizedOperation,回头检查IAM角色是否绑定到策略上(不是绑定到EC2实例!)

三、进阶技巧:让快照更懂你

• 跨区域容灾?加个复制策略

在同一个生命周期策略里,勾选Copy snapshots to other Regions,填入目标区域(如us-west-2)。注意:源区域快照保留数≠目标区域,需单独为副本设置保留规则,否则可能存满对方账单。

• 按环境差异化备份

开发环境每周1次,生产环境每天3次?建两个策略:
• 策略A:标签Env = Prod + 频率Every 8 hours
• 策略B:标签Env = Dev + 频率Weekly on Sunday
标签即策略边界,比写if-else还干净。

• 快照命名太丑?用Description字段注入信息

策略默认描述是随机字符串。想让它显示Prod-WebServer-Root-20240520?用Lambda+EventBridge做增强:
当DLM创建快照时,触发Lambda函数,用describe-volumes反查卷名,再调用modify-snapshot-attribute重写Description。代码不多,但能让运维同事在快照列表里一眼认出“这是张三改的支付模块”。

四、避坑指南(血泪总结)

  • 坑1:快照策略对加密卷失效?→ 检查KMS密钥权限!确保策略角色有kms:Decryptkms:GenerateDataKey权限,且密钥策略允许该角色使用。
  • 坑2:快照创建失败但无告警?→ 开启CloudWatch Events,捕获ec2:CreateSnapshotFailed事件,推送到SNS发邮件/钉钉。
  • 坑3:快照数量暴增?→ 查EC2实例是否被反复重建(每次重建都生成新卷),用DescribeVolumesFilter: attachment.status = attached过滤真正挂载中的卷。

五、终极懒人包

附赠两个开箱即用工具:

① Shell脚本:批量打标+创建策略
GitHub搜aws-dlm-bootstrap,或直接复制粘贴执行(替换YOUR-VOL-ID和REGION):

#!/bin/bash
VOL_ID="vol-0abcdef1234567890"
REGION="us-east-1"

aws ec2 create-tags --resources $VOL_ID --tags Key=Backup,Value=Daily --region $REGION
aws dlm create-lifecycle-policy \
  --description "Daily backup for $VOL_ID" \
  --state ENABLED \
  --execution-roles arn:aws:iam::123456789012:role/EC2-Snapshot-Manager \
  --resource-types VOLUME \
  --target-tags Key=Backup,Value=Daily \
  --schedule-file ./schedule.json

② CloudFormation模板:一键部署整套策略栈
包含IAM角色、策略、标签规则,支持参数化输入Region/RetentionDays/TagKey。模板已测试通过,链接就不给了——真要的话,评论区扣“CFN”,我私你(开玩笑的,其实就在AWS官方Sample库里搜dlm-snapshot-policy)。

最后说句实在话:自动化不是消灭运维,而是把人从重复劳动里解放出来,去干更有意思的事——比如研究怎么用快照+Lambda做秒级故障自愈,或者给老板画一张“我们的RPO=0,RTO<30s”的架构图。

AWS日本账号 毕竟,技术存在的意义,从来不是让我们更忙,而是让我们更自由。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系