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

手动通过AWS CLI创建AMI时快照命名及自动删除问题求助

解决AWS CLI手动创建AMI时快照无标签/名称及自动删除问题

一、给自动生成的快照添加标签

AWS CLI的create-image命令默认仅为AMI本身添加标签,不会自动将标签同步到关联的快照,必须显式指定快照的标签配置。修改你的命令,在--tag-specifications中同时包含image和snapshot两种资源类型:

aws ec2 create-image \
    --instance-id i-0e3a7bXXXXXXXXXX \
    --name "EXT-XXXXXX-01" \
    --description "1052024" \
    --tag-specifications 'ResourceType=image,Tags=[{Key=Name,Value=EXT-XXXXX-01}]' 'ResourceType=snapshot,Tags=[{Key=Name,Value=EXT-XXXXX-01-SNAP},{Key=BackupType,Value=Manual},{Key=Description,Value="1052024 AMI Backup Snapshot"}]' \
    --no-reboot
  • 这里为快照指定了Name标签(后缀加-SNAP区分)、BackupType和Description标签,你可以根据需求调整标签键值对。

二、实现快照的按需自动删除

手动创建的AMI及关联快照,无法直接通过生命周期策略自动清理,但可以通过以下两种方式实现按需删除:

方式1:CLI脚本批量清理

如果需要一次性清理指定标签的旧AMI和快照,可以编写如下脚本逻辑:

  1. 筛选出目标标签的AMI(例如BackupType=Manual且创建时间超过N天):
OLD_AMIS=$(aws ec2 describe-images --owners self --filters "Name=tag:BackupType,Values=Manual" "Name=creation-date,Values=<$DATE_THRESHOLD" --query 'Images[*].ImageId' --output text)
  1. 注销这些AMI:
for AMI in $OLD_AMIS; do
    aws ec2 deregister-image --image-id $AMI
done
  1. 筛选出关联的快照(通过标签匹配)并删除:
OLD_SNAPSHOTS=$(aws ec2 describe-snapshots --owner self --filters "Name=tag:BackupType,Values=Manual" "Name=start-time,Values=<$DATE_THRESHOLD" --query 'Snapshots[*].SnapshotId' --output text)
for SNAP in $OLD_SNAPSHOTS; do
    aws ec2 delete-snapshot --snapshot-id $SNAP
done

方式2:CloudWatch Events + Lambda 定时清理

如果需要定期自动清理,可以:

  • 创建Lambda函数,编写代码(Python/Node.js均可),逻辑同上:筛选指定标签的旧AMI和快照,先注销AMI再删除快照。
  • 配置CloudWatch Events规则,设置定时触发(例如每周日凌晨),调用该Lambda函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 06:31:16