AMI 계보(ancestry)로 AMI의 출처 추적하기
AMI 계보(ancestry)로 AMI의 출처 추적하기 (Use AMI ancestry to trace the origin of an AMI)
AMI 계보(ancestry)는 AMI의 모든 조상 AMI의 ID와 리전(Region)을 돌려줘서, 그 AMI가 어디서 왔는지 추적할 수 있게 해줘요. AMI를 만들거나 복사하면 새 AMI가 소스(부모) AMI의 ID와 리전을 유지해요. 그래서 AMI가 뿌리(루트) AMI까지 거슬러 올라가는 연결 고리를 추적할 수 있어요.
출처: 문서
본문
AMI 계보는 다음과 같은 상황에 유용해요.
- 내부 정책을 준수하는지 확인하기 위해 AMI 파생물을 추적해요.
- 조상 AMI에서 보안 문제가 발견됐을 때, 잠재적으로 취약한 AMI를 식별해요.
- 여러 리전에 걸쳐 AMI 출처에 대한 가시성을 유지해요.
AMI 계보의 작동 방식 (How AMI ancestry works)
AMI 계보는 지정된 AMI를 만드는 데 사용된 부모 AMI, 그리고 그 부모의 부모를 루트 AMI까지 거슬러 식별해요. 작동 방식은 다음과 같아요.
- 각 AMI는 소스(부모) AMI의 ID와 리전을 표시해요.
- 선택한 AMI부터 시작해서, 계보 항목 목록은 각 부모 AMI를 순서대로 표시해요.
- 계보 항목 목록은 루트 AMI에 도달할 때까지 거슬러 올라가요. 루트 AMI는 다음 중 하나예요.
- 검증된 제공자(owner alias가
amazon또는aws-marketplace인 제공자)의 공개 AMI. - 기록된 조상이 없는 AMI. 예를 들어
RegisterImage를 사용해 스냅샷 집합에서 직접 AMI를 만들면, 인스턴스에서 AMI를 만들 때와 달리 추적할 소스 AMI가 없어요. - 소스 AMI가 다른 파티션(partition)에 있는 AMI.
- 목록의 50번째 AMI. 계보 목록의 최대 AMI 수는 50개예요.
- 검증된 제공자(owner alias가
- 검증된 제공자(owner alias가
amazon또는aws-marketplace인 제공자)의 공개 AMI. - 기록된 조상이 없는 AMI. 예를 들어
RegisterImage를 사용해 스냅샷 집합에서 직접 AMI를 만들면, 인스턴스에서 AMI를 만들 때와 달리 추적할 소스 AMI가 없어요. - 소스 AMI가 다른 파티션에 있는 AMI.
- 목록의 50번째 AMI. 계보 목록의 최대 AMI 수는 50개예요.
고려 사항 (Considerations)
- 소스 AMI의 ID와 리전은
CreateImage,CopyImage, 또는CreateRestoreImageTask로 만든 AMI에서만 확인할 수 있어요. CreateImage(인스턴스에서 AMI를 만드는 작업)로 만든 AMI의 경우, 소스 AMI ID는 인스턴스를 시작하는 데 사용된 AMI의 ID예요.- 소스 AMI 정보는 다음 경우에는 확인할 수 없어요.
RegisterImage로 만든 AMI: 스냅샷에서 만들었기 때문이에요.- 일부 오래된 AMI.
- 소스 AMI 정보는 다음 경우에 보존돼요.
- AMI를 리전 간에 복사한 경우.
- 소스 AMI가 등록 해제(삭제)된 경우.
- 소스 AMI에 접근할 수 없는 경우.
- 각 계보 목록은 AMI 50개로 제한돼요.
AMI 계보 보기 (View AMI ancestry)
다음 방법으로 AMI의 계보를 볼 수 있어요.
콘솔 (Console)
AMI 계보 보기: Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다. 탐색 창에서 AMIs를 선택해요. AMI를 선택하고 AMI ancestry 탭을 선택해요. AMI ancestry 항목 표는 계보 목록의 모든 AMI를 나열해요.
- AMI ID – 계보 목록에 있는 각 AMI의 식별자예요. 표의 첫 번째 항목은 선택한 AMI이고, 그 뒤로 조상들이 이어져요.
- Source AMI ID – AMI ID 열의 AMI를 만드는 데 사용된 AMI의 ID예요. 대시(
-)는 AMI 계보 목록의 끝을 나타내요. - Source AMI Region – 소스 AMI가 위치한 AWS 리전이에요.
- Ancestry level – 계보 목록에서의 위치예요.
0(입력 AMI)은 계보를 알고 싶은 선택한 AMI를 나타내고, 숫자가 커질수록 더 오래된 조상을 보여줘요.n(원본 AMI)은 루트 AMI를 나타내며, 숫자는 계보 목록이 얼마나 거슬러 올라가는지 나타내요. - Creation date – AMI가 만들어진 시각(UTC 형식)이에요.
- Owner alias – AMI 소유자의 별칭(예:
amazon)이에요. 대시(-)는 AMI에 소유자 별칭이 없음을 나타내요.
AWS CLI
AMI 계보 보기: get-image-ancestry 명령을 사용하고 AMI ID를 지정해요.
aws ec2 get-image-ancestry \
--image-id ami-1111111111EXAMPLE \
--region us-east-1
다음은 예시 출력이에요. 출력은 계보 순서로 AMI를 나열해요. 첫 번째 항목은 지정된(입력) AMI이고, 그다음 부모, 부모의 부모 순으로 이어지며 루트 AMI로 끝나요.
{
"ImageAncestryEntries": [
{
"CreationDate": "2025-01-17T18:37:50.000Z",
"ImageId": "ami-1111111111EXAMPLE", // Input AMI
"SourceImageId": "ami-2222222222EXAMPLE",
"SourceImageRegion": "us-east-1"
},
{
"CreationDate": "2025-01-17T18:37:50.000Z",
"ImageId": "ami-2222222222EXAMPLE", // Parent AMI
"SourceImageId": "ami-3333333333EXAMPLE",
"SourceImageRegion": "us-east-1"
},
...
{
"CreationDate": "2025-01-17T18:37:50.000Z",
"ImageId": "ami-8888888888EXAMPLE", // Root AMI
"ImageOwnerAlias": "aws-marketplace",
"SourceImageId": "ami-9999999999EXAMPLE",
"SourceImageRegion": "us-east-2"
}
]
}
PowerShell
AMI 계보 보기: Get-EC2ImageAncestry cmdlet을 사용해요.
Get-EC2ImageAncestry -ImageId ami-1111111111EXAMPLE
다음은 예시 출력이에요. 출력은 계보 순서로 AMI를 나열해요. 첫 번째 항목은 지정된(입력) AMI이고, 그다음 부모, 부모의 부모 순으로 이어지며 루트 AMI로 끝나요.
ImageAncestryEntries : {
@ {
CreationDate = "2025-01-17T18:37:50.000Z"
ImageId = "ami-1111111111EXAMPLE" # Input AMI
SourceImageId = "ami-2222222222EXAMPLE"
SourceImageRegion = "us-east-1"
},
@ {
CreationDate = "2025-01-17T18:37:50.000Z"
ImageId = "ami-2222222222EXAMPLE" # Parent AMI
SourceImageId = "ami-3333333333EXAMPLE"
SourceImageRegion = "us-east-1"
},
...
@ {
CreationDate = "2025-01-17T18:37:50.000Z"
ImageId = "ami-8888888888EXAMPLE" # Root AMI
ImageOwnerAlias = "aws-marketplace"
SourceImageId = "ami-9999999999EXAMPLE"
SourceImageRegion = "us-east-2"
}
}
소스 AMI 식별하기 (Identify the source AMI)
AMI를 만드는 데 사용된 바로 위 부모(소스) AMI만 식별하면 되는 경우 다음 방법을 사용할 수 있어요.
콘솔 (Console)
선택한 AMI를 만드는 데 사용된 소스 AMI 식별하기: Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다. 탐색 창에서 AMIs를 선택해요. 세부 정보를 볼 AMI를 선택해요. 소스 AMI 정보는 Source AMI ID 및 Source AMI Region 필드에 나타나요.
AWS CLI
지정된 AMI를 만드는 데 사용된 소스 AMI 식별하기: describe-images 명령을 사용해요.
aws ec2 describe-images \
--region us-east-1 \
--image-ids ami-0abcdef1234567890 \
--query "Images[]. {ID:SourceImageId,Region:SourceImageRegion}"
다음은 예시 출력이에요.
[
{
"ID": "ami-0abcdef1234567890",
"Region": "us-west-2"
}
]
PowerShell
지정된 AMI를 만드는 데 사용된 소스 AMI 식별하기: Get-EC2Image cmdlet을 사용해요.
Get-EC2Image -ImageId ami-0abcdef1234567890 | Select SourceImageId, SourceImageRegion
다음은 예시 출력이에요.
SourceImageId SourceImageRegion
------------- -----------------
ami-0abcdef1234567890 us-west-2