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

如何跨AWS账户迁移默认KMS密钥加密的AMI?

AWS托管默认KMS密钥加密AMI跨账户迁移方案

AWS托管的默认KMS密钥(如aws/ebs)不支持跨账户共享权限,这是你共享AMI时报错的核心原因——默认密钥的策略无法添加其他AWS账户的访问主体。以下是三种可行的迁移/复制方法:

方法一:复制AMI到自定义KMS密钥加密版本后共享

这是最常用的方案,通过替换加密密钥绕过默认密钥的限制:

  • 源账户创建对称式KMS密钥(需选择EBS适用的密钥类型),在密钥策略中添加目标账户的IAM实体(用户/角色)权限,允许其执行kms:Decrypt、kms:CreateGrant等操作。
  • 在源账户复制原AMI,指定用刚创建的自定义KMS密钥加密新AMI:
    aws ec2 copy-image --source-region <源区域> --source-image-id <原AMI ID> --region <目标区域> --name "Copied-AMI-for-target" --encrypted --kms-key-id <自定义KMS密钥ARN>
    
  • 将复制后的新AMI共享给目标账户:
    aws ec2 modify-image-attribute --image-id <新AMI ID> --launch-permission "Add=[{UserId=<目标账户ID>}]"
    
  • 目标账户接受共享AMI后,可选择再次复制到自身账户的KMS密钥下,彻底脱离对源账户密钥的依赖。

方法二:通过S3导出/导入中转

适合需要完全脱离源账户资源依赖的场景:

  • 源账户中,从原AMI启动临时实例,将实例导出为S3存储的镜像文件:
    aws ec2 create-instance-export-task --instance-id <临时实例ID> --target-environment vmware --export-to-s3-task "DiskImageFormat=VMDK,ContainerFormat=ova,S3Bucket=<你的S3桶名>,S3Prefix=ami-export/"
    
    (需提前给S3桶配置权限,允许目标账户访问桶内的导出文件)
  • 目标账户将S3中的镜像文件导入为AMI:
    aws ec2 import-image --description "Imported AMI from source" --disk-containers "UserBucket={S3Bucket=<源账户S3桶名>,S3Key=ami-export/xxx.ova}" --encrypted --kms-key-id <目标账户KMS密钥ARN>
    

方法三:重新基于实例创建自定义密钥加密的AMI

如果原AMI对应可启动的实例,可通过实例换卷加密后重新制AMI:

  • 源账户从原AMI启动实例,启动时指定用自定义KMS密钥加密根卷(及附加卷)。
  • 实例启动完成后,创建新的AMI,该AMI的所有卷将使用自定义KMS密钥加密。
  • 后续共享、迁移操作同方法一。

注意事项

  • 自定义KMS密钥的权限配置必须精准,确保目标账户能正常执行复制/解密操作。
  • 跨区域迁移时,需确保KMS密钥支持跨区域访问(可使用多区域密钥或在目标区域复制密钥)。
  • 导出/导入方法耗时较长,更适合少量AMI的迁移场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:50:16