AWS-RDS MySQL

8.2. RDS(MySQL)와 EC2 연동 및 RESTful API 테스트

backend 따라쟁이 2025. 2. 4. 23:43

2-1. AWS RDS(MySQL) 인스턴스 생성

1. AWS RDS 서비스로 이동   . 검색 창에 RDS 입력, 서비스 목록에 RDS 클릭하면 Amazon RDS 대시보드 화면이 오픈됨 

(그림) RDS 검색, 서비스에 RDS 클릭

 

2. "데이터베이스 생성" 클릭하여 RDS MySQL 데이터베이스 생성 시작 

(그림) 데이터베이스 생성 버튼 클릭

 

3. 데이터베이스 생성 방식 및 MySQL 엔진 선택

(그림1) 표준 생성, 엔진으로 MySQL을 선택

 

(그림2) 에디션, 엔진 버전은 Default 설정 유지

4. 템플릿으로 프리티어 옵션 선택

(그림) 템플릿으로 "프리 티어" 선택

 

5. 설정에서 DB 인스턴스 식별자, 마스터 사용자(admin)에 대한 암호 입력
   . 자격 증명 관리는 "자체 관리" 선택

(그림) DB 인스턴스 명, admin 암호 등록

6. 프리티어 인스턴스 구성 선택 (db.t3.micro)

(그림) 인스턴스 구성 db.t3.micro 선택, 스토리지는 Default 설정 유지

 

7. 연결 정보에서 컴퓨팅 리소스로 "EC2 컴퓨팅 리소스에 연결"을 선택

    . EC2 인스턴스 정보에서 AP서버 용으로 생성한 EC2 인스턴스를 선택 합니다.
      지금까지 순서 대로 따라 오셨으면 콤보박스를 클릭하면 앞에서 생성한 EC2 인스턴스를 목록에서 확인 할 수 있음.

      EC2 인스턴스를 아직 만들지 않은 경우 지금 "EC2 인스턴스 생성"버튼을 클릭하여 생성할 수 있으며,
      바로 생성하지 않을 경우 "EC2 컴퓨팅 리소스에 연결 안 함"을 선택 DRS 생성 진행하면 됩니다.

      이 경우 DRS 생성 후 EC2 인스턴스 연결 정보를 별도로 설정해 주면 됩니다.

(그림1) AP서버로 생성안 EC2 컴퓨팅 리소스 연결 하기
(그림2) 연결정보에 추가 구성을 클릭하면 데이터베이스 포트 정보를 확인할 수 있으며, Default 포트로 3306이 설정되어 있음

 

8. 데이터베이스 생성 완료 후 엔드포인트 확인

(그림1) 데이터베이스 생성 버튼 클릭
(그림2) 데이터베이스 화면으로 전환, 생성 요청한 데이터베이스 확인 가능 (조금 기다리면 "사용 가능" 상태가 됨)

 


2-2. EC2에서 MySQL 접속 및 설정

1. EC2 인스턴스에 MySQL 클라이언트 설치
sudo apt install mysql-client -y
 
2. EC2 인스턴스에서 RDS 인스턴스에 접속하여 데이터베이스와 유저, 테이블을 생성 합니다.
mysql -h your-rds-endpoint -P 3306 -u admin -p

 

CREATE DATABASE backend_db;
CREATE USER 'backend_user'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON backend_db.* TO 'backend_user'@'%';
FLUSH PRIVILEGES;

 

your-rds-endpoint 확인/복사 방법
   데이터베이스 화면에서 생성한 데이터베이스의 엔드포인드(your-rds-endpoint)를 복사 합니다.

 

(그림) 데이터베이스 화면에서 방금 생성한 "DB 식별자" 이름을 클릭하면 보여지는 화면으로 엔드포인트(your-rds-endpoint)와 포트 확인 가능

2-3. EC2 인스턴스에서 Spring Boot 기동시 RDS(MySQL) 연결 하기

1. EC2 인스턴스에 application.properties 파일을 복사하고 RDS 연결 정보를 수정 합니다.

 - 로컬PC에 application.properties 파일을 EC2 서버로 복사 합니다.
   아래 command에 sshkey.pem과 your-ec2-ip는 나의 EC2 인스턴스에 맞 게 수정하여 사용해야함.

scp -i ./sshkey.pem application.properties ubuntu@your-ec2-ip:/home/ubuntu/

   

- EC2 인스턴스로 복사될 파일에 RDS(MySQL) 연결 정보를 수정 합니다.
  파란색 표기 부분을 내가 생성한 RDS MySQL서버에 맞게 수정하여 사용함.

  <application.properties 파일> 

spring.datasource.url=jdbc:mysql://your-rds-endpoint:3306/backend_db
spring.datasource.username=backend_user
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update

2. EC2 인스턴스에서 application.properties 파일을 사용하여 Spring boot를 기동합니다.

  - 아래 command에서 myapp.jar과 application.properties는 내 jar파일과 properties 파일에 맞게 수정하여 사용해야함.

java -jar myapp.jar --spring.config.location=application.properties

 

 

RDS생성시 " EC2 컴퓨팅 리소스에 연결 안 함"을 선택한 경우 EC2 연결 설정 하기

(그림) RDS생성시 " EC2 컴퓨팅 리소스에 연결 안 함"을 선택한 경우 데이터베이스 화면에 "EC2 연결 설정"버튼을 클릭

 

(그림) EC2 연결설정 화면이 오픈되면, EC2 인스턴스를 선택하고 "계속"버튼을 클릭, 다음 검토 및 확인하고 설정 완료하면됨.

 

 

 

 

3. EC2와 Spring boot와 RDS mySQL이 정상 기동 후 curl 명령을 이용한 API 호출 테스트 

스크립트는 curl 명령어를 활용하여 RESTful API를 호출합니다. curl은 HTTP 요청을 수행할 수 있는 명령어로, 다양한 API 테스트 및 서버와의 통신을 자동화할 수 있습니다.

 

(1) POST 요청 - 데이터 입력

   curl -X POST -H "Content-Type: application/json"  -d "{ \"value\" : \"테스트 입력\" }" http://your-ec2-ip:8080/api/data 

  • -X POST : POST 요청을 전송
  • -H "Content-Type: application/json" : 요청의 데이터 형식을 JSON으로 지정
  • -d "{ \"value\" : \"$value\" }" : JSON 데이터를 전송

(2) PUT 요청 - 데이터 수정

  curl -X PUT -H "Content-Type: application/json"  -d "{ \"value\" : \"테스트 수정\" }" http://your-ec2-ip:8080/api/data/1

 

(3) DELETE 요청 - 데이터 삭제 

  curl -X DELETE -H "Content-Type: application/json"  -d "{ \"value\" : \"삭제\" }" http://your-ec2-ip:8080/api/data/1

 

(4) GET 요청 - 데이터 조회


  curl -X GET http://your-ec2-ip:8080/api/data/0 

 

※ 참고 : "curl 명령으로 RESTful API 테스트 호출하는 Shell 프로그램 개발하기"
                https://junkcode.tistory.com/1