[AWS] ElasticBeanstalk - RDS TimeZone 설정

Ogu·2024년 2월 7일
1

게시판 프로젝트를 진행하며 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
私はゲームと日本が好きなBackend Developer志望生のOguです🐤🐤

0개의 댓글