JSCODE Logo
JSCODE 박재성JSCODE 제이온JSCODE 시니
온라인 강의프로그래밍 과외책/전자책무료 강의
유튜브블로그
후기
완강 후기 이벤트블로그 리뷰 이벤트AWS SAA 합격 후기 이벤트
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2026 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침

비전공자도 이해할 수 있는 AWS 입문

백엔드 API 서버 배포하기 (EC2)

배포(Deployment)란
EC2란? / EC2를 왜 배울까? / 현업에서 EC2는 주로 언제 쓸까?
[실습] 1. 리전(Region) 선택하기
[실습] 2. EC2 셋팅하기 - 기본 설정
[실습] 3. EC2 셋팅하기 - 보안그룹 설정
[보충 강의] IP와 Port의 개념
[실습] 4. EC2 셋팅하기 - 스토리지 구성
[실습] 5. EC2 접속하기
[실습] 6. 탄력적 IP 연결하기
[실습] 7. Express 서버를 EC2에 배포하기
[보충 강의] 7-2.
비용 나가지 않게 EC2 깔끔하게 종료하기

도메인 연결하기 (Route 53)

Route 53이란? / DNS란? / 현업에서의 Route53 활용 여부
[실습] 1. Route53에서 도메인 구매
[실습] 2. Route53의 도메인을 EC2에 연결하기
[보충 강의] 무료로 도메인 구매하는 방법

HTTPS 연결하기 (ELB)

ELB란? / TLS, SSL과 HTTPS
ELB를 활용한 아키텍처 구성
[실습] 1. ELB 셋팅하기 - 기본 구성
[실습] 2. ELB 셋팅하기 - 보안그룹
[실습] 3. ELB 셋팅하기 - 리스너 및 라우팅 / 헬스 체크
[실습] 4. ELB에 도메인 연결하기
[실습] 5. HTTPS 적용을 위해 인증서 발급받기
[실습] 6. ELB에 HTTPS 설정하기
비용 나가지 않게 ELB 깔끔하게 종료하기
[보충 강의] HTTPS 연결 시 ELB vs Nginx, Certbot
[보충 강의] Nginx, Certbot을 활용해 HTTPS 연결하기

데이터베이스 연결하기 (RDS)

RDS란? / RDS를 왜 사용하는걸까? / 현업에서의 RDS
RDS를 활용한 아키텍처 구성
[실습] 1. RDS 생성하기
[실습] 2. 보안그룹 설정하기
[실습] 3. 파라미터 그룹 추가하기
[실습] 4. RDS에 접속하기
[실습] 5. Express 서버에 RDS 연결하기
[실습] 5-2. Spring Boot 서버에 RDS 연결하기
비용 나가지 않게 RDS 깔끔하게 종료하기

파일 및 이미지 업로드 (S3)

S3란? / S3를 왜 사용하는걸까? / 현업에서 S3를 많이 사용할까?
S3를 활용한 아키텍처 구성
[실습] 1. S3 버킷 생성하기
[실습] 2. S3에 파일 업로드 할 수 있도록 IAM에서 액세스 키 발급받기
[실습] 3. S3를 활용해 Express 서버에 이미지 업로드 기능 구현하기
[실습] 3-2. S3를 활용해 Spring Boot 서버에 이미지 업로드 기능 구현하기
비용 나가지 않게 S3 깔끔하게 종료하기

웹 페이지 배포하기 (S3, Cloudfront)

웹 서비스를 배포할 때 사용하는 S3, CloudFront
S3, CloudFront를 활용한 아키텍처 구성
[실습] 1. S3 버킷 셋팅하기
[실습] 2. S3에 업로드하기 / 웹 호스팅 설정하기
[실습] 3. CloudFront 생성하기
[실습] 4. 도메인 연결하기, HTTPS 적용하기
비용 나가지 않게 S3, CloudFront 깔끔하게 종료하기

기타

[보충 강의] 혹시나 비용 나가지 않는 지 체크하는 방법
[보충 강의] 사용 중인 Public IPv4 확인하는 방법
← 블로그 목록으로 돌아가기

[실습] 3-2. S3를 활용해 Spring Boot 서버에 이미지 업로드 기능 구현하기

JSCODE 박재성
JSCODE 박재성
2026. 03. 11.
author
JSCODE 박재성
category
AWS
createdAt
Nov 30, 2025 04:00 AM
isPublic
isPublic
series
비전공자도 이해할 수 있는 AWS 입문
slug
springboot-s3-image-upload
type
post
updatedAt
Mar 11, 2026 09:00
❗
리눅스와 Spring Boot에 대한 수업이 아니므로, 리눅스 명령어나 Spring Boot 코드에 대한 자세한 설명은 생략한다.
 

✅ 1. EC2 인스턴스에서 Spring Boot 서버 clone하기

aws-s3-springboot
JSCODE-BOOK • Updated Feb 17, 2026
$ git clone https://github.com/JSCODE-BOOK/aws-s3-springboot.git
 

✅ 2. application.yml 파일 수정하기

스프링 부트에서 참조하는 AWS 자원의 정보를 설정하기 위해 application.yml 파일을 엽니다.
$ cd aws-s3-springboot/src/main/resources $ vi application.yml
 
application.yml
server: port: 80 spring: datasource: url: jdbc:mysql://_________:3306/instagram # RDS 인스턴스 엔드포인트 username: ______ # RDS 마스터 사용자 이름 password: ______ # RDS 마스터 암호 driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: create show-sql: true cloud: aws: credentials: access-key: _________ # IAM 통해서 발급받은 액세스 키 secret-key: _________ # IAM 통해서 발급받은 비밀 액세스 키 s3: bucket: _______ # 생성한 S3 버킷명 region: static: ap-northeast-2
이 실습에서는 편의를 위해 application.yml 파일을 리포지토리에 업로드했습니다. 만약 자신의 스프링 부트 프로젝트를 퍼블릭 깃허브 리포지토리에 업로드한다면 .gitignore를 활용하여 application.yml 파일을 제외해야 합니다.
 

✅ 3. 스프링 부트 서버 실행하기

$ sudo lsof -i:80 # 80번 포트에서 실행되는 프로세스 확인 $ sudo kill {PID 값} # 80번 포트에서 실행되는 프로세스가 있다면 종료 $ cd ~/aws-s3-springboot $ ./gradlew clean build -x test # 스프링 부트 프로젝트 빌드 $ cd build/libs $ sudo nohup java -jar aws-s3-springboot-0.0.1-SNAPSHOT.jar & # JAR 파일 실행
 

✅ 4. 스프링 부트 서버 상태 확인하기

$ sudo lsof -i:80
notion image
 

✅ 3. S3에 파일 업로드가 잘 되는 지 확인하기

notion image
notion image
 

✅ 4. S3에 저장된 URL로 이미지 잘 조회되는 지 확인

방법 1) HTML에서 확인하기
index.html
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <h1>이미지 테스트</h1> <img src="______"/> </body> </html>
 
방법 2) 주소창에 주소 쳐보기
notion image
 
📎
이 글은 비전공자도 이해할 수 있는 AWS 입문/실전 강의의 수업 자료 중 일부입니다.