识别引用指定 AMI 的资源 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

识别引用指定 AMI 的资源

您可以识别引用指定亚马逊机器映像 (AMI) 的 Amazon 资源,无论 AMI 是公共的还是私有的,也无论它们的所有者是谁。这种可见性可帮助您确保资源使用最新的合规 AMI。

主要优势

检查 AMI 引用可以帮助您:

  • 审核您账户中 AMI 的使用情况。

  • 检查引用特定 AMI 的位置。

  • 通过更新资源以引用最新的 AMI 来保持合规性。

 

支持的资源

可在以下位置检查 AMI 引用:

  • EC2 实例

  • 启动模板

  • SSM 参数

  • Image Builder 映像配方

  • Image Builder 容器配方

AMI 引用检查的工作原理

基础操作

运行 AMI 引用调查时,您可以:

  • 指定要检查的 AMI。

  • 选择要扫描的资源类型。

  • 接收引用指定 AMI 的资源列表。

资源类型选择

在控制台中,选择要扫描的资源类型。

在 CLI 中,使用以下一个或两个 CLI 参数指定要扫描的资源类型:

  • IncludeAllResourceTypes:扫描所有支持的资源类型。

  • ResourceTypes:扫描指定的资源类型。

响应范围界定

您可以使用 ResourceTypes 参数自定义 ResourceTypeOptions 值,从而限定 EC2 实例和启动模板的响应范围。控制台和 IncludeAllResourceTypes 参数都使用默认选项值。当 ResourceTypesIncludeAllResourceTypes 一起使用时,ResourceTypes 选项值优先于默认值。

以下是默认值:

资源类型 范围界定选项 (OptionName) 用途 OptionValue 和控制台的默认值
EC2 实例 state-name 按实例状态筛选 pendingrunningshutting-downterminatedstoppingstopped(所有状态)
启动模板 version-depth 指定要检查的启动模板版本数(从最新版本开始) 10(最新版本)

所需的 IAM 权限

要使用 DescribeImageReferences API 来识别引用指定 AMI 的资源,您需要以下 IAM 权限来描述资源:

  • ec2:DescribeInstances

  • ec2:DescribeLaunchTemplates

  • ec2:DescribeLaunchTemplateVersions

  • ssm:DescribeParameters

  • ssm:GetParameters

  • imagebuilder:ListImageRecipes

  • imagebuilder:ListContainerRecipes

  • imagebuilder:GetContainerRecipe

使用 DescribeImageReferences API 的 IAM 策略示例

以下示例策略授予您使用 DescribeImageReferences API 的权限,其中包括描述 EC2 实例、启动模板、Systems Manager 参数、Image Builder 映像配方和 Image Builder 容器配方的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DescribeImageReferences", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeLaunchTemplates", "ec2:DescribeLaunchTemplateVersions", "ssm:DescribeParameters", "ssm:GetParameters", "imagebuilder:ListImageRecipes", "imagebuilder:ListContainerRecipes", "imagebuilder:GetContainerRecipe" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "ec2-images.amazonaws.com" ] } } } ] }
重要

我们强烈建议您使用 Amazon 托管策略 AmazonEC2ImageReferencesAccessPolicy,而不是自行创建策略。创建仅提供所需权限的自定义 IAM 策略需要时间和专业知识,并且随着新资源类型推出,需要更新。

AmazonEC2ImageReferencesAccessPolicy 托管策略:

  • 授予使用 DescribeImageReferences API 所需的所有权限(包括描述 EC2 实例、启动模板、Systems Manager 参数以及 Image Builder 容器和映像配方的权限)。

  • 在新的资源类型可用时自动支持它们(在使用 IncludeAllResourceTypes 参数时尤其重要)。

您可以将 AmazonEC2ImageReferencesAccessPolicy 策略附加到 IAM 身份(用户、组和角色)。

要查看此策略中包含的权限,请参阅《Amazon 托管式策略参考》中的 AmazonEC2ImageReferencesAccessPolicy

检查 AMI 引用的步骤

使用以下过程确定哪些 Amazon 资源正在引用指定的 AMI。

