View a markdown version of this page

使用 AMI 水印来跟踪和识别 AMI - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 AMI 水印来跟踪和识别 AMI

AMI 水印是向私有 AMI 附加的用于跟踪来源和执行治理策略的标识符。水印在整个 AMI 生命周期中持续存在:

  • 如果基于从带水印的 AMI 启动的正在运行的实例创建新的 AMI,则新 AMI 会继承该水印。

  • 如果复制带水印的 AMI,则副本会带有该水印。

  • 如果将带水印的 AMI 存储到 S3 并进行还原,则还原后的 AMI 将保留该水印。

  • 如果与其他账户共享带水印的 AMI,则接收方仍能看到该水印。

使用 AMI 水印有助于您:

主要优势
  • 跨账户和区域跟踪来源:识别哪些 AMI 源自已批准的基本图像。

  • 跨账户筛选并查找相关的 AMI。

  • 帮助 AMI 使用者发现并识别与项目或组织相关联的可信 AMI。

AMI 水印的工作原理

AMI 水印是向 AMI 附加的结构化标识符。下面介绍了水印的主要特征:

  • 持续存在:当向 AMI 附加水印时,它会延续到所有衍生 AMI。

  • 仅所有者:仅 AMI 所有者可以向 AMI 附加水印。

  • 对所有人可见:任何有权访问 AMI 的人均可查看其水印。

  • 上限为 5:一个 AMI 最多可以有 5 个水印。

  • 不适用于公用 AMI:无法向公用 AMI 附加水印,也无法将带水印的 AMI 设为公有。

  • 可筛选:使用 describe-images 时可以按水印筛选 AMI。

水印格式

水印是包含以下字段的结构化对象:

  • WatermarkKey:水印的唯一标识符,由 account-id:watermark-name 组成。账户 ID 部分是 AMI 所有者的 12 位 Amazon 账户 ID。水印名称部分是客户指定的名称。

  • SourceImageRegion:最初向其附加水印的 AMI 的区域。

  • SourceImageId:最初向其附加水印的 AMI。

  • SourceImageCreationDate:最初向其附加水印的 AMI 的创建日期。

  • WatermarkCreationTime:应用水印的时间戳。

水印名称的长度必须为 3 到 128 个字符,且可包含字母数字字符、圆括号(())、方括号([])、空格、句点(.)、斜杠(/)、破折号(-)、单引号(')、@ 符号或下划线(_)。

所需的权限

要使用 AMI 水印,您需要以下 IAM 权限:

  • ec2:AttachImageWatermark:向 AMI 附加水印。

  • ec2:DetachImageWatermark:从 AMI 分离水印。

  • ec2:DescribeImages:查看 AMI 上的水印。

向 AMI 附加水印

您可以使用控制台、Amazon CLI 或 PowerShell 向 AMI 附加水印。

Console
向 AMI 附加水印
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 选择 AMI。

  4. 详细信息选项卡的水印部分,选择管理水印

  5. 输入水印名称,然后选择附加

Amazon CLI
向 AMI 附加水印

使用 attach-image-watermark 命令。

aws ec2 attach-image-watermark \ --image-id ami-1111111111EXAMPLE \ --image-watermark-name "prod-baseline"

下面是示例输出。

{ "WatermarkKey": "123456789012:prod-baseline" }
PowerShell
向 AMI 附加水印

使用 Add-EC2ImageWatermark cmdlet。

Add-EC2ImageWatermark ` -ImageId ami-1111111111EXAMPLE ` -ImageWatermarkName "prod-baseline"

一个 AMI 最多可以附加 5 个水印。

从 AMI 分离水印

您可以使用控制台、Amazon CLI 或 PowerShell 从 AMI 分离水印。

Console
从 AMI 分离水印
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 选择 AMI。

  4. 详细信息选项卡的水印部分,选择管理水印

  5. 选择要移除的水印,然后选择移除

Amazon CLI
从 AMI 分离水印

使用 detach-image-watermark 命令。

aws ec2 detach-image-watermark \ --image-id ami-1111111111EXAMPLE \ --image-watermark-key "111122223333:prod-baseline"
PowerShell
从 AMI 分离水印

使用 Remove-EC2ImageWatermark cmdlet。

Remove-EC2ImageWatermark ` -ImageId ami-1111111111EXAMPLE ` -ImageWatermarkKey "111122223333:prod-baseline"
注意

从 AMI 分离水印不会将其从已带该水印的衍生 AMI 中移除。为确保水印持续存在,请仅向需要管理水印的可信管理员授予 ec2:DetachImageWatermark 权限。

查看 AMI 水印

您可以使用控制台、Amazon CLI 或 PowerShell 查看 AMI 的水印。

Console
查看 AMI 的水印
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 选择 AMI。

  4. 详细信息选项卡的水印部分查看水印。

Amazon CLI
查看 AMI 的水印

使用 describe-images 命令。

aws ec2 describe-images \ --image-ids ami-046863d776a820ccd \ --region us-east-1

响应包含每个 AMI 的 ImageWatermarks 数组。

{ "Images": [ { "ImageId": "ami-046863d776a820ccd", "Public": false, "OwnerId": "123456789012", ... "ImageWatermarks": [ { "WatermarkKey": "111122223333:prod-baseline", "Region": "us-east-1", "SourceImageId": "ami-0b752bf1df193a6c4", "SourceImageCreationDate": "2024-07-10T08:15:00", "CreationDate": "2024-07-12T14:30:00" }, { "WatermarkKey": "222222222222:security-approved", "Region": "eu-north-1", "SourceImageId": "ami-12345678", "SourceImageCreationDate": "2024-06-01T10:00:00", "CreationDate": "2024-06-05T09:45:00" } ] } ] }
PowerShell
查看 AMI 的水印

使用 Get-EC2Image cmdlet。

(Get-EC2Image -ImageId ami-046863d776a820ccd).ImageWatermarks

按水印筛选 AMI

您可以使用控制台、Amazon CLI 或 PowerShell 按水印筛选 AMI。

Console
按水印筛选 AMI
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 在搜索栏中,选择水印键筛选条件并输入水印键值。

Amazon CLI
按水印筛选 AMI

使用 describe-images 命令和 image-watermark-key 筛选条件。

aws ec2 describe-images \ --filters "Name=image-watermark-key,Values=111122223333:prod-baseline"

这将返回您有权访问且带有指定水印的所有 AMI,包括通过复制操作继承了该水印的衍生 AMI。

PowerShell
按水印筛选 AMI

使用带 -Filter 参数的 Get-EC2Image cmdlet。

Get-EC2Image ` -Filter @{Name="image-watermark-key"; Values="111122223333:prod-baseline"}

这将返回您有权访问且带有指定水印的所有 AMI,包括通过复制操作继承了该水印的衍生 AMI。