特定 AWS 账户共享 AMI - Amazon Elastic Compute Cloud

特定 AWS 账户共享 AMI

您可以在不将 AMI 设为公用的情况下,与特定 AWS 账户共享 AMI。您只需要 AWS 账户 ID 即可。您只能共享具有未加密的卷和使用客户托管 CMK 加密的卷的 AMI。如果共享带有加密卷的 AMI,那么还必须共享用于对这些卷加密的所有 CMK。有关更多信息,请参阅共享 Amazon EBS 快照。您无法共享具有使用 AWS 托管 CMK 加密的卷的 AMI。

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

可以共享 AMI 的 AWS 账户数量没有限制。您附加到共享 AMI 的用户定义标签仅适用于您的 AWS 账户,而不适用于您与其共享该 AMI 的其他账户。

共享 AMI(控制台)

使用控制台授予显式启动许可

  1. 打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2/

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

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

  4. AWS 账号字段中指定您想与之共享 AMI 的用户的 AWS 账号,然后选择添加权限

    要与多个用户共享此 AMI,请重复此步骤,直至您添加完所需全部用户。

  5. 要允许创建快照的卷权限,请选择 Add "create volume" permissions to the following associated snapshots when creating permissions

    注意

    您不需要为了共享 AMI 而共享 AMI 引用的 Amazon EBS 快照。只需共享 AMI 本身;系统自动为实例提供访问所引用 Amazon EBS 快照的权限以便启动。不过,您确实需要共享用于对 AMI 引用的快照加密的所有 CMK。有关更多信息,请参阅共享 Amazon EBS 快照

  6. 完成后选择保存

  7. (可选)要查看您已共享 AMI 的 AWS 账户 ID,请在列表中选择此 AMI,然后选择权限选项卡。要查找与您共享的 AMI,请参阅查找共享 AMI

共享 AMI (Windows PowerShell 工具)

使用 Edit-EC2ImageAttribute 命令 (Windows PowerShell 工具) 可以共享 AMI,如以下示例所示。

要授予显式启动许可

以下命令向指定 AWS 账户授予指定 AMI 的启动许可。

PS C:\> Edit-EC2ImageAttribute -ImageId ami-0abcdef1234567890 -Attribute launchPermission -OperationType add -UserId "123456789012"

以下命令为快照授予创建卷的权限。

PS C:\> Edit-EC2SnapshotAttribute -SnapshotId snap-1234567890abcdef0 -Attribute CreateVolumePermission -OperationType add -UserId 123456789012
注意

您不需要为了共享 AMI 而共享 AMI 引用的 Amazon EBS 快照。只需共享 AMI 本身;系统自动为实例提供访问所引用 Amazon EBS 快照的权限以便启动。不过,您确实需要共享用于对 AMI 引用的快照加密的所有 CMK。有关更多信息,请参阅共享 Amazon EBS 快照

要删除账户的启动许可

以下命令从指定 AWS 账户中删除指定 AMI 的启动许可:

PS C:\> Edit-EC2ImageAttribute -ImageId ami-0abcdef1234567890 -Attribute launchPermission -OperationType remove -UserId "123456789012"

以下命令为快照授予删除卷的权限。

PS C:\> Edit-EC2SnapshotAttribute -SnapshotId snap-1234567890abcdef0 -Attribute CreateVolumePermission -OperationTtype remove -UserId 123456789012

要删除所有的启动许可

以下命令从指定 AMI 中删除所有公用和显式启动许可。请注意,AMI 的拥有者始终具有启动许可,因此不受该命令影响。

PS C:\> Reset-EC2ImageAttribute -ImageId ami-0abcdef1234567890 -Attribute launchPermission

共享 AMI (AWS CLI)

使用 modify-image-attribute 命令 (AWS CLI) 可以共享 AMI,如以下示例所示。

要授予显式启动许可

以下命令向指定 AWS 账户授予指定 AMI 的启动许可。

aws ec2 modify-image-attribute \ --image-id ami-0abcdef1234567890 \ --launch-permission "Add=[{UserId=123456789012}]"

以下命令为快照授予创建卷的权限。

aws ec2 modify-snapshot-attribute \ --snapshot-id snap-1234567890abcdef0 \ --attribute createVolumePermission \ --operation-type add \ --user-ids 123456789012
注意

您不需要为了共享 AMI 而共享 AMI 引用的 Amazon EBS 快照。只需共享 AMI 本身;系统自动为实例提供访问所引用 Amazon EBS 快照的权限以便启动。不过,您确实需要共享用于对 AMI 引用的快照加密的所有 CMK。有关更多信息,请参阅共享 Amazon EBS 快照

要删除账户的启动许可

以下命令从指定 AWS 账户中删除指定 AMI 的启动许可:

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

以下命令为快照授予删除卷的权限。

aws ec2 modify-snapshot-attribute \ --snapshot-id snap-1234567890abcdef0 \ --attribute createVolumePermission \ --operation-type remove \ --user-ids 123456789012

要删除所有的启动许可

以下命令从指定 AMI 中删除所有公用和显式启动许可。请注意,AMI 的拥有者始终具有启动许可,因此不受该命令影响。

aws ec2 reset-image-attribute \ --image-id ami-0abcdef1234567890 \ --attribute launchPermission