1 # 스크립트 파일 생성 sudo vi /usr/local/bin/update-metadata.sh 2 아래 내용을 복사해서 넣으세요: #!/bin/bash # IMDSv2 토큰 생성 TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") # 현재 실시간 정보 가져오기 INSTANCE_ID=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" -s http://169.254.169.254/latest/meta-data/instance-id) PRIVATE_IP=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" -s http://169.254.169.254/latest/meta-data/local-ipv4) # 웹 페이지 갱신 cat < /var/www/html/index.html

Managed by Auto-Update Service

Current Private IP: ${PRIVATE_IP}

Instance ID: ${INSTANCE_ID}

EOF # config.txt 갱신 cat < /var/www/html/config.txt INSTANCE_ID=$INSTANCE_ID PRIVATE_IP=$PRIVATE_IP LAST_BOOT=$(date) EOF 3 스크립트에 실행 권한을 부여합니다: sudo chmod +x /usr/local/bin/update-metadata.sh 2. systemd 서비스 등록 부팅 시 이 스크립트가 자동으로 실행되도록 서비스로 등록합니다. # 서비스 파일 생성 sudo vi /etc/systemd/system/update-metadata.service 아래 내용을 넣으세요: [Unit] Description=Update EC2 Metadata on Boot After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/local/bin/update-metadata.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target 3. 서비스 활성화 및 AMI 생성 이제 서비스를 활성화하고, 이 상태 그대로 AMI를 만듭니다. # 서비스 활성화 (부팅 시 실행 설정) sudo systemctl enable update-metadata.service sudo yum update -y sudo yum install -y httpd # 웹 서버도 부팅 시 자동 시작되도록 설정 sudo systemctl enable httpd 결과 확인 위 설정이 완료된 인스턴스를 **[작업] -> [이미지 및 템플릿] -> [이미지 생성]**을 통해 AMI로 만듭니다. 생성된 AMI로 새 인스턴스를 2~3대 띄워보세요. (User Data는 비워둬도 됩니다.) 각 인스턴스의 공인 IP나 로드 밸런서 DNS로 접속하면, 별도 설정 없이도 각자의 Private IP가 정확히 출력됩니다. 왜 이 방식이 더 좋은가요? 확장성: Auto Scaling 그룹을 만들 때 매우 편리합니다. 정확성: AMI에 고정된 옛날 IP가 아니라, 부팅 직후 네트워크가 연결된 시점의 IP를 즉시 가져옵니다. 관리 편의성: 인스턴스를 생성할 때마다 긴 스크립트를 복사/붙여넣기 할 필요가 없습니다.