[AWS] ElasticBeanstalk - RDS TimeZone 설정

Ogu·2024년 2월 7일

게시판 프로젝트를 진행하며 LocalDateTime으로 게시글 생성, 수정시간을 AuditingEntityListener로 자동 매핑하고 있었습니다.

그런데 글을 쓰면 9시간 전인 UTC 표준 시간으로 표시되고 있었습니다.

저는 DB로 RDS(MySQL8.0)을 사용하고 있었는데요, DB에 접속하여 SELECT NOW() 를 호출하니 DB 시간 자체가 default인 UTC로 설정되어 있었습니다.

이제 저는 RDS의 time_zone을 바꿔주기로 결정했습니다.

RDS Timezone 설정

RDS 파라미터 그룹 생성

AWS > RDS > 파라미터그룹 > 그룹 생성 에서 그룹을 생성합니다.

아래와 같이 파라미터 그룹 패밀리(DB 종류), 유형, 그룹이름, 설명을 지정합니다.

생성된 파라미터 그룹에서 편집을 누릅니다.

수정 가능한 파라미터에서 time_zone 을 찾아 파라미터를 서울 기준인 Asia/Seoul 로 설정합니다.

해당 RDS 에서 적용

적용할 RDS를 선택하여 수정을 누릅니다.

밑에 있는 추가 구성 > 데이터베이스 옵션 > DB 파라미터 그룹 을 생성한 파라미터그룹으로 지정합니다.

계속 을 눌러 페이지를 넘기고, 수정 예약dmf 즉시 적용으로 선택한 후 DB 인스턴스 수정으로 최종 적용합니다.

RDS 재부팅

적용했다면 해당 RDS의 상태가 수정중으로 되어있습니다. 상태가 사용 가능으로 다시 바뀌었다면 작업 > 재부팅으로 재부팅합니다.

확인

다시 DB에 접속하여 현재시간을 호출해보면 현재 서울의 시간에 맞춰 잘 변경되어 나오는 모습을 볼 수 있습니다.

SpringBoot Timezone 설정

RDS의 시간은 서울시간과 같아졌지만, 아직도 게시글을 작성하면 생성일시가 -9시간으로 표시되고 있었습니다.
로컬에선 문제가 없었던 것으로 보아, 서버의 시간이 default UTC 기준이라서 발생한 문제로 보입니다.

@PostConstructor 로 스프링 애플리케이션 Timezone 설정

@SpringBootApplication
public class UmustbeApplication {

    @PostConstruct
    public void started() {
        TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"));
    }

    public static void main(String[] args) {
        SpringApplication.run(UmustbeApplication.class, args);
    }

}

다시 jar파일 배포 후 확인

profile
Hello! I am Ogu, a developer who loves learning and sharing! 🐤🐤 <br> こんにちは!学ぶことと共有することが好きな開発者のOguです!🐤

0개의 댓글