【问题标题】:Modify AMI attribute [create volume] via AWS API or CLI通过 AWS API 或 CLI 修改 AMI 属性 [创建卷]
【发布时间】:2016-11-24 17:03:26
【问题描述】:

我从一个 AWS 账户向另一个账户共享了一堆 AMI。

我使用这个EC2conn1.modify_image_attribute(AMI_id, operation='add', attribute='launchPermission', user_ids=[second_aws_account_id]) 来做到这一点。

但是,通过只为第二个账户添加启动权限,我可以启动一个实例,但我无法将共享的 AMI 复制到另一个区域 [在第二个账户中]。

当我从第一个帐户的 UI 中勾选“创建卷”复选框时,我可以从第二个帐户复制共享的 AMI:

我可以使用boto 中的modify_image_attribute 函数修改启动权限。

在文档中说,attribute (string) – The attribute you wish to change 但我知道它只能更改启动权限并添加一个帐户。

然而,get_image_attribute 有 3 个选项 Valid choices are: * launchPermission * productCodes * blockDeviceMapping

那么,有没有办法以编程方式从 API 更改它以及启动权限,或者它还没有实现??

【问题讨论】:

    标签: amazon-web-services amazon-ec2


    【解决方案1】:

    控制台使用 API,因此您几乎可以在控制台中执行任何您无法使用 API 的操作。

    请记住,AMI 只是一个配置实体——基本启动配置,链接到(不包含)一个或多个后备快照,它们在技术上是独立的实体。

    当控制台提供可选的“将创建卷权限添加到以下关联快照”时,几乎可以肯定控制台会向ModifySnapshotAttribute API 发出额外的 API 请求。

    另见http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html

    据推测,将快照复制到另一个区域依赖于相同的“创建卷”权限(实际上,您会看到复制的快照具有虚假的源卷 ID,可能是复制过程的产物)。

    【讨论】:

    • 谢谢,我不知道这些细节,它帮助我找到了正确的方向。事实上,我错过了一个我需要通过单独的 API 调用来完成的步骤。我将发布我的代码以供参考..
    【解决方案2】:

    根据接受的答案,这是我为任何感兴趣的人编写的代码。

    # Add copy permission to the image's snapshot
    # Find the snapshot of the specific AMI
    image_object = EC2conn.get_image(AMI_id)
    
    # Grab the block device mapping dynamically
    ami_devices = []
    for key in image_object.block_device_mapping.iterkeys():
        # print key #debug
        ami_devices.append(key)
    # print ami_devices #debug
    
    for ami_device in ami_devices:
        snap_id = image_object.block_device_mapping[ami_device].snapshot_id
    
        # Add permission
        EC2conn.modify_snapshot_attribute(snap_id, attribute='createVolumePermission', operation='add', user_ids=second_aws_account_id)
        print "{0} [{1}] Permission added to snapshot".format(AMI_name,snap_id)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-18
      • 2019-11-05
      • 1970-01-01
      • 2018-07-02
      • 2012-08-17
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      相关资源
      最近更新 更多