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 的人均可查看其水印。
-
上限为 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
-
- 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
-
- 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
-
- 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
-
- 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。