创建用于生成EBS快照的EventBridge事件规则的更快捷方法
解决方案
最高效批量操作方案(无需手动逐个添加)
你可以通过AWS CLI + 简单的shell循环,或者Python脚本批量完成目标添加,全程无需控制台手动操作,70个卷1分钟内就能处理完成。
前置准备
- 提前创建好定时触发的EventBridge规则,记录规则名称
- 提前准备好有权限执行
ec2:CreateSnapshot、且信任EventBridge服务的IAM角色ARN - 将你之前导出的70个EBS卷ID保存为
ebs_volumes.txt文件,每行仅写一个卷ID
方案1:Shell + AWS CLI 批量添加
适用于可以直接运行AWS CLI、且有bash/zsh环境的设备,直接执行以下命令即可:
# 先替换为你自己的实际参数 RULE_NAME="你的EventBridge规则名称" IAM_ROLE_ARN="arn:aws:iam::你的账号ID:role/你的角色名称" VOLUME_FILE="./ebs_volumes.txt" REGION="你的AWS资源所属区域" ACCOUNT_ID="你的AWS账号ID" # 循环读取卷ID,逐个添加为规则目标 while read -r VOL_ID; do aws events put-targets \ --rule "$RULE_NAME" \ --region "$REGION" \ --targets "Id=$VOL_ID,Arn=arn:aws:events:$REGION::target/ec2-create-snapshot,RoleArn=$IAM_ROLE_ARN,Ec2Parameters={InstanceArn=arn:aws:ec2:$REGION:$ACCOUNT_ID:volume/$VOL_ID}" done < "$VOLUME_FILE"
验证添加结果
执行以下命令查看已添加的目标总数,确认70个卷都已录入:
aws events list-targets-by-rule --rule "$RULE_NAME" --region "$REGION" --query "length(Targets)"
方案2:更易维护的长期方案(仅需1个EventBridge目标)
如果后续还要新增/删除需要快照的卷,每次批量修改70个目标效率很低,你可以改用Lambda作为唯一目标:
- 创建一个Python运行时的Lambda函数,函数逻辑为读取你指定的卷ID列表,循环调用EC2的CreateSnapshot接口
- 给Lambda函数配置对应的EC2快照创建权限
- 仅在EventBridge规则中添加这一个Lambda作为触发目标即可
后续调整要快照的卷时,只需要修改Lambda内的卷列表,或者直接在代码里按标签筛选符合条件的EBS卷,不用再修改EventBridge规则的目标配置。
内容的提问来源于stack exchange,提问作者Josh Edgar
相关产品推荐
相关产品推荐

