본문 바로가기
카테고리 없음

Elastic Beanstalk에 자바 JAR 배포 시, Timezone 변경하기 (aws/Elasticbeanstalk/linux2/ jar파일)

by juniKang 2022. 3. 24.

문제

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

 

Linux 인스턴스의 시간 설정 - Amazon Elastic Compute Cloud

UTC=true 항목을 다른 값으로 변경하지 마세요. 이 항목은 하드웨어 클록에 대한 것으로, 인스턴스에 대해 다른 표준 시간대를 설정할 때 따로 조정할 필요가 없습니다.

docs.aws.amazon.com

https://hidelryn.github.io/2019/05/12/etc-aws-ec2-timezone/

 

Amazon Linux2에서 timezone 변경 해보기

Amazon Linux2에서 timezone 변경 해보기 2019-05-12 18:50:40 # AWS 리눅스의 default timezone 기본적으로 utc 0으로 설정 되어 있다. 아래는 ec2에서 date를 찍을 떄와 moment-timezone를 이용해서 한국 시간(utc +9)으로

hidelryn.github.io

https://techblog.woowahan.com/2539/

 

Elastic Beanstalk Configuration files(.ebextensions) | 우아한형제들 기술블로그

{{item.name}} Elastic Beanstalk 사내 서버 인프라가 거의 대부분 AWS 환경으로 넘어가면서 신규로 구축되는 많은 시스템들이 배포 및 확장, 관리등의 용이성 때문에 Elastic Beanstalk 으로 구축되고 있습니

techblog.woowahan.com

 

 

 

댓글