들어가기 전에
처음 RDS와 EC2를 사용할 때에 따로 설정하지 않으면 timezone은 UTC로 들어가게 됩니다. 현재 살고 있는 곳과 동일한 시간대여야 추후 crontab 등을 이용하거나, 로그가 남은 시간이 정확히 언제인지 로컬 타임으로 확인할 수 있도록 timezone을 Asia/Seoul로 변경해보고자 합니다. 이번 포스팅에서는 RDS의 timezone 설정하는 법을 알아보겠습니다. 더불어, RDS에 데이터를 넣는 주체인 SpringBoot에 대한 timezone 설정까지 알아보겠습니다.
RDS TIMEZONE 설정 하기 - DB 파라미터 그룹 변경
RDS를 생성할 때 따로 설정해주지 않으면 RDS의 DB 파라미터 그룹은 default 그룹으로 생성됩니다. default 그룹은 파라미터 값 수정이 안되기 때문에 신규 그룹을 생성하여 변경하였습니다.
먼저, 하기와 같은 과정을 통해 신규 DB 파라미터 그룹을 생성합니다.
- 신규 DB 파라미터 그룹에는 timezone을 위와 같이 자신이 거주하는 지역(예:
한국 ➤ Asia/Seoul
)을 넣어야 합니다.
그 후, 변경하고자 하는 RDS 인스턴스에 접근하여 수정 버튼을 누르고 DB 파라미터 그룹을 신규로 생성한 항목으로 설정합니다.
기본적으로, RDS의 timezone 설정은 완료되었습니다. 하지만, 만약 SpringBoot과 같은 어플리케이션을 이용해 DB에 timestamp를 남긴다면, RDS 설정이 아무리 Asia/Seoul로 되어 있어도 아래와 같이 여전히 UTC로 뜨게 됩니다.
SpringBoot의 default timezone 설정
이를 해결하기 위해서는 아래와 같이 SpringBoot에서 하기와 같은 설정을 진행해주어야 합니다.
@SpringBootApplication
public class BreadMapBackendApplication {
// Bean 생명주기를 이용한 timezone 설정
@PostConstruct
public void started() {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"));
}
public static void main(String[] args) {
SpringApplication.run(BreadMapBackendApplication.class, args);
}
}
@PostConstruct
는 Bean이 완전히 초기화된 후 한 번만 호출되는 메소드입니다.@SpringBootApplication
어노테이션이 부여된 Application Class에서@PostConstruct
가 부여된 메소드를 생성하고 timezone을 설정하면, 어플리케이션 실행 시 timezone을 원하는대로 변경할 수 있습니다.
위처럼 @SpringBootApplication 어노테이션이 붙은 클래스에 timezone 설정을 @PostConstruct 어노테이션으로 넣어주면 하기와 같이 시간이 제대로 넣어지는 것을 확인할 수 있습니다.
참고자료
'Server > CLOUD' 카테고리의 다른 글
[AWS, Github Action] Elastic Beanstalk에 SpringBoot 배포하기(2) - IAM 인증키 Github Action에서 사용하여 배포 (0) | 2021.10.14 |
---|---|
[AWS] Github Action을 통해 Elastic Beanstalk으로 배포된 EC2 timezone 설정하기(.ebextensions) (0) | 2021.10.13 |
[AWS, Github Action] Elastic Beanstalk에 SpringBoot 배포하기(1) - EB 기본 세팅 (0) | 2021.10.12 |
[AWS] IAM 유저 생성하기 (0) | 2021.09.26 |
[AWS] Elastic Beanstalk (0) | 2021.09.16 |