将 AMI 设为公用
您能与其他 Amazon Web Services 账户 共享您的 AMI。要允许所有 Amazon Web Services 账户 使用 AMI 启动实例,请将该 AMI 设为公共。要仅允许特定账户使用 AMI 启动实例,请参阅 与特定 Amazon 账户共享 AMI。
注意事项
在将 AMI 设为公用之前,请考虑以下事项。
-
所有权 – 若要将 AMI 设为公有,您的 Amazon Web Services 账户 必须拥有 AMI。
-
有些 AMI 无法设为公共 – 如果您的 AMI 包含以下组件之一,则无法将其设为公共(但您可以将 AMI 与特定 Amazon Web Services 账户 账户共享):
-
加密卷
-
加密卷的快照
-
产品代码
-
-
避免泄露敏感数据 – 要避免在共享 AMI 时泄露敏感数据,请阅读 共享 Linux AMI 指导原则 中的安全注意事项并遵循建议的操作。
-
区域 – AMI 是一种区域性资源。当您共享 AMI 时,则它只能在您共享该 AMI 的区域使用。要使 AMI 能够在其他区域使用,请将该 AMI 复制到该区域并进行共享。有关更多信息,请参阅复制 AMI。
-
使用 – 当您共享 AMI 时,用户只能从该 AMI 启动实例。他们无法删除、共享或修改实例。但是,在他们使用您的 AMI 启动实例后,他们可以从其启动的实例创建 AMI。
-
自动弃用 – 默认情况下,所有公有 AMI 的弃用日期均设置为自 AMI 创建日期起 2 年。您可以将弃用日期设置为早于两年。要取消弃用日期,或将弃用移至未来某一日期,您必须通过仅将 AMI 与特定 Amazon Web Services 账户 共享来将其设为私有。
-
账单 – 当其他 Amazon Web Services 账户 使用您的 AMI 启动实例时,您无需付费。使用 AMI 启动实例的账户将为它们启动的实例付费。
与所有 Amazon 账户共享 AMI(控制台)
将 AMI 设置为公有后,当您使用控制台在相同区域启动实例时,Community AMIs (社区 AMI) 中会出现该 AMI。请注意,将某个 AMI 设置为公用之后,可能需要一点时间 Community AMIs 中才会显示该 AMI。在将 AMI 设为私有后,也可能需要一点时间才能将它从 Community AMIs(社群 AMI)中删除。
与所有 Amazon Web Services 账户(Amazon CLI)共享 AMI
每个 AMI 都有一个 launchPermission
属性,用于控制允许哪些 Amazon Web Services 账户(包括拥有者账户在内)使用该 AMI 启动实例。通过修改 AMI 的 launchPermission
属性,可以将该 AMI 设为公共(这会向所有 Amazon Web Services 账户 授予启动权限),或仅将其与您指定的 Amazon Web Services 账户 共享。
可以在具有 AMI 启动许可的账户的列表中添加或删除账户 ID。要将 AMI 设为公有,请指定 all
组。公用和显式启动许可都可以指定。
将 AMI 设为公用
-
使用 modify-image-attribute 命令可以将
all
组添加到指定 AMI 的launchPermission
列表中,如下所示。aws ec2 modify-image-attribute \ --image-id
ami-0abcdef1234567890
\ --launch-permission "Add=[{Group=all}]" -
要验证 AMI 的启动权限,请使用 describe-image-attribute 命令。
aws ec2 describe-image-attribute \ --image-id
ami-0abcdef1234567890
\ --attribute launchPermission -
(可选)要再次将 AMI 设为私有,请从其启动许可中删除
all
组。请注意,AMI 的拥有者始终具有启动许可,因此不受该命令影响。aws ec2 modify-image-attribute \ --image-id
ami-0abcdef1234567890
\ --launch-permission "Remove=[{Group=all}]"