与特定 Amazon 账户共享 AMI
您可以在不将 AMI 设为公共的情况下,与特定 Amazon Web Services 账户 共享 AMI。您需要的只是 Amazon Web Services 账户 ID。
Amazon Web Services 账户 ID 是一个 12 位数字(如 012345678901
),用于唯一标识 Amazon Web Services 账户。有关更多信息,请参阅《Amazon Account Management 参考指南》中的 Viewing Amazon Web Services 账户 identifiers。
注意事项
在与特定 Amazon Web Services 账户 共享 AMI 时,请考虑以下事项。
-
所有权 – 若要共享 AMI,您的 Amazon Web Services 账户 必须拥有 AMI。
-
共享限制 - 有关某一区域内可以共享 AMI 的最大实体数量,请参阅 Amazon EC2 服务限额。
-
标签 – 您无法共享用户定义的标签(附加到 AMI 的标签)。共享 AMI 时,与其共享 AMI 的任何 Amazon Web Services 账户 均无法使用用户定义的标签。
-
加密和密钥 – 您可以共享由未加密和加密快照支持的 AMI。
-
加密快照必须使用 KMS 密钥加密。您无法共享由使用默认 Amazon 托管式密钥加密的快照支持的 AMI。
-
如果您共享由加密快照支持的 AMI,则必须允许 Amazon Web Services 账户 使用用于加密快照的 KMS 密钥。有关更多信息,请参阅 允许企业和 OU 使用 KMS 密钥。要设置在使用客户托管密钥进行加密时启动 Auto Scaling 实例所需的密钥策略,请参阅《Amazon EC2 Auto Scaling 用户指南》中的加密卷所需的 Amazon KMS key 策略。
-
-
区域 – AMI 是一种区域性资源。如果您共享 AMI,则它只能在该区域使用。要使 AMI 能够在其他区域使用,请将该 AMI 复制到该区域并进行共享。有关更多信息,请参阅 复制 Amazon EC2 AMI。
-
使用 – 当您共享 AMI 时,用户只能从该 AMI 启动实例。他们无法删除、共享或修改实例。但是,在他们使用您的 AMI 启动实例后,他们可以从其实例创建 AMI。
-
复制共享 AMI – 如果另一个账户中的用户想复制共享 AMI,则必须向他们授予对支持 AMI 的存储的读取权限。有关更多信息,请参阅 跨账户复制。
-
账单 – 当其他 Amazon Web Services 账户 使用您的 AMI 启动实例时,您无需付费。使用 AMI 启动实例的账户将为它们启动的实例付费。
使用控制台授予显式启动许可
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择 AMI。
-
在列表中选择您的 AMI,然后选择 Actions、然后选择 Edit AMI Permissions。
-
选择私有。
-
在 Shared accounts(共享账户)下,选择 Add account ID(添加账户 ID)。
-
对于 Amazon Web Services 账户 ID,输入要与其共享 AMI 的 Amazon Web Services 账户 ID,然后选择 Share AMI(共享 AMI)。
要与多账户共享此 AMI,请重复此步骤 5 和 6,直至您添加完所需全部账户 ID。
注意
您不需要为了共享 AMI 而共享 AMI 引用的 Amazon EBS 快照。只需共享 AMI 本身;系统自动为实例提供访问所引用 Amazon EBS 快照的权限以便启动。不过,您确实需要共享用于对 AMI 引用的快照加密的所有 KMS 密钥。有关更多信息,请参阅《Amazon EBS 用户指南》中的共享 Amazon EBS 快照。
-
完成后,选择 Save changes(保存更改)。
-
(可选)要查看您已与其共享 AMI 的 Amazon Web Services 账户 ID,请在列表中选择该 AMI,然后选择 Permissions(权限)选项卡。要查找与您共享的 AMI,请参阅查找用于 Amazon EC2 实例的共享 AMI。
使用 modify-image-attribute 命令(Amazon CLI)共享 AMI,如以下示例所示。
要授予显式启动许可
以下命令向指定 Amazon Web Services 账户 授予指定 AMI 的启动权限。在以下示例中,将示例 AMI ID 替换为有效的 AMI ID,并将
替换为 12 位 Amazon Web Services 账户 ID。account-id
aws ec2 modify-image-attribute \ --image-id
ami-0abcdef1234567890
\ --launch-permission "Add=[{UserId=account-id
}]"
注意
您不需要为了共享 AMI 而共享 AMI 引用的 Amazon EBS 快照。只需共享 AMI 本身;系统自动为实例提供访问所引用 Amazon EBS 快照的权限以便启动。不过,您确实需要共享用于对 AMI 引用的快照加密的所有 KMS 密钥。有关更多信息,请参阅《Amazon EBS 用户指南》中的共享 Amazon EBS 快照。
要删除账户的启动许可
以下命令从指定 Amazon Web Services 账户 中移除指定 AMI 的启动权限。在以下示例中,将示例 AMI ID 替换为有效的 AMI ID,并将
替换为 12 位 Amazon Web Services 账户 ID。account-id
aws ec2 modify-image-attribute \ --image-id
ami-0abcdef1234567890
\ --launch-permission "Remove=[{UserId=account-id
}]"
要删除所有的启动许可
以下命令从指定 AMI 中删除所有公用和显式启动许可。请注意,AMI 的拥有者始终具有启动许可,因此不受该命令影响。在以下示例中,将示例 AMI ID 替换为有效的 AMI ID。
aws ec2 reset-image-attribute \ --image-id
ami-0abcdef1234567890
\ --attribute launchPermission
使用 Edit-EC2ImageAttribute 命令(适用于 Windows PowerShell 的工具)共享 AMI,如以下示例所示。
要授予显式启动许可
以下命令向指定 Amazon Web Services 账户 授予指定 AMI 的启动权限。在以下示例中,将示例 AMI ID 替换为有效的 AMI ID,并将
替换为 12 位 Amazon Web Services 账户 ID。account-id
PS C:\>
Edit-EC2ImageAttribute -ImageId
ami-0abcdef1234567890
-Attribute launchPermission -OperationType add -UserId "account-id
"
注意
您不需要为了共享 AMI 而共享 AMI 引用的 Amazon EBS 快照。只需共享 AMI 本身;系统自动为实例提供访问所引用 Amazon EBS 快照的权限以便启动。不过,您确实需要共享用于对 AMI 引用的快照加密的所有 KMS 密钥。有关更多信息,请参阅《Amazon EBS 用户指南》中的共享 Amazon EBS 快照。
要删除账户的启动许可
以下命令从指定 Amazon Web Services 账户 中移除指定 AMI 的启动权限。在以下示例中,将示例 AMI ID 替换为有效的 AMI ID,并将
替换为 12 位 Amazon Web Services 账户 ID。account-id
PS C:\>
Edit-EC2ImageAttribute -ImageId
ami-0abcdef1234567890
-Attribute launchPermission -OperationType remove -UserId "account-id
"
要删除所有的启动许可
以下命令从指定 AMI 中删除所有公用和显式启动许可。请注意,AMI 的拥有者始终具有启动许可,因此不受该命令影响。在以下示例中,将示例 AMI ID 替换为有效的 AMI ID。
PS C:\>
Reset-EC2ImageAttribute -ImageId
ami-0abcdef1234567890
-Attribute launchPermission