소프트웨어→ 편집 → 환경 속성
보안
이렇게 설정해주고 EB 를 만들어 주면 된다!..
구성 정리
(1) EC2
퍼블릭 ip : 43.200.50.98
프라이빗 ip : 172.31.10.35
VPC ID : vpc-07522b959b6f9b266
보안그룹 이름 : awseb-e-qmdcwqz2yi-stack-AWSEBSecurityGroup-1H2QNSGMU5A5Q
보안그룹 ID : sg-02811273243c920a5
정리 해놓기
일단 VPC 는 Virtual Private Cloud 의 약자로 가상 개인용 클라우드라는 뜻을 가지고 있다.
VPC 의 내부에는 다음 그림과 같이 EC2가 있고, EC2 의 보안그룹이 오른쪽 그림과 같이 존재할 것이다.
우리는 이제 RDS 를 추가할 건데 RDS 가 무엇이냐? RDS는 Relational Database Service 의 약자로서
EC2 서버에 DB가 깔려 있는 것이라고 생각 하면 된다.
그렇다면 위의 그림처럼 RDS를 EC2 에게만 개방하려면 어떻게 해야할까?
첫번째로는, 파란 줄이 쳐져있는 EC2의 IP들을 개방하는 방법이 있고
두번째로는, 같은 보안그룹에 넣어주면 된다!(같은 보안그룹끼리는 접근이 가능해지기 때문에!)
자~ 이제 RDS 를 한번 생성해보자
밑에 그림으로 설명을 대신하도록 하겠다.
정상적으로 생성된 RDS 확인.
이름 : aws-v4-rds
엔드포인트
aws-v4-rds.c18iilhiyk2x.ap-northeast-2.rds.amazonaws.com
포트 : 3306
VPC 보안 그룹 클릭
인바운드 규칙에 3306 포트가 없으므로 추가해주자!
로컬 컴퓨터에서 통신 가능하도록 내 IP 와 보안그룹을 열어줘서 보안 그룹내에서 자유롭게 통신 가능하도록 설정!
이제 RDS와 연결해보도록 하자.
HeidiSQL을 설치
신규 클릭
이름: aws-v4-marid
호스트명 : RDS 엔드포인트
사용자 : RDS 만들때 적었던 사용자 명
암호 : RDS 만들때 적었던 암호 값
RDS 에 원격으로 접속 성공!
테이블을 만들어주고(MariaDB는 대소문자 구별 Book 주의!)
기존 character set 이 latin 으로 잡혀서 한글이 깨질 수 있기 때문에 utf8mb4 로 변경해 준다.
server:
port: 8081
servlet:
encoding:
charset: utf-8
spring:
...
jpa:
open-in-view: true
hibernate:
ddl-auto: create
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
show-sql: true
properties:
'[hibernate.format_sql]': true
output:
ansi:
enabled: always
//서버 실행시에 색깔이 이쁘게 나타난다
logging:
level:
'[org.springframework.boot.web]': DEBUG
// 로깅 레벨 : DEBUG INFO WARN ERROR
//로깅 레벨을 DEBUG로 설정해주면 모든 log 가 다 뜰것이고
//로깅 레벨을 INFO로 설정해주면 INFO WARN ERROR log 만 뜨게 된다.
server:
port: 5000 //포트가 5000번인 모습
servlet:
encoding:
charset: utf-8
spring:
datasource:
url: jdbc:mariadb://${rds.hostname}:${rds.port}/${rds.db.name}
driver-class-name: org.mariadb.jdbc.Driver
username: ${rds.username}
password: ${rds.password}
jpa:
open-in-view: true
hibernate:
ddl-auto: none
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
logging:
level:
'[org.springframework.boot.web]': INFO
{rds.port}/${rds.db.name} 이 값들은 도대체 뭐지?
깃허브에 코드들이 쌩으로 올라가게 되면 보안이 좋지 않기 때문에 우분투에서 환경변수를 사용하듯이 위에서 엘라스틱 빈스톡을 만들때 설정한 환경 속성 값을 설정하고 ${ } 안에 변수를 넣으면 값이 들어가게 된다. 이렇게 되면 노출될 일이 없을 것이다.
참고)RDS_HOSTNAME 에는 RDS 엔드포인트 값이 들어간다
jar 파일 만들어서 엘라스틱 빈스톡에 배포
postman 을 통해 post 요청 보낸 후 확인해보니 RDS 까지 연결이 잘 된 모습!
CI/CD 만 남았다.. 힘내보자