문제
Elasticbeanstalk를 생성하면, 기본적으로 인스턴스의 timzone은 utc 0으로 되어있다. 한국시간 (utc +9)를 하기 위해서 인스턴스에 Putty로 접속해서 date를 바꿀 수 있는데, Auto Scaling을 사용할 경우, 인스턴스가 변경될 수 있다. 인스턴스가 변경될 때마다 접속해서 date를 바꾸는 것은 무리가 있다.
방법을 찾아본 결과, JAR파일을 배포할 때 Linux의 환경설정을 해주는 설정파일을 함께 zip으로 압축해서 배포하면, 인스턴스가 생성될 때 설정파일을 읽어서 설정해주는 기능이 있는 것을 알게 되었다.
해결책1 - EC2의 Lisnux TimeZone을 한국시간으로 변경하기.
1. ElasticBeanstalk 설정폴더, 설정파일 만들기
Elastic Beanstalk의 설정파일은 ".ebextensions" 에 저정하면 된다. 설정파일이름은 크게 상관 없지만, 00, 01, 02 순으로 읽는 다고 한다. 해당 디렉토리에 00-set-timezone.config 라는 이름의 설정파일을 만든다.
commands:
set_time_zone:
command: ln -f -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
2. JAR패키징과 압축하기
JAR파일과 .ebextensions를 함께 "zip"파일로 압축해준다.
3. 배포하기
압축한 zip파일을 aws에 배포한다.
해결책2 - 소스코드를 UTC로 변경하기
소스 코드를 UCT로 변경하고, 프론트에서 받아서 localTimeZone으로 변경하여 사용하는 방법..
서버 사이드에서는 UTC만 사용하기 때문에 따로 배포 서버 설정값을 변경할 필요가 없다. 가장 적절한 해결법이라 생각한다.
참고자료
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/set-time.html#change_time_zone
https://hidelryn.github.io/2019/05/12/etc-aws-ec2-timezone/
https://techblog.woowahan.com/2539/
댓글