是否可以使用AWS SDK以编程方式将Amazon AMI图像共享给其他用户

时间:2013-12-18 18:11:15

标签: amazon-web-services amazon-ec2 ami

是否可以使用AWS SDK共享AMI?我知道我可以使用AWS控制台或CLI共享AMI映像,如http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html中所述。 我搜索了AWS文档,但是我找不到任何允许您使用AWS SDK共享AMI的文档/示例。它有可能吗?

编辑:此外,是否可以将AMI图像共享给其他IAM用户?

2 个答案:

答案 0 :(得分:1)

在您想要关注您提供的链接的AMI(或亚马逊图像)上修改和归属是正确的。 (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ModifyImageAttribute.html

EC2的AMI部分仅允许您创建最小权限。一个是给予AWS账户ID的权限,通常类似于:123456789012。请注意,帐户ID与AWS账户的主要或主要用户相关联(例如您的电子邮件地址)。它允许你做的另一种类型的权限是组权限,但看起来亚马逊还没有实现它,因为组的唯一值允许是all

AIM为主要帐户ID(或主电子邮件地址)层次结构以下的用户提供更精细的权限访问。

现在,要使用AIM为Amazon Images(AMI)授予权限,您需要将AIM策略与具有AMI权限的用户或组相关联。例如:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1388772918000",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateImage",
        "ec2:DeregisterImage"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:123456789012:instance/*",
        "arn:aws:ec2:us-east-1:123456789012:image/*"
      ]
    }
  ]
}

此政策授予在帐户ID us-east-1 123456789012下的所有实例和图片上创建和取消注册和图像的权限。

您也可以通过编程方式完成上述所有操作。

[编辑]

这是来自http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-ec2的可能的EC2 ARN值列表:

arn:aws:ec2:region:account:instance/instance-id
arn:aws:iam::account:instance-profile/instance-profile-name
arn:aws:ec2:region:account:placement-group/placement-group-name
arn:aws:ec2:region::snapshot/snapshot-id
arn:aws:ec2:region:account:volume/volume-id

答案 1 :(得分:0)

绝对。例如,查看boto.ec2.image类。 (蟒蛇sdk)

http://boto.readthedocs.org/en/latest/ref/ec2.html#module-boto.ec2.image

我确信ruby,js和java SDK也可以使用AWS API。

事实上,cli也使用API​​。

此处还有关于如何创建图像的EC2 API参考。

http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateImage.html

是的,您可以根据用户的AIM政策与其他用户共享AMI。