Console
识别引用指定 AMI 的资源
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 选择一个或多个 AMI 来检查引用。

  4. 选择操作AMI 使用情况查看引用的资源

  5. 查看引用所选 AMI 的资源页面上:

    1. 对于资源类型,选择一种或多种资源类型。

    2. 选择查看资源

  6. 此时将出现引用所选 AMI 的资源部分。该列表显示引用指定 AMI 的资源。每行提供以下信息:

    • AMI ID – 所引用 AMI 的 ID。

    • 资源类型 – 引用 AMI 的资源的资源类型。

    • 资源 ID – 引用 AMI 的资源的 ID。

Amazon CLI
检查特定资源类型的 AMI 引用

使用带有 --resource-types 参数的 describe-image-references cmdlet。以下示例检查 EC2 实例(按实例状态限定范围)、启动模板(限定范围为最新 20 个启动模板版本)以及其他特定资源类型。

aws ec2 describe-image-references \ --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \ --resource-types \ 'ResourceType=ec2:Instance,ResourceTypeOptions=[{OptionName=state-name,OptionValues=[running,pending]}]' \ 'ResourceType=ec2:LaunchTemplate,ResourceTypeOptions=[{OptionName=version-depth,OptionValues=[20]}]' \ 'ResourceType=ssm:Parameter' \ 'ResourceType=imagebuilder:ImageRecipe' \ 'ResourceType=imagebuilder:ContainerRecipe'

下面是示例输出。

{ "ImageReferences": [ { "ImageId": "ami-0abcdef1234567890", "ResourceType": "ec2:Instance", "Arn": "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0" }, { "ImageId": "ami-1234567890abcdef0", "ResourceType": "ec2:LaunchTemplate", "Arn": "arn:aws:ec2:us-east-1:123456789012:launch-template/lt-1234567890abcdef0" } ] }
检查所有支持的资源类型的 AMI 引用

使用带 --include-all-resource-types 参数的 describe-image-references cmdlet。

aws ec2 describe-image-references \ --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \ --include-all-resource-types
检查所有支持的资源类型和特定选项的 AMI 引用

使用带 --include-all-resource-types--resource-types 参数的 describe-image-references cmdlet。此示例检查所有资源类型,同时将 EC2 实例的响应范围限定为正在运行或待处理的实例。

aws ec2 describe-image-references \ --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \ --include-all-resource-types \ --resource-types 'ResourceType=ec2:Instance,ResourceTypeOptions=[{OptionName=state-name,OptionValues=[running,pending]}]'
PowerShell
检查特定资源类型的 AMI 引用

使用带 -ResourceType 参数的 Get-EC2ImageReference cmdlet。以下示例检查 EC2 实例(按实例状态限定范围)、启动模板(限定范围为最新 20 个启动模板版本)以及其他特定资源类型。

Get-EC2ImageReference ` -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' ` -ResourceType @( @{ ResourceType = 'ec2:Instance' ResourceTypeOptions = @( @{ OptionName = 'state-name' OptionValues = @('running', 'pending') } ) }, @{ ResourceType = 'ec2:LaunchTemplate' ResourceTypeOptions = @( @{ OptionName = 'version-depth' OptionValues = @('20') } ) }, @{ ResourceType = 'ssm:Parameter' }, @{ ResourceType = 'imagebuilder:ImageRecipe' }, @{ ResourceType = 'imagebuilder:ContainerRecipe' } )
检查所有支持的资源类型的 AMI 引用

使用带 -IncludeAllResourceTypes 参数的 Get-EC2ImageReference cmdlet。

Get-EC2ImageReference ` -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' ` -IncludeAllResourceTypes
检查所有支持的资源类型和特定选项的 AMI 引用

使用带 -IncludeAllResourceTypes-ResourceType 参数的 Get-EC2ImageReference cmdlet。此示例检查所有资源类型,同时将 EC2 实例的响应范围限定为正在运行或待处理的实例。

Get-EC2ImageReference ` -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' ` -IncludeAllResourceTypes ` -ResourceType @( @{ ResourceType = 'ec2:Instance' ResourceTypeOptions = @( @{ OptionName = 'state-name' OptionValues = @('running', 'pending') } ) } )