You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS EBS备份或快照任务前执行自定义Bash脚本?

在EBS备份前运行自定义Bash脚本的解决方案

针对你需要在EBS快照或AWS Backup执行前运行冻结应用脚本的需求,以下是两种服务对应的实现方案:

一、AWS EBS快照的实现方式

1. 封装脚本+CloudWatch Events触发

  • 先把你的冻结脚本放到EC2实例的固定路径,比如/opt/scripts/freeze-app.sh,赋予执行权限:
    chmod +x /opt/scripts/freeze-app.sh
    
  • 编写一个整合脚本,依次完成冻结、创建快照、解冻操作(解冻步骤必须存在,否则应用会持续无法写入):
    #!/bin/bash
    # 执行应用冻结
    /opt/scripts/freeze-app.sh freeze
    
    # 为目标EBS卷创建快照(替换为你的卷ID和描述)
    aws ec2 create-snapshot --volume-id vol-0123456789abcdef0 --description "Pre-freeze backup for memory-based app"
    
    # 可选:等待快照初始化完成,确保磁盘写入已落盘
    sleep 10
    
    # 解冻应用,恢复写入
    /opt/scripts/freeze-app.sh thaw
    
  • 给EC2实例绑定具备ec2:CreateSnapshot权限的IAM角色,无需在实例内存储AWS凭证。
  • 通过CloudWatch Events(EventBridge)创建定时规则,使用SSM Agent执行上述整合脚本,实现定期自动备份。

2. SSM自动化文档

创建一个SSM自动化文档,将冻结、快照创建、解冻的步骤标准化,然后通过EventBridge定时触发文档执行。这种方式自带执行日志,便于后续排查问题。

二、AWS Backup服务的实现方式

AWS Backup没有原生的预备份脚本执行功能,但可以通过SSM Automation间接实现:

  • 创建SSM自动化文档,包含以下步骤:
    1. 通过SSM Run Command在EC2实例内执行冻结脚本
    2. 调用AWS Backup API触发指定备份计划的任务
    3. 轮询备份任务状态,确认任务启动或完成
    4. 再次通过SSM Run Command执行解冻脚本
  • 用EventBridge定时触发这个SSM自动化文档,替代AWS Backup的原生定时计划。

关键注意事项

  • 必须在脚本中加入解冻逻辑,防止应用长期处于冻结状态导致业务中断。
  • 测试冻结脚本的执行时长,确保在备份操作启动前完成磁盘写入落盘。
  • 为EC2实例的IAM角色配置足够权限:包括SSM执行权限、EC2快照权限、AWS Backup相关权限。
  • 建议在脚本中添加日志记录,比如将输出写入/var/log/backup-pre-freeze.log,方便问题排查。

内容的提问来源于stack exchange,提问作者rfg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:10:29