EC2 Instance Metadata 접근 방법 정리
이 글은 AI가 작성했습니다.
개요
Amazon EC2 인스턴스는 실행 중인 인스턴스 내부에서 다양한 환경 정보를 조회할 수 있는 Instance Metadata Service(IMDS) 를 제공한다.
이 메타데이터는 인스턴스 내부 애플리케이션이나 스크립트에서 다음과 같은 정보를 동적으로 조회할 때 사용된다.
- 인스턴스 ID
- 로컬 IP 주소
- IAM Role 자격 증명
- 사용자 데이터(User Data)
- 네트워크 설정
메타데이터는 EC2 내부의 링크 로컬 주소(link-local address) 를 통해 HTTP 요청으로 접근할 수 있다.
Instance Metadata Service (IMDS)
EC2 메타데이터 서비스는 두 가지 버전을 제공한다.
- IMDSv1
- IMDSv2
기본적으로 두 버전을 모두 사용할 수 있지만 보안 강화를 위해 IMDSv2 사용이 권장된다.
IMDSv2는 요청 전에 세션 토큰을 발급받아야 하는 방식으로 동작한다.
메타데이터 접근 주소
EC2 인스턴스 내부에서 다음 주소로 메타데이터에 접근할 수 있다.
IPv4
http://169.254.169.254/latest/meta-data/
IPv6
http://[fd00:ec2::254]/latest/meta-data/
이 주소는 인스턴스 내부에서만 접근 가능한 링크-로컬 주소다.
IMDSv2 사용 예시
IMDSv2는 먼저 토큰을 발급받은 후 메타데이터 요청에 사용한다.
1. 토큰 발급
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" \
-H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
2. 메타데이터 조회
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
http://169.254.169.254/latest/meta-data/
메타데이터 구성
EC2 메타데이터는 다음과 같은 범주로 구성된다.
-
Metadata
- 인스턴스 ID
- AMI ID
- 네트워크 정보
-
Dynamic Data
- IAM Role credentials
- instance identity document
-
User Data
- 인스턴스 시작 시 실행되는 사용자 스크립트
User Data
User Data는 인스턴스 시작 시 실행되는 스크립트 또는 설정 데이터를 의미한다.
주요 특징
- Base64 인코딩 필요
- 최대 16KB 제한
- 인스턴스 속성으로 저장
- AMI 생성 시 포함되지 않음
일반적으로 다음 용도로 사용된다.
- 서버 초기 설정
- 패키지 설치
- 애플리케이션 자동 배포
인스턴스 메타데이터 옵션 확인
EC2 콘솔에서 현재 인스턴스의 IMDS 설정을 확인할 수 있다.
확인 항목
-
IMDSv2
- Required
- Optional
-
Instance metadata tags
- Enabled
- Disabled
경로
EC2 Console
→ Instances
→ Instance Settings
→ Modify Instance Metadata Options
오류 코드
IMDS 요청 시 다음 HTTP 오류 코드가 반환될 수 있다.
| Code | 의미 |
|---|---|
| 400 | 잘못된 파라미터 |
| 401 | 잘못된 토큰 |
| 403 | 접근 금지 또는 IMDS 비활성화 |
| 404 | 리소스 없음 |
| 503 | 서비스 일시 오류 |
컨테이너 환경 고려 사항
컨테이너 환경에서 IMDS 호출 시 네트워크 홉 제한(hop limit) 문제로 요청이 실패할 수 있다.
기본값
hop limit = 1
컨테이너 환경에서는 다음과 같이 설정하는 것이 권장된다.
hop limit = 2
또는 필요한 설정(AWS Region 등)을 컨테이너 환경 변수로 직접 전달하는 방식도 사용된다.
PPS(Packet Per Second) 제한
EC2 링크-로컬 서비스에는 1024 PPS 제한이 존재한다.
다음 서비스 요청이 합산된다.
- IMDS 요청
- Route53 Resolver DNS
- Amazon Time Service
- Windows License Service
높은 트래픽 환경에서는 요청 수를 제한해야 한다.
메타데이터 사용 시 권장 사항
- 가능하면 IMDSv2 사용
/latest경로 사용 (버전 고정 방지)- 자격 증명 요청은 캐시 사용
- 과도한 메타데이터 요청 방지
- 컨테이너 환경에서는 hop limit 설정 검토