指定した AMI を参照しているリソースを識別します。
指定した Amazon マシンイメージ (AMI) を参照する AWS リソースは、AMI がパブリックかプライベートか、または誰が所有しているかに関係なく識別できます。この可視性により、リソースが最新の準拠 AMI を使用することが保証されます。
主な利点
AMI の参照をチェックすると、次のことに役立ちます。
サポートされるリソース
AMI の参照は以下でチェックできます。
-
EC2インスタンス
-
起動テンプレート
-
SSM パラメータ
-
Image Builder のイメージレシピ
-
Image Builder コンテナレシピ
AMI 参照チェックの仕組み
基本オペレーション
AMI 参照チェックを実行する際は、以下の手順を実行します。
リソースタイプの選択
コンソールで、スキャンするリソースタイプを選択します。
CLI では、次の CLI パラメータのいずれかまたは両方を使用して、スキャンするリソースタイプを指定します。
応答の範囲設定
ResourceTypes パラメータを使用して ResourceTypeOptions の値をカスタマイズすることで、EC2 インスタンスと起動テンプレートの応答範囲を指定できます。コンソールと IncludeAllResourceTypes パラメータはどちらもデフォルトのオプション値を使用します。ResourceTypes と IncludeAllResourceTypes を一緒に使用すると、ResourceTypes オプション値がデフォルトよりも優先されます。
デフォルト値を以下に示します。
| リソースタイプ |
範囲オプション (OptionName) |
目的 |
OptionValue とコンソールのデフォルト値 |
| EC2インスタンス |
state-name |
インスタンスの状態でフィルタリングする |
pending、running、shutting-down、terminated、stopping、stopped (すべての状態) |
| 起動テンプレート |
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 コンテナレシピを記述するアクセス許可が含まれます。
- JSON
-
-
{
"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"
]
}
}
}
]
}
自分でポリシーを作成する代わりに、AWS マネージドポリシー AmazonEC2ImageReferencesAccessPolicy を使用することを強くお勧めします。必要なアクセス許可のみを提供するカスタム IAM ポリシーを作成するには時間と専門知識が必要で、新しいリソースタイプが利用可能になったときに更新が必要になります。
AmazonEC2ImageReferencesAccessPolicy マネージドポリシー:
-
DescribeImageReferences API を使用するために必要なすべてのアクセス許可を付与します (EC2 インスタンス、起動テンプレート、Systems Manager パラメータ、Image Builder コンテナとイメージレシピを記述するためのアクセス許可が含まれます)。
-
利用可能になった新しいリソースタイプを自動的にサポートします (IncludeAllResourceTypes パラメータを使用する場合、特に重要です)。
AmazonEC2ImageReferencesAccessPolicy ポリシーは IAM アイデンティティ (ユーザー、グループ、ロール) にアタッチできます。
このポリシーに含まれるアクセス許可を確認するには、「AWS マネージドポリシーリファレンス」の「AmazonEC2ImageReferencesAccessPolicy」を参照してください。
AMI の参照を確認する手順
次の手順を使用して、指定した AMI を参照している AWS リソースを特定します。
- Console
-
指定した AMI を参照するリソースを識別するには
-
Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/ を開いてください。
-
ナビゲーションペインで [AMI] を選択してください。
-
参照をチェックする 1 つまたは複数の AMI を選択します。
-
[アクション]、[AMI の使用状況]、[参照先リソースを表示] の順に選択します。
-
[選択した AMI を参照しているリソースを表示] ページで次の操作を実行します。
-
[リソースタイプ] で 1 つ以上のリソースタイプを選択します。
-
[リソースの表示] を選択します。
-
[選択した AMI を参照するリソース] セクションが表示されます。リストには、指定された AMI を参照するリソースが表示されます。各行には、以下に関する情報が表示されます。
-
[AMI ID] – 参照されている AMI の ID。
-
[リソースタイプ] – AMI を参照しているリソースのリソースタイプ。
-
[リソース ID] – AMI を参照しているリソースの ID。
- AWS CLI
-
特定のリソースタイプの AMI 参照を確認するには
--resource-types パラメータで describe-image-references コマンドを使用します。次の例では、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 コマンドを使用します。
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 コマンドを使用します。この例では、実行中または保留中のインスタンスに対する 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 コマンドレットを使用します。次の例では、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 コマンドレットを使用します。
Get-EC2ImageReference `
-ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' `
-IncludeAllResourceTypes
サポートされているすべてのリソースタイプと特定のオプションの AMI 参照を確認するには
-IncludeAllResourceTypes と -ResourceType の両方のパラメータで Get-EC2ImageReference コマンドレットを使用します。この例では、実行中または保留中のインスタンスに対する EC2 インスタンスの応答範囲を指定しながら、すべてのリソースタイプをチェックします。
Get-EC2ImageReference `
-ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' `
-IncludeAllResourceTypes `
-ResourceType @(
@{
ResourceType = 'ec2:Instance'
ResourceTypeOptions = @(
@{
OptionName = 'state-name'
OptionValues = @('running', 'pending')
}
)
}
)