如何将Packer创建的自定义AMI从一个AWS账户复制到另一个?
跨AWS账户复制AMI的实现步骤
要把源账户的自定义AMI复制到目标账户,需要分两步操作:先给目标账户授权复制权限,再在目标账户环境下执行复制命令,具体如下:
1. 在源账户中授权目标账户访问AMI
使用aws ec2 modify-image-attribute命令,给目标账户ID添加该AMI的复制权限:
aws ec2 modify-image-attribute --image-id "${AMI_ID}" --region "us-west-2" --launch-permission "Add=[{UserId=目标账户的AWS账户ID}]"
注意:替换命令中的目标账户的AWS账户ID为实际的12位数字账户ID
2. 在目标账户环境下执行复制命令
切换到目标账户的AWS CLI配置(可以通过aws configure重新配置,或者使用--profile指定目标账户的配置文件),然后执行你原本的copy-image命令:
aws ec2 copy-image --name "${AMI_Name}" --source-image-id "${AMI_ID}" --source-region "us-west-2" --copy-image-tags
此时因为你是以目标账户的身份执行命令,复制后的AMI会直接保存到目标账户中,无需在命令里额外指定目标账户信息。
补充:如果源AMI是加密的情况
如果源AMI使用了AWS KMS加密,还需要额外操作:
- 在源账户的KMS密钥策略中,添加目标账户的访问权限(允许
kms:Decrypt和kms:ReEncrypt*操作) - 在目标账户执行复制命令时增加参数:
aws ec2 copy-image --name "${AMI_Name}" --source-image-id "${AMI_ID}" --source-region "us-west-2" --copy-image-tags --encrypted --kms-key-id "目标账户的KMS密钥ARN"
内容的提问来源于stack exchange,提问作者Tarvez Khan
相关产品推荐
相关产品推荐

