Springboot S3로 이미지 업로드 AWS 설정

Juice🌱·2024년 1월 11일
2

SpringBoot

목록 보기
1/7
post-thumbnail

🔎 S3 ?
AWS(Amazon Web Service)에서 제공하는 인터넷 스토리지 서비스입니다.
S3(Simple Storage Service) 를 뜻합니다.

이미지 저장, 활용등 백엔드에서 수행할 때 로컬에서 저장하고 활용할 수 있지만, AWS S3를 활용해서 저장하는 것

🤔 왜 S3를 사용할 까?

  • 높은 보안성
  • 저렴한 비용
  • 빠른 속도

🗺️ 사용 방법

  1. s3 버킷 만들기
    객체(Object) ? 버킷(bucket)?
    객체 - 파일, 파일 정보로 구성된 저장단위 -> 그냥 파일
    버킷 - 파일 정보 저장, 관리하는 컨테이너 -> 파일관리 시스템

  2. 버킷 이름 + region 선택

  3. public access 설정 -> 모두 해제(그래야 업로드한 사진 확인가능)

  4. 버킷 버전관리 + 기본 암호화 설정

  5. 버킷 정책 편집
    권한 -> 버킷정책 -> 편집 -> 버킷정책 -> 버킷 ARN 복사 후 정책 생성기 클릭

  6. 정책 설정

    Policy -> S3 Bucket Policy
    Principal ->
    Actions -> All Actions 클릭
    Amazon Resource name : 복사한 ARN + "/
    *"

  7. Add Statement 클릭

Generate Policy 클릭

Policy JSON Document를 복사후 닫기

복사한 Json을 붙여넣음

변경사항 저장

  1. 이미지 업로드 테스트

    객체로 이동 -> 업로드 해서 이미지 업로드 -> 업로드 된거 클릭 -> 객체 url 클릭 -> 정상적으로 사진이 보일겁니다
    만약 안보인다? public access 차단 해제했는지 확인하러 ㄱㄱ
    해제하는 방법 : 퍼블릭 액세스 차단 수정
    권한 -> 퍼블릭 액세스 차단 -> 편집 -> 체크 모두 해제 -> 변경사항 저장

  2. CORS 권한설정
    권한 탭 클릭 -> CORs에서

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "x-amz-server-side-encryption",
            "x-amz-request-id",
            "x-amz-id-2"
        ],
        "MaxAgeSeconds": 3000
    }
]

ctrl+v하면?
이미지 업로드 위한 버켓 + 권한설정 끝!!

  1. 사용자 추가

S3에 접근 하려면 IAM 생성하고, 접근 권한을 부여한 다음, 액세스 key, 비밀 액세스 Key로 접근해야 한다.

aws 콘솔 검색창에 IAM 검색 -> 액세스 관리 -> 사용자

사용자 이름 입력 -> 다음 클릭 -> 직접 권한 설정 클릭 -> 검색창에서 s3 입력 후 선택 -> 사용자 생성

  1. 액세스 키 생성
    IAM 서비스 돌아가서 생성한 사용자 선택 -> 보안 자격 증명 -> 액세스 키 만들기 -> 아무거나 클릭 -> 태그 입력 후 생성

⚠️ 키 생성이 완료되면 공개 key와 비밀 key를 확인할 수 있는데, 이때만 확인 할 수 있어서 무조건 .csv파일 저장하기

스프링부트 코드와 함께 s3에 이미지 올리려면 아래 velog로 가주세요 🫰
s3 이미지 실습하는 velog로 이동하기

profile
선한 영향력으로 세상을 변화시키는 새싹개발자

1개의 댓글

comment-user-thumbnail
2024년 2월 2일

감사합니다.

답글 달기

관련 채용 정보