EC2 인스턴스를 생성하면 이는 기본적으로 UTC 시간대로 동작하고 있다.
때문에 시간과 관련된 동작(스케줄러 등)을 실행할 경우 의도한 시간과 다른 시간에 동작하게 될 수 있다.
앞서 포스팅했던, DRS의 시간대로 바꾸었더라도 인스턴스의 시간은 또 별개이다.
또한, 로컬 호스트에서 KST시간대로 잘 돌아갔다고하여, 그대로 업로드해서는 안된다.
올라간 서버코드는 인스턴스의 시간대를 기준으로 작동하기 때문이다.
인스턴스의 시간대를 바꾸는 방법은 두 가지가 있다.
EC2 인스턴스에 SSH로 접속하여 시스템 시간을 로컬 시간대로 변경할 수 있다.
하지만 이 방법은 환경이 다시 배포될 때 시간 설정이 초기화될 수 있으므로 유지보수 측면에서 다소 번거로울 수 있다고한다. (하지만 내가 해보았을 때는 초기화 되지 않았음)
나같은 경우는 Elastic Beanstalk을 통해 환경을 생성하였기 때문에 엘라스틱빈스톡이라고 뜬다.
SSH로 접속을 한 후 홈 디렉토리에서 다음 명령어를 실행한다.
sudo timedatectl set-timezone Asia/Seoul
변경이 완료가 되었다.
잘 변경되었는지 확인해보자.
확인하는 명령어는 다음 두가지이다.
timedatectl! // 시간정보를 자세히 알려줌
date // 현재시간을 알려줌
서버 코드에서 명시적으로 로컬 시간대를 설정하는 방법도 있다.
예를 들어, Node.js에서 moment-timezone 라이브러리를 사용하여 코드 내에서 시간대를 설정하고 시간 기반 작업을 수행할 수 있다.
const moment = require('moment-timezone');
moment.tz.setDefault('Asia/Seoul'); // 로컬 시간대 설정
// 시간 기반 작업 수행
const currentTime = moment().format('YYYY-MM-DD HH:mm:ss');
console.log(currentTime);