지정한 AMI를 참조하는 리소스 식별하기

지정한 AMI를 참조하는 리소스 식별하기

내 AWS 리소스 중에서 특정 Amazon Machine Image(AMI)를 참조하는 것들을 식별할 수 있어요. AMI가 공개(public)든 비공개(private)든, 누가 소유했든 관계없이 확인할 수 있으며, 덕분에 내 리소스가 최신·적합한 AMI를 사용하고 있는지 관리할 수 있습니다.

출처: 문서

본문

내 AWS 리소스 중 특정 Amazon Machine Image(AMI)를 참조하는 것들을, AMI가 공개든 비공개든 또는 누가 소유했든 상관없이 식별할 수 있어요. 이 가시성을 통해 내 리소스가 최신이며 규정을 준수하는 AMI를 사용하도록 보장할 수 있습니다.

주요 이점 (Key benefits)

AMI 참조를 확인하면 다음을 할 수 있어요.

  • 계정에서 AMI가 어떻게 사용되는지 감사(audit)하기.
  • 특정 AMI가 어디에서 참조되고 있는지 확인하기.
  • 리소스가 최신 AMI를 참조하도록 업데이트해 규정 준수 유지하기.

지원되는 리소스 (Supported resources)

  • EC2 인스턴스
  • 시작 템플릿(Launch templates)
  • SSM 파라미터
  • Image Builder 이미지 레시피
  • Image Builder 컨테이너 레시피

AMI 참조 확인이 동작하는 방식

기본 동작

AMI 참조 확인을 실행하면 다음을 수행해요.

  1. 확인할 AMI를 지정해요.
  2. 스캔할 리소스 유형을 선택해요.
  3. 지정한 AMI를 참조하는 내 리소스 목록을 받아요.

리소스 유형 선택

콘솔에서는 스캔할 리소스 유형을 선택해요. CLI에서는 다음 파라미터 중 하나 또는 둘 다를 사용해 스캔할 리소스 유형을 지정합니다.

  • IncludeAllResourceTypes – 지원되는 모든 리소스 유형을 스캔해요.
  • ResourceTypes – 지정한 리소스 유형만 스캔해요.

응답 범위 지정

EC2 인스턴스와 시작 템플릿에 대해 ResourceTypes 파라미터의 ResourceTypeOptions 값을 사용자 지정해 응답 범위를 지정할 수 있어요. 콘솔과 IncludeAllResourceTypes 파라미터는 모두 기본 옵션 값을 사용합니다. ResourceTypes와 IncludeAllResourceTypes를 함께 사용하면 ResourceTypes의 옵션 값이 기본값보다 우선합니다.

기본값은 다음과 같아요.

리소스 유형 범위 지정 옵션(OptionName) 용도 OptionValue 및 콘솔 기본값
EC2 인스턴스 state-name 인스턴스 상태로 필터링 pending, running, shutting-down, terminated, stopping, stopped (모든 상태)
시작 템플릿(Launch templates) version-depth 확인할 시작 템플릿 버전 수 지정(가장 최신 버전부터) 10 (가장 최신 버전)

필요한 IAM 권한 (Required IAM permissions)

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"
                    ]
                }
            }
        }
    ]
}

Important
정책을 직접 만들기보다 AWS 관리형 정책 AmazonEC2ImageReferencesAccessPolicy를 사용하는 것을 강력히 권장합니다. 필요한 권한만 제공하는 사용자 지정 IAM 정책을 만드는 것은 시간과 전문성이 필요하고, 새 리소스 유형이 생길 때마다 업데이트가 필요해요.

AmazonEC2ImageReferencesAccessPolicy 관리형 정책은 다음을 제공해요.

  • DescribeImageReferences API 사용에 필요한 모든 권한 부여(EC2 인스턴스, 시작 템플릿, Systems Manager 파라미터, Image Builder 컨테이너 및 이미지 레시피를 설명할 권한 포함).
  • 새 리소스 유형이 생기면 자동으로 지원함(특히 IncludeAllResourceTypes 파라미터 사용 시 중요).

이 정책은 IAM 사용자, 그룹, 역할에 연결할 수 있어요. 이 정책에 포함된 권한을 보려면 AWS Managed Policy Reference의 AmazonEC2ImageReferencesAccessPolicy를 참고하세요.

AMI 참조 확인 절차 (Steps for checking AMI references)

다음 절차를 사용해 지정한 AMI를 참조하는 AWS 리소스를 식별해요.

콘솔 (Console)

지정한 AMI를 참조하는 리소스 식별하기

  1. EC2 콘솔을 엽니다.
  2. Resource types에서 하나 이상의 리소스 유형을 선택해요.
  3. View resources를 선택해요.

결과에는 다음이 표시돼요.

  • AMI ID – 참조된 AMI의 ID.
  • Resource type – AMI를 참조하는 리소스 유형.
  • Resource 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 파라미터를 모두 사용해요. 이 예시는 모든 리소스 유형을 확인하면서 EC2 인스턴스에 대한 응답을 running 또는 pending 인스턴스로 범위를 지정합니다.

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 파라미터를 모두 사용해요. 이 예시는 모든 리소스 유형을 확인하면서 EC2 인스턴스에 대한 응답을 running 또는 pending 인스턴스로 범위를 지정합니다.

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

더 알아보기 (Learn more)