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

已知EC2控制台可创建,如何用AWS CLI/API从EBS快照生成AMI?

从EBS快照通过CLI创建AMI的方法

别担心,完全可以实现!你找错命令啦——aws ec2 copy-image是用来复制已有的AMI的,而从EBS快照创建AMI得用aws ec2 register-image命令,这才是正确的姿势。

核心命令示例

你需要通过指定块设备映射来关联EBS快照,下面是一个基础的命令模板:

aws ec2 register-image \
    --name "自定义AMI名称" \
    --description "从EBS快照创建的CLI生成AMI" \
    --architecture x86_64 \ # 或者arm64,和快照对应的实例架构一致
    --root-device-name "/dev/sda1" \ # 根设备名,根据原实例调整,比如Amazon Linux常用/dev/xvda
    --block-device-mappings '[{"DeviceName": "/dev/sda1", "Ebs": {"SnapshotId": "snap-你的快照ID"}}]'

参数解释

  • --name:给你的AMI起个好记的名字,必填项
  • --description:可选,添加一些描述信息方便后续识别
  • --architecture:必须和快照对应的源实例架构匹配,否则会创建失败
  • --root-device-name:根卷的设备名称,你可以通过aws ec2 describe-snapshots --snapshot-id snap-xxx查看快照关联的原实例设备信息,或者回忆原实例的根设备名
  • --block-device-mappings:这是核心参数,用来指定每个EBS卷对应的快照。如果你的源实例有多个EBS卷,只需要在数组里添加更多条目即可,比如:
    '[{"DeviceName": "/dev/sda1", "Ebs": {"SnapshotId": "snap-xxxx"}}, {"DeviceName": "/dev/sdb", "Ebs": {"SnapshotId": "snap-yyyy"}}]'
    

注意事项

  • 确保你的AWS CLI配置了正确的权限(至少需要ec2:RegisterImage权限)
  • 快照必须和你要创建AMI的区域一致,如果需要跨区域,先使用aws ec2 copy-snapshot把快照复制到目标区域,再执行注册命令
  • 如果源实例使用了实例存储卷(非EBS),这种情况无法仅通过EBS快照创建完整AMI,因为实例存储的数据不会存在快照里

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:22:38