将 AMI 设为公用 - Amazon Elastic Compute Cloud
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将 AMI 设为公用

Amazon EC2 使您能与其他 AWS 账户共享您的 AMI。您可以允许所有 AWS 账户使用 AMI 启动实例(通过将 AMI 设为公用),或者仅允许少数特定账户使用 AMI 启动实例(请参阅 特定 AWS 共享共享 AMI)。当您的 AMI 被其他 AWS 账户用于启动实例时,不会向您计费;只有使用 AMI 启动实例的账户才会按其启动的实例计费。

无法公开带有加密卷的 AMI。

AMI 是一种区域性资源。因此,共享 AMI 可使其能够在其他区域使用。要使 AMI 能够在其他区域使用,请将该 AMI 复制到该区域并进行共享。有关更多信息,请参阅 复制 AMI

要避免在共享 AMI 时泄露敏感数据,请阅读共享 Linux AMI 指导原则中的安全注意事项并遵循建议的操作。

如果 AMI 具有产品代码,或包含加密卷的快照,则无法将其设为公用;只能与特定 AWS 账户共享该 AMI。

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

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

使用控制台共享公用 AMI

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

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

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

  4. 选择 Public,然后选择 Save

与所有 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}]"