
EC2 User Data
- EC2 인스턴스의 최초 실행 시 지정한 스크립트 실행 가능
- 별도 설정을 통해서 재부팅 마다 실행하도록 설정 가능
- 두 가지 모드
- Shell Script
- clout-init: 리눅스 이미지의 부트스트래핑을 위한 오픈소스 어플리케이션
- EC2 인스턴스 설정(보안 설정, 인스턴스 설정 등)
- 외부 패키지 다운로드
- 설치 어플리케이션 실행
- 기타 EC2 실행 시 필요한 동작주요 사용 사례

Amazon EC2 Instance Metadata
인스턴스 메타데이터는 실행 중인 인스턴스를 구성 또는 관리하는 데 사용될 수 있는 인스턴스 관련 데이터이다. 인스턴스 메타데이터는 호스트 이름, 이벤트 및 보안 그룹과 같은 범주로 분류된다.
- EC2 인스턴스의 속성 및 정보 데이터
- AMI ID, IPv4/IPv6주소, EBS 맵핑, 보안 그룹 연동상황, IAM 역할 연동 등
- 실행중인 EC2 인스턴스의 메타데이터 IMDS(Instance Metadata Service)로 조회 가능
- HTTP Endpoint 지원
- IP주소 : 169.254.169.254(IPv4), fd00:ec2::254(IPv6)
- 두 가지 모드
- IMDSv1: Request/Response 기반
- IMDSv2: 세선 기반 (default)
- 주요 사용 사례
- 인스턴스 별 설정, IAM 임시 자격증명 조회 등(AWS CLI, SDK 등이 내부적으로 활용함)
- EC2 실행 시 메타데이터 엑세스 가능 여부 설정 가능
- 기본 활성화
- 버전 선택 가능
- 가격 : 무료
- Tag 조회의 경우 별도로 활성화 해야 Metadata로 Tag 조회 가능
- 활성화 하지 않을 경우 목록에서 보이지 않음
Instance Metadata Service V1
- 별도의 보안 인증이 필요 없는 Request/Response 기반
- Link Local IP (169.254.168.254) 를 사용하기 때문에 해당 EC2 인스턴스에서만 요청 가능
- CloudWatch Metric을 활용해서 조회 횟수 기록 가능
- 예시
- 인스턴스 이름 가져오기 : curl http://169.254.169.254/latest/meta-data/tags/instance/Name
Instance Metadata Service V2

- 보안 토큰을 발급받아 요청할 때 마다 토큰을 사용해 인증하는 세션 방식
- 토큰의 유효기간은 1초에서 최대 6시간
- IMDSv1보다 더 높은 보안 수준을 제공함
- IAM 정책 등을 활용하여 EC2 인스턴스가 IMDSv2를 사용하도록 강제할 수 있다.
- 활용 시 EC2 인스턴스 내부의 AWS CLI, SDK 등이 IMDSv2를 지원하는 최신 버전임을 확인 필요
TOKEN= curl -X PUT "http://169.254.169.254/latest/api/token" -H"X-aws-ec2-metadata-token-ttl-seconds: 21600"
curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/tags/instance/Name
User Data / Metadata의 활용
- EC2가 올라갈 때 웹 서버 설치 및 기동
- 이 과정에서 index.html에 자신의 인스턴스 아이디를 업데이트
- 메타데이터를 활용하여 자신의 인스턴스 아이디 조회하여 index.html에 업데이트 처리

EC2를 프로비저닝 하는 과정에서 고급 세부 설정 목록을 확인한다.
메타 데이터 엑세스 가능이 활성화 되어 있어야하고 메타 데이터 버전도 설정해준다.
메타데이터 태그를 허용 해주어야 인스턴스 이름이나 정보를 조회할 수 있으니 활성화 설정한다.


Instance 시작될때 지정된 동작이 실행되게끔 설정

새로운 인스턴스를 생성하고 간단한 스크립트를 Userdata에 넣어 webserver를 설치하고 실행한다.
위에서 봤듯이 토큰을 가져온다.
토큰으로 instance-id를 불러와서 index.html 에 넣어서 확인해본다.

별도로 뭔가 설정하지 않고 자동으로 할당되는 퍼블릭 IPv4 DNS 주소로 접속하면 index.html에 instance-id가 출력되는 것을 확인할 수 있다.
이 과정을 로그로 확인해 볼 수 있는데, instance 내부에 접속한 후 /var/log/cloud-init.log, cloud-init-output.log 파일을 열어보면 웹서버가 설치되는 과정과 토큰을 가져오는 과정도 잘 찍혀있다.
- cloud-init : 세부적인 내부 동작 로그 (디버깅용)
- cloud-init-output : 실행 결과에 대한 출력 로그 (사용자 관점)
- 서버 초기화가 안되거나 뭔가 에러가 발생할때 cloud-init-output.log 먼저 확인 후 cloud-init.log 에서 디테일한 메세지를 보는 용도

'AWS' 카테고리의 다른 글
| [AWS] EC2 Autoscaling (0) | 2026.04.04 |
|---|---|
| [AWS] EC2 권한 부여 (1) | 2026.03.31 |
| [AWS] ENI 와 Elastic IP (0) | 2026.03.29 |
| [AWS] EC2 보안그룹 (0) | 2026.03.25 |
| [AWS] EBS와 AMI (0) | 2026.03.23 |