본문 바로가기
삵

IMDSv2로 EC2 메타데이터 조회하기

조회 1 · 댓글 0
나나크나로작성자2026년 9월 30일

인스턴스 안에서 http://169.254.169.254/latest/meta-data/로 메타데이터를 받다가 401이 뜨면, 그 인스턴스는 IMDSv2가 필수(Required)로 걸려 있는 겁니다. IMDSv2는 먼저 PUT으로 세션 토큰을 받고, 그 토큰을 헤더에 실어 GET 해야 합니다. 토큰 없이 GET 하면 안 됩니다.

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" \
  http://169.254.169.254/latest/meta-data/

TTL은 X-aws-ec2-metadata-token-ttl-seconds로 정하고 최소 1초, 최대 21600초(6시간)입니다. 토큰이 만료되면 GET이 401을 돌려주니 그때 토큰을 다시 발급하면 됩니다. 경로는 버전 번호 대신 /latest를 쓰는 걸 권장합니다. /2021-03-23/api/token처럼 버전 지정 경로로 PUT 하면 403이 떨어집니다.

주의할 점 하나. IMDS가 에러를 돌려줘도 curl은 종료코드를 성공으로 반환하고, 에러 메시지가 그대로 TOKEN 변수에 담깁니다. 그러면 뒤따르는 GET이 잘못된 토큰으로 실패합니다. 스크립트에서는 curl -f를 붙여 HTTP 에러를 종료코드로 잡아 멈추게 하는 편이 안전합니다.

🔗 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html

🔗 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html

로그인 후 답글을 남길 수 있습니다.