将 AMI 设为公用 - Amazon Elastic Compute Cloud

将 AMI 设为公用

您能与其它AWS账户共享您的 AMI。要允许所有AWS账户使用 AMI 启动实例,请将 AMI 设为公有。要仅允许特定账户使用 AMI 启动实例,请参阅 特定 AWS 共享共享 AMI

注意事项

在将 AMI 设为公用之前,请考虑以下事项。

  • 有些 AMI 无法设为公用 – 如果您的 AMI 包含以下组件之一,则无法将其设为共用(但您可以将该 AMI 与特定 AWS 账户共享):

    • 加密卷

    • 加密卷的快照

    • 产品代码

  • 区域 – AMI 是一种区域性资源。当您共享 AMI 时,则它只能在您共享该 AMI 的区域使用。要使 AMI 能够在其他区域使用,请将该 AMI 复制到该区域并进行共享。有关更多信息,请参阅复制 AMI

  • 使用 – 当您共享 AMI 时,用户只能从该 AMI 启动实例。他们无法删除、共享或修改实例。但是,在他们使用您的 AMI 启动实例后,他们可以从其启动的实例创建 AMI。

  • 自动弃用 – 我们发布了一项新功能,默认情况下,所有公用 AMI 的弃用日期设置为自 AMI 创建日期起的两年。最初,所有两年以上的公有 AMI 将在 2022 年 7 月 30 日弃用。您可以将弃用日期设置为早于两年。要取消弃用日期,或将弃用移至未来某一日期,您必须通过仅将 AMI 与特定 AWS 账户共享来将其设为私有。

  • 账单 – 当其它AWS账户使用您的 AMI 启动实例时,您无需付费。使用 AMI 启动实例的账户将为它们启动的实例付费。

与所有 AWS 账户共享 AMI(控制台)

将 AMI 设置为公有后,当您使用控制台在相同区域启动实例时,Community AMIs (社区 AMI) 中会出现该 AMI。请注意,将某个 AMI 设置为公用之后,可能需要一点时间 Community AMIs 中才会显示该 AMI。在将 AMI 设为私有后,也可能需要一点时间才能将它从 Community AMIs(社群 AMI)中删除。

New console

使用控制台共享公用 AMI

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 AMIs

  3. 从列表中选择您的 AMI,然后选择 Actions(操作)、Edit AMI permissions(编辑 AMI 权限)。

  4. 选择 Public(公有),然后选择 Save changes(保存更改)。

Old console

使用控制台共享公用 AMI

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 AMIs

  3. 从列表中选择您的 AMI,然后选择 ActionsModify Image Permissions

  4. 选择 Public(公有),然后选择 Save(保存)。

与所有AWS账户共享 AMI (Tools for Windows PowerShell)

每个 AMI 都有一个 launchPermission 属性,用于控制允许哪些 AWS 账户(除拥有者账户外)使用该 AMI 启动实例。通过修改 AMI 的 launchPermission 属性,可以将该 AMI 设为公用(这会向所有 AWS 账户授予启动许可),或仅将其与您指定的 AWS 账户共享。

可以在具有 AMI 启动许可的账户的列表中添加或删除账户 ID。要将 AMI 设为公有,请指定 all 组。公用和显式启动许可都可以指定。

将 AMI 设为公用

  1. 使用 Edit-EC2ImageAttribute 命令可以将 all 组添加到指定 AMI 的 launchPermission 列表中,如下所示。

    PS C:\> Edit-EC2ImageAttribute -ImageId ami-0abcdef1234567890 -Attribute launchPermission -OperationType add -UserGroup all
  2. 要验证 AMI 的启动许可,请使用以下 Get-EC2ImageAttribute 命令。

    PS C:\> Get-EC2ImageAttribute -ImageId ami-0abcdef1234567890 -Attribute launchPermission
  3. (可选)要再次将 AMI 设为私有,请从其启动许可中删除 all 组。请注意,AMI 的拥有者始终具有启动许可,因此不受该命令影响。

    PS C:\> Edit-EC2ImageAttribute -ImageId ami-0abcdef1234567890 -Attribute launchPermission -OperationType remove -UserGroup all

与所有 AWS 账户共享 AMI (AWS CLI)

每个 AMI 都有一个 launchPermission 属性,用于控制允许哪些 AWS 账户(除拥有者账户外)使用该 AMI 启动实例。通过修改 AMI 的 launchPermission 属性,可以将该 AMI 设为公用(这会向所有 AWS 账户授予启动许可),或仅将其与您指定的 AWS 账户共享。

可以在具有 AMI 启动许可的账户的列表中添加或删除账户 ID。要将 AMI 设为公有,请指定 all 组。公用和显式启动许可都可以指定。

将 AMI 设为公用

  1. 使用 modify-image-attribute 命令可将 all 组添加到指定 AMI 的 launchPermission 列表,如下所示。

    aws ec2 modify-image-attribute \ --image-id ami-0abcdef1234567890 \ --launch-permission "Add=[{Group=all}]"
  2. 要验证 AMI 的启动许可,请使用 describe-image-attribute 命令。

    aws ec2 describe-image-attribute \ --image-id ami-0abcdef1234567890 \ --attribute launchPermission
  3. (可选)要再次将 AMI 设为私有,请从其启动许可中删除 all 组。请注意,AMI 的拥有者始终具有启动许可,因此不受该命令影响。

    aws ec2 modify-image-attribute \ --image-id ami-0abcdef1234567890 \ --launch-permission "Remove=[{Group=all}]"