Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
将 AMI 设为公用
您可以通过向所有 Amazon Web Services 账户 共享来公开您的 AMI。
如果您想阻止公开共享您的 AMI,可以启用阻止 AMI 的公开访问。这可以阻止任何公开 AMI 的尝试,从而有助于防止未经授权的访问和对 AMI 数据的潜在滥用。请注意,启用阻止公开访问不会影响已经公开提供的 AMI;它们仍然公开可用。
要仅允许特定账户使用您的 AMI 启动实例,请参阅 与特定 Amazon 账户共享 AMI。
注意事项
在将 AMI 设为公用之前,请考虑以下事项。
-
所有权 – 若要将 AMI 设为公有,您的 Amazon Web Services 账户 必须拥有 AMI。
-
区域 – AMI 是一种区域性资源。当您共享 AMI 时,则它只能在您共享该 AMI 的区域使用。要使 AMI 能够在其他区域使用,请将该 AMI 复制到该区域并进行共享。有关更多信息,请参阅复制 AMI。
-
阻止公开访问 – 要公开共享 AMI,必须在 AMI 公开共享的每个区域禁用阻止 AMI 的公开访问。公开共享 AMI 后,您可以重新启用阻止 AMI 的公开访问功能,以防止进一步公开共享您的 AMI。
-
有些 AMI 无法设为公共 – 如果您的 AMI 包含以下组件之一,则无法将其设为公共(但您可以将 AMI 与特定 Amazon Web Services 账户 账户共享):
-
使用 – 当您共享 AMI 时,用户只能从该 AMI 启动实例。他们无法删除、共享或修改实例。但是,在他们使用您的 AMI 启动实例后,他们可以从其启动的实例创建 AMI。
-
自动弃用 – 默认情况下,所有公有 AMI 的弃用日期均设置为自 AMI 创建日期起 2 年。您可以将弃用日期设置为早于两年。要取消弃用日期,或将弃用移至未来某一日期,您必须通过仅将 AMI 与特定 Amazon Web Services 账户 共享来将其设为私有。
-
账单 – 当其他 Amazon Web Services 账户 使用您的 AMI 启动实例时,您无需付费。使用 AMI 启动实例的账户将为它们启动的实例付费。
与所有 Amazon 账户共享 AMI(公开共享)
将 AMI 设为公开后,它将在控制台的社区 AMI 中可用,您可以从 EC2 控制台左侧导航器的 AMI 目录中访问此 AMI,或者在使用控制台启动实例时访问该 AMI。请注意,将某个 AMI 设置为公用之后,可能需要一点时间 Community AMIs 中才会显示该 AMI。
- New console
-
将 AMI 设为公用
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/。
-
在导航窗格中,选择 AMIs。
-
从列表中选择您的 AMI,然后选择 Actions(操作)、Edit AMI permissions(编辑 AMI 权限)。
-
在 AMI 可用性下,选择公开。
-
选择 Save changes(保存更改)。
- Old console
-
- Tools for Windows PowerShell
-
每个 AMI 都有一个 launchPermission
属性,用于控制允许哪些 Amazon Web Services 账户(包括拥有者账户在内)使用该 AMI 启动实例。通过修改 AMI 的 launchPermission
属性,可以将该 AMI 设为公共(这会向所有 Amazon Web Services 账户 授予启动权限),或仅将其与您指定的 Amazon Web Services 账户 共享。
可以在具有 AMI 启动许可的账户的列表中添加或删除账户 ID。要将 AMI 设为公有,请指定 all
组。公用和显式启动许可都可以指定。
将 AMI 设为公用
-
使用 Edit-EC2ImageAttribute 命令可以将 all
组添加到指定 AMI 的 launchPermission
列表中,如下所示。
PS C:\>
Edit-EC2ImageAttribute -ImageId ami-0abcdef1234567890
-Attribute launchPermission -OperationType add -UserGroup all
-
要验证 AMI 的启动权限,请使用以下 Get-EC2ImageAttribute 命令。
PS C:\>
Get-EC2ImageAttribute -ImageId ami-0abcdef1234567890
-Attribute launchPermission
-
(可选)要再次将 AMI 设为私有,请从其启动许可中删除 all
组。请注意,AMI 的拥有者始终具有启动许可,因此不受该命令影响。
PS C:\>
Edit-EC2ImageAttribute -ImageId ami-0abcdef1234567890
-Attribute launchPermission -OperationType remove -UserGroup all
- Amazon CLI
-
每个 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}]"
阻止公开访问您的 AMI
要防止公开共享您的 AMI,您可以启用阻止公开访问 AMI 功能。此设置已在账户级别启用,但您需要在每个希望防止公开共享 AMI 的 Amazon Web Services 区域 中启用此设置。
启用阻止公开访问后,任何将 AMI 设为公开的尝试都会被自动阻止。但是,如果您已经有公开 AMI,它们将保持公开状态。
如果您想公开共享 AMI,则需要禁用阻止公开访问。共享完成后,最佳实践是重新启用阻止公开访问功能,以防止意外地公开共享您的 AMI。
您可以将 IAM 权限限制为管理员用户,这样只有此类用户可启用或禁用阻止 AMI 的公开访问。
默认设置
根据您的账户是新账户还是现有账户,以及您是否拥有公用 AMI,默认启用或禁用阻止公开访问 AMI 设置。下表列出了默认设置:
拥有Amazon账户 |
“阻止公开访问 AMI”默认设置 |
新账户 |
启用 |
没有公用 AMI 的现有账户¹
|
启用 |
有一个或多个公用 AMI 的现有账户¹
|
已禁用 |
¹如果您的账户在 2023 年 7 月 15 日当天或之后拥有一个或多个公用 AMI,那么即使您随后将所有 AMI 设为私有,系统仍会为您的账户默认禁用阻止公开访问 AMI。
所需的 IAM 权限
要使用阻止公开访问 AMI 功能,您必须拥有以下 IAM 权限:
-
EnableImageBlockPublicAccess
-
DisableImageBlockPublicAccess
-
GetImageBlockPublicAccessState
启用阻止公开访问 AMI
要防止公开共享您的 AMI,请在账户级别启用阻止公开访问 AMI。您必须在要阻止公开共享 AMI 的每个 Amazon Web Services 区域 中启用阻止公开访问 AMI。如果您已经有公开 AMI,它们将保持公开状态。
- Console
-
在指定区域中启用阻止公开访问 AMI
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/。
-
在导航栏(位于屏幕顶部)中,选择启用阻止公开访问 AMI 的区域。
-
如果未显示控制面板,则在导航窗格中选择 EC2 控制面板。
-
在账户属性下,选择数据保护和安全。
-
在阻止公开访问 AMI 下,选择管理。
-
选择阻止新的公开共享复选框,然后选择更新。
API 最多可能需要 10 分钟来配置此设置。在此期间,值将为允许新的公开共享。API 完成配置后,该值将自动更改为已阻止新的公共共享。
- Amazon CLI
-
在指定区域中启用阻止公开访问 AMI
使用 enable-image-block-public-access 命令并指定要启用阻止公开访问 AMI 的区域。对于 --image-block-public-access-state
参数,请指定 block-new-sharing
。
aws ec2 enable-image-block-public-access \
--region us-east-1
\
--image-block-public-access-state block-new-sharing
预期输出
{
"ImageBlockPublicAccessState": "block-new-sharing"
}
禁用阻止公开访问 AMI
要允许您账户中的用户公开共享您的 AMI,请在账户级别禁用阻止公开访问。在要允许公开共享 AMI 的每个 Amazon Web Services 区域 中,您都必须禁用阻止公开访问 AMI。
- Console
-
在指定区域禁用阻止公开访问 AMI
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/。
-
在导航栏(位于屏幕顶部)中,选择禁用阻止公开访问 AMI 的区域。
-
如果未显示控制面板,则在导航窗格中选择 EC2 控制面板。
-
在账户属性下,选择数据保护和安全。
-
在阻止公开访问 AMI 下,选择管理。
-
清除阻止新的公开共享复选框,然后选择更新。
-
提示进行确认时,输入 confirm
,然后选择允许公开共享。
API 最多可能需要 10 分钟来配置此设置。在此期间,值将为已阻止新的公开共享。API 完成配置后,该值将自动更改为已允许新的公共共享。
- Amazon CLI
-
在指定区域禁用阻止公开访问 AMI
使用 disable-image-block-public-access 命令并指定要禁用阻止公开访问 AMI 的区域。
aws ec2 disable-image-block-public-access --region us-east-1
预期输出
{
"ImageBlockPublicAccessState": "unblocked"
}
查看 AMI 的阻止公共访问状态
要查看您的账户中是否禁止公开共享 AMI,您可以查看 AMI 的阻止公开访问状态。您必须在每个希望了解是否阻止 AMI 公开共享的 Amazon Web Services 区域 中查看此状态。
- Console
-
查看指定区域中 AMI 的阻止公开访问状态
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/。
-
在导航栏(位于屏幕顶部)中,选择查看 AMI 的阻止公开访问状态的区域。
-
如果未显示控制面板,则在导航窗格中选择 EC2 控制面板。
-
在账户属性下,选择数据保护和安全。
-
在阻止公开访问 AMI 下,选中公开访问字段。值为已阻止新的公开共享或已允许新的公开共享。
- Amazon CLI
-
获取指定区域中 AMI 的阻止公开访问状态
使用 get-image-block-public-access-state 命令并指定要获取 AMI 的阻止公开访问 状态的区域。
aws ec2 get-image-block-public-access-state --region us-east-1
预期输出 – 值为 block-new-sharing
或 unblocked
。
{
"ImageBlockPublicAccessState": "block-new-sharing"
}