将AMI从单独的帐户复制到单独的区域

时间:2014-01-15 02:38:37

标签: php amazon-web-services amazon-ec2 aws-php-sdk

我一直在尝试将AMI从我的AWS账户A(ap-southeast-2)迁移到账户B(us-east-1)。

在我的帐户中,我已将启动权限授予我的帐户A.

但是,当我在代码下面运行时,

$result = $this->destination_ec2_client->copyImage(
          array(
               'SourceRegion' => $this->source_region,
               'SourceImageId' => $image_id,
               'Name' => $amis[0]['Name']
          ));

当我通过文档运行上面的代码时,调用应该从源区域复制AMI并将其复制到目标区域。

但是,最终输出是错误的。错误在AMI描述失败的控制台上显示。

State Reason: AMI ownership mismatch

有什么想法?我是否正确理解了这种机制?

2 个答案:

答案 0 :(得分:5)

AWS CLI在帐户之间具有相同的复制图像限制。这就是我如何解决它:

$ aws ec2 run-instances --image-id $SHAREDAMI --instance-type c3.large  --user-data '#!/bin/bash
> poweroff'

上述实例停止后:

$ aws ec2 create-image --instance-id $IDFROMRUN --name "Image from other accounts AMI"

现在可以在您的区域之间复制生成的AMI。例:

$ aws --region us-west-1 ec2 copy-image --source-region us-east-1 --source-image-id $AMIFROMCREATE --name "Copy of Image from other accounts AMI"

答案 1 :(得分:0)

AFAIK,AMI副本无法跨帐户工作。

您可能希望首先根据帐户A(ap-southeast-2)上的AMI在帐户B(ap-southeast-2)上创建AMI。

确保将帐户A上的AMI权限设置为public。然后你可以在帐户B上启动一个实例,然后根据该实例创建和AMI(ap-southeast-2)

然后在帐户B上,您可以运行脚本将AMI从ap-southeast-2复制到us-east-1

希望这有帮助。