안녕하세요! 네이버 클라우드 API 호출 시 "Authentication Failed"와 “Expired timestamp” 오류가 발생하는 문제는 주로 API 요청에 포함된 타임스탬프가 서버 기준 시간과 맞지 않을 때 나타납니다. IaC 환경에서 자동화하다 보면 시간 동기화 이슈가 자주 발생하는데, 아래 단계별 점검과 해결책을 참고해 보세요.
1. 타임스탬프 생성 방식 점검
네이버 클라우드 API는 일반적으로 UTC 기준의 밀리초 단위 타임스탬프를 요구합니다.
date +%s는 초 단위 Unix timestamp이며, 밀리초 단위가 아닙니다.
따라서, 아래처럼 밀리초 단위로 변환하여 사용해야 합니다.
TIMESTAMP=$(($(date +%s%N)/1000000))
또는 TZ 설정을 명시적으로 하여 UTC 시간을 정확히 얻습니다.
TIMESTAMP=$(date -u +%s%3N)
(%3N은 GNU date에서 밀리초 3자리)
2. 클라이언트 시스템 시간 동기화 확인
API 서버와 클라이언트 간 시간 차이가 크면 인증 실패가 발생합니다.
다음 명령어로 서버 시간과 클라이언트 시간을 비교하세요.
date -u
NTP(Network Time Protocol) 또는 chrony, ntpd 같은 시간 동기화 서비스가 정상 동작하는지 확인합니다.
timedatectl status
만약 시간 동기화가 안 되어 있다면, 아래처럼 NTP를 활성화하세요.
sudo timedatectl set-ntp true
3. API 요청 서명(Signature) 생성 시 타임스탬프 반영 확인
IaC 도구(예: Terraform, Ansible, CloudFormation 등)나 직접 스크립트에서 서명 생성 로직에 타임스탬프가 올바르게 포함되어야 합니다.