본문 바로가기
개발/Cloud

[AWS, Github Action] Elastic Beanstalk에 SpringBoot 프로젝트 Docker로 배포하기 (3) - EB 환경 설정 및 RDS 연결

by 똥먹는낙타 2023. 3. 17.
728x90
반응형

✅ Elastic Beanstalk 환경 구성 1 (RDS 제외)

우선 RDS는 제외하고 환경을 구성한 뒤 [구성 > 데이터베이스 편집]을 통해 추가해주었다.

1. 플랫폼 : Docker

2. 소프트웨어

  • 프록시 서버 : 없음
  • 환경 속성
    • AWS_ECR_IMAGE : {AWS계정명}.dkr.ecr.{ECR이 속한 region명}.amazonaws.com/earth-demo:{Image태그명}
    • RDS_DBNAME : 내가 설정한 DB 이름
    • RDS_DRIVER : com.mysql.cj.jdbc.Driver
    • RDS_HOSTNAME : DB 엔드포인트 주소
    • RDS_PASSWORD
    • RDS_PORT : 3306 (MySQL 기본 포트)
    • RDS_USERNAME

🚨 나의 경우 RDS_DRIVER 부분을 intellij의 build.gradle에 넣어줬던 dependency로 잘못 기입해서 빌드 오류로 며칠동안 고생했다.. 제대로 확인하고 기입할 것!!!!!!

🚨 AWS_ECR_IMAGE는 기존에 만든 ECR Repository에서 어떤 image를 가져올 지 정하는 부분인데, 처음에는 생성된 image가 없기 때문에 위와 같이 작성해준다.

 

3. 용량 : 로드 밸런싱 수행 (인스턴스 최소 1, 최대 1) 추후 필요에 따라 조절할 예정

 

4. 로드 밸런서 : Application Load Balancer

 

5. 롤링 업데이트와 배포 수정 : 개발 완료 후에는 배포 방식을 추가 배치를 사용한 롤링으로 적용할 예정이나, 개발 단계에서는 빠른 업데이트를 위해 한 번에 모두 방식을 사용할 예정

 

📌 배포 방식

  • 한 번에 모두
    • 모든 애플리케이션을 한 번에 배포하는 것이다. 가장 빠르지만, 잠시동안은 트래픽을 받아낼 수 없다. 서버를 모두 정지 시키고 다음 버전을 생성하게 되어 다운 타임이 있고, 추가 비용은 없다.
  • 추가 배치를 사용한 롤링
    • 새 인스턴스를 만들어서 롤링하는 방식이다. 새 인스턴스를 더 배포해서 정상이 되면 예전 버전을 삭제 시키는 롤링 작업이다. 비용 추가가 있고, 배포 시간이 오래 걸리며, 이전 버전과 새 버전이 동시에 살아 있을 때가 있다.

6. 보안

  • 키 페어 : 앞에서 만들어주었던 IAM 사용자
  • IAM 인스턴스 프로파일 확인 : aws-elasticbeanstalk-ec2-role
    • 나중에 The ECR service failed to authenticate your private repository 에러가 뜰 수 있으므로 ECR 접근 권한을 추가해주어야 한다.
    • [IAM의 액세스 관리 > 역할]에 들어가서 aws-elasticbeanstalk-ec2-role 을 선택하고 정책 연결을 통해 AmazonEC2ContainerRegistryReadOnly 권한 추가

 

✅ Elastic Beanstalk 환경 구성 2 (RDS)

  • EC2 신규 보안 그룹 생성 (rds-local-connection)
    • 3306 포트에 대해 로컬에서 접근 가능한 인바운드 규칙 설정

  • RDS DB에 신규 생성한 보안 그룹 적용
    • RDS > 데이터베이스 > DB 인스턴스 > 수정 > 연결 > 보안 그룹 (rds-local-connection) 추가 > 즉시 적용

 

✅ Intellij에 MySQL RDS 연결

  • Intellij 우측 Database > ‘+’ > Data Source > MySQL

  • Host : RDS 엔드포인트
  • User : mysql username
  • Password : mysql password
  • Database : 연결할 DB name

위 사항들을 모두 기입해주면 알아서 Name이 완성된다.

OK를 누르기 전에 Test Connection을 통해 연결이 잘 되는지 확인한다.

  • build.gradle 설정
// mysql
    runtimeOnly 'com.mysql:mysql-connector-j'

 

✏️ 참고

https://earth-95.tistory.com/123?category=975627

https://velog.io/@lorlorv/IntelliJ-MySQL-AWS-RDS-인텔리제이에-연결하기

https://velog.io/@fksk94/AWS-CDA-Elastic-Beanstalk

728x90
반응형

댓글