EC2 인스턴스를 만들고 나서 항상 똑같은 작업을 반복하고 있다는 생각이 들었다.
아파치 설치하고, 서비스 시작하고, index.html 파일 만들어서 테스트하고...
그런데 이런 작업을 자동으로 처리해주는 기능이 있다고 한다.
바로 User Data 기능이다.
이번 글에서는 EC2 User Data가 뭔지, 왜 쓰는지 공부해보고 실습까지 하려고 한다.

1. EC2 User Data란?
EC2 인스턴스를 처음 만들 때, 자동으로 실행할 스크립트를 미리 입력할 수 있는 기능이다.
- 인스턴스가 최초 부팅될 때 한 번만 실행된다.
- 주로 초기 설정 자동화에 사용된다. ex)패키지 설치, 파일 생성, 서버 실행 등
2. EC2 Metadata란?
Metadata는 EC2 인스턴스가 자기 자신의 정보를 확인할 수 있도록 AWS가 제공하는 정보 API이다.
- EC2 내부에서만 접근 가능
- 169.254.169.254 라는 로컬 IP 주소를 통해 제공
- 클라우드에서 서버가 "내가 누구인지" 알아야 하는 상황에서 사용
주요 Metadata 정보 예시
| 항목 | 설명 | 명령어 |
| 인스턴스 ID | EC2 고유 ID | curl http://169.254.169.254/latest/meta-data/instance-id |
| 퍼블릭 IP | 외부에서 접근 가능한 IP | .../public-ipv4 |
| AMI ID | 생성에 사용된 이미지 | .../ami-id |
| 보안 그룹 | 연결된 보안 정책 그룹 | .../security-groups |
| 지역/가용영역 | 인스턴스가 속한 리전/AZ | .../placement/availability-zone |
#실습 목표
- EC2 User Data를 활용한 웹 서버 자동 구성
- 최신 버전의 IMDSv2 메타데이터 API로 인스턴스 정보 조회
- 인스턴스 ID를 /var/www/html/index.html 에 자동 기록
- 이후 웹 브라우저 접속을 통해 결과 확인
- 실행 로그를 통해 정상 수행 여부 확인
사용한 User Data 스크립트
#!/bin/bash
sudo -s
dnf install httpd -y
service httpd start
chkconfig httpd on
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
INSTANCE_ID=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id)
echo "$INSTANCE_ID" >> /var/www/html/index.html
1. EC2 인스턴스 생성 (User Data 항목에 위 스크립트 입력)

2. 인스턴스 생성 후 퍼블릭 IPv4 DNS 주소로 접속


3. 인스턴스에 연결해 userdata가 잘 동작했는지 확인

4. 로그 분석
vi cloud-input.log
vi cloud-input-output.log

마무리 하며
이번 실습을 통해 단순히 EC2를 생성하는 것을 넘어서, 스크립트를 황용하여 자동화하는 개념을 이해 할 수 있었다.
실무에서도 서버 구성 자동화나 로그를 보며 오류가 생겼다면 트러블 슈팅하는것은 유용하게 쓰일 것 같다.
'Cloud > 🧱 Aws' 카테고리의 다른 글
| 🧱 AWS EC2 IAM Role과 Instance Profile (0) | 2025.05.18 |
|---|---|
| 🧱 AWS EC2 - ENI와 Elastic IP (0) | 2025.05.17 |
| 🧱AWS EC2 인스턴스의 생명주기란? (0) | 2025.05.17 |
| 🧱 AWS EC2 인스턴스 접속 방법 정리 + SFTP 및 SSH 접속 실습 (0) | 2025.05.17 |
| 🧱 AWS EC2 실습 (0) | 2025.05.17 |