본문 바로가기
해피 코딩/AWS

S3 설정하고 SpringBoot에 연동하기

by happy-coding 2024. 10. 3.

Simple Storage Service

  • 목표
🔥 AWS 홈페이지에서 S3를 설정하고 SpringBoot에 연동해 보자!!

  • 목차
  1. IAM 생성 및 설정
  2. 엑세스 키 발급
  3. S3 Bucket 생성
  4. SpringBoot에 S3 연동하기

[ IAM 생성 및 설정 ]

  • 검색 - IAM
  • 엑세스 관리 / 사용자 / "사용자 생성" 버튼 클릭


  • 직접 정책 연결
  • S3FullAccess 클릭 후 다음

  • 사용자 이름 및 선택한 권한 확인
  • 사용자 생성

  • IAM 사용자 생성 완료

[ S3 엑세스 키 발급 ]

  • 엑세스 키 발급 이유 
    • S3 버킷에 접근할 때 권한을 인증하기 위해
    • Spring Application에서 S3의 API를 호출할 때 엑세스 키시크릿 키를 사용하여, AWS 계정 소유자임을 인증



  • 설명은 해 되고 안 해도 된다

  • 엑세스 키 생성 완료
    • "엑세스 키, 비밀 엑세스 키"는 개인적으로 보관하거나,
    • ".csv파일 다운로드"를 통하여 보관하도록 하자

[ S3 Bucket 생성 ]

  • 검색 - S3
  • "버킷 만들기" 버튼 클릭

  • 버킷 이름 생성
  • 객체 소유권
    • 로그인한 역할에 따라서 버킷의 객체의 소유권 결정

  • AWS에서는 모든 퍼블릭 액세스 차단을 활성화하도록 권장
  • 퍼블릭 DNS인한 접근 허용
    • ex) 외부에 DNS가 있어도 차단 정책으로 인해 이미지 파일이 보이지 않게 된다

  • 이 외의 다른 설정들은 읽어보고 "버킷 만들기" 버튼 클릭

 

  • 버킷 생성 완료

  • 버킷에 업로드된 이미지가 없는 것을 볼 수 있다

[ SpringBoot에 S3 연동하기 ]


build.gradle
  • S3 의존성 추가
implementation platform("io.awspring.cloud:spring-cloud-aws-dependencies:3.2.0")
implementation 'io.awspring.cloud:spring-cloud-aws-starter-s3'
application.yml
  • AWS / S3 관련 설정 추가
    • 발급받은 Access Key, Secret access Key 입력
    • S3에서 설정한 버킷 이름 입력
    • path에서는 ' / '제거
spring:
  application:
    name: s3_test
  cloud:
    aws:
      credentials:
        access-key: ${ACCESS_KEY}
        secret-key: ${SECRET_ACCESS_KEY}
      region:
        static: ap-northeast-2 # Asia Pacific (Seoul)

  datasource:
    url: jdbc:mysql://localhost:3306/S3-test
    username: ${MYSQL_ID}
    password: ${MYSQL_PASSWORD}
    driver-class-name: com.mysql.cj.jdbc.Driver

s3:
  bucket-name: bucket-pra
  path: images

이로서 AWS S3에서 발급한 정보들을 SpringBoot에 적용시켜 보았다.  

다음번에는 업로드다운로드구현해 보고,

추가로 더 나아가서

1. 업로드 시 이미지 사이즈 제한하기

2.API 응답 속도 향상시키기

를 실습해 보도록 하자.

 

읽어주셔서 감사합니다 😊

 

  • S3 이미지 업로드 및 다운로드 

😺 Blog: https://happy-coding.tistory.com/49