본문 바로가기

항해99

항해99 42일차 TIL1 - GitHub Action - EB 배포 오류 수정기

시간이 없기에 무지성으로 에러를 수정하는 방향으로 가겠습니다. 원인은 대략적으로만 파악합니다.

 

마주한 에러들

 

  • 데이터 베이스 방언 미설정으로 인한 예외
  • AWS RDS를 이용했을 때 Time out 에러가 나는 경우
  • application.properties 가 gitignore 대상인 경우

 

 

 

데이터 베이스 방언 미설정으로 인한 예외

 

예외가 터진 곳으로 가보자. DialectFactoryImpl 100줄

예외 메시지를 보면 대략적으로 hibernate.dialect을 설정하지 않았다는 소리같다.

 

application.properties 에 아래 코드를 추가하자.

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

 

시간이 지나고 MySQL이 버전업이 되면 변경될 수 있으니 참고하면 좋을 것 같습니다.

 

 


AWS RDS를 이용했을 때 Time out 에러가 나는 경우

소켓이 타임 아웃날 수 있는 경우는 많겠지만 예외를 추측하면 대략적으로 DB를 연결하는데 타임아웃이 발생했다는 것 같다.

 

인프런 - 서버 배포 오류 Q&A 의 답변과 링크들을 확인하면 해결책을 찾을 수 있다.

 

해결책, AWS RDS 해당 인스턴스에 들어가서 인바운드 규칙에 두 가지 규칙을 추가하면 된다.

RDS에서 모든 접근을 허용해서 해결했다. 현업에서는 타겟을 해준다고 합니다.

 

인바운드/아웃바운드란?

인바운드와 아웃바운드는 트래픽이 네트워크간에 이동하는 방향을 말합니다.

 

인바운드란 내 서버로 들어오는 트래픽에 대한 포트

아웃바운드란 내 서버가 호출할 때 나가는 포트

 

다시 말해 위와 같이 인바운드 규칙을 허용하면 어떤 곳에서라도 내 서버에 들어오는 트래픽을 다 허용하겠다는 의미입니다.


application.properties 가 gitignore 대상인 경우

 

원격 repo에 application.properties가 없는 상황인데요. 그래서 배포 시 오류가 발생하는데 이 문제를 해결하는 방법 중 하나는 setting - Secrets and variables 를 활용하는 방법입니다.

 

 

 

1. New repository secret 클릭

 

2. Name/Secret 설정

 

Name은 자유롭게 구성하자. PROPERTIES 등 application.properties에 알맞는 Name을 설정하면 된다.

Secret에는 아래와 같이 application.properties 파일에 들어있는 내용을 담으면 된다.

 

 

3. 이후 github action 배포 실행 시 수행되는 스크립트를 수정해야합니다.