AWS S3 cli RequestTimeTooSkewed 에러 원인, 해결 방법입니다

ToC on/off

개요

aws의 s3를 이용하면서 aws cli를 이용해 접근하는 경우가 있습니다. 이럴 때 간혹 오류가 발생하는데 제가 최근에 겪었던 원인에 대해 알아보고 해결 방법을 찾아보겠습니다.

S3 cli

저는 DB서버에서 DB백업을 주기적으로 하면서 백업된 파일을 s3에 보관하는 이중백업을 설정해두었습니다.

aws cli를 이용해서 s3로 백업하는 명령어는 대략 다음과 같습니다.

# Linux
~# aws s3 sync /backup/dbback/ s3://db.back/db_back

# Windows
 > aws s3 sync D:\DBBack s3://db.back/

오류 상황

그런데 한동안 바빠서 서버에 신경을 쓰지 못했다가 오래간만에 들어갔더니 s3로 백업된 데이터가 하나도 없는 것이었습니다.

무슨일인지 궁금해서 이리저리 찾아보다가 s3로 백업하는 명령어를 직접 입력해보았더니 아래와 같은 메시지가 떴습니다.

오류 원인

그동안 s3를 이용하면서 오류가 한번도 없었기에 순간 살짝 당황했는데 오류 메시지를 자세히 살펴보니 해답이 있었습니다.

우선 핵심 단어인 RequestTimeTooSkewed 를 잘 분석해보면 Request Time Too Skewed 로 나누어 볼 수 있습니다. 요청 시간이 너무 어긋나 있다. 왜곡되었다. 이렇게 볼 수 있습니다.

그리고, 그 아래에 좀 더 자세한 메시지가 있습니다.

The difference between the request time and the current time is too large.

즉, 요청한 시간(the request time)과 현재 시간(the current time)의 차이가 너무 크다라고 해석할 수 있겠습니다.

결국 디비서버에서 aws s3로 요청한 시간과 현재시간(또는 aws s3의 시간) 사이에 차이가 커서 비정상적인 접근이라고 판단하는 것으로 보였습니다. 그래서 혹시나 해서 서버 시간을 살펴봤더니 실제 시간보다 15분 정도나 차이가 나는 것을 발견했습니다.

해결 방법

분명 서버에서 시간을 자동으로 동기화 하도록 설정해두었는데 무슨 일인지 차이가 생겼더군요. 그래서 서버 시간을 수동으로 동기화하고 나서 명령을 실행하니 문제가 없이 잘 작동했습니다.

이래서 서버 관리는 아무리 바빠도 주기적으로 해야 한다는 것을 다시 한번 뼈저리게 느꼈습니다.

참고 문서

실제로 aws s3 오류 메시지 도움말에 보면 잘 나옵니다.

https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/API/ErrorResponses.html

해당 항목을 살펴보니 이렇게 서버 시간과 너무 차이가 커서 오류로 판단하는 경우라고 확인되었습니다.

RequestTimeTooSkewed : The difference between the request time and the server’s time is too large. : 403 Forbidden : Client
Tags: aws s3