S3 이미지 업로드

김동헌·2024년 1월 3일
1

SpringBoot

목록 보기
11/19
post-thumbnail

이번 포스팅에는 AWS Amazon S3에 이미지를 업로드하는 기능을 구현하려고 합니다 !


AWS S3란 ?

S3(Simple Storage Service)는 AWS에서 제공하는 객체 스토리지 서비스입니다.

  • 객체 스토리지는 객체로 된 파일을 다루는 저장소라고 아시면 될 것 같네요 : >

S3의 기능

Scalable Storage

  • 사용자는 필요에 따라 저장 공간을 늘리거나 줄일 수 있습니다.

데이터 보안

  • 다양하고 강력한 데이터 보안 및 암호화 옵션을 제공합니다.

내구성 및 가용성

  • 데이터를 여러 물리적 위치에 저장하여 높은 수준의 내구성을 보장합니다

웹 인터페이스를 통합 관리

  • 사용자는 웹 인터페이스를 통해 데이터를 쉽게 업로드, 다운로드 및 관리할 수 있습니다.

다양한 데이터 전송 옵션

  • 다양한 데이터 전송 및 관리 도구를 제공합니다.

S3는 위의 기능으로 토대로 유연성, 비용 효율성, 확장성, 신뢰성, 통합성을 바탕으로 사용하게 됩니다.

비용도 저렴하고, 저장할 수 있는 데이터 양이 무한에,, 가깝고 별도의 스토리지 확장, 축소에 신경쓰지 않으셔도 됩니다.


사용 이유

  • S3는 수천 대 이상의 매우 성능이 좋은 웹 서버로 구성되어서 EC2나 EBS로 구축했을 때 처럼 AutoScaling이나 LoadBalancing를 신경쓰시지 않으셔도 됩니다.

  • 웹 하드 서비스와 비슷하지만, 별도의 클라이언트 설치를 하지 않고, HTTP 프로토콜(RestFul)로 파일 업로드와 다운로드가 가능합니다.

  • S3로 정적인 웹 서비스가 가능합니다.

    • html 파일을 Storage에 저장하고, html 파일에 접근하는 것이 홈페이지입니다.
  • 동적 웹 페이지는 EC2에서 서비스하고, 정적 웹 페이지는 S3를 이용하면 성능과 비용을 모두 잡을 수 있습니다.


사용 예

  • 클라우드 저장소 (개인 파일 or 구글 드라이브처럼 사용)
  • 서비스의 대용량 파일 저장소 (이미지, 동영상 등)
  • 서비스 로그 저장 및 분석
  • 서비스 사용자의 데이터 업로드 서버(이미지 or 동영상 서버)
  • 중요한 파일은 EC2의 SSD (EBS; Elastic Block Store)에 저장하는 것보다 S3에 저장

비용

AWS 프리티어는 매달 5GB의 Amazon S3 스토리지(S3 Standard 스토리지 클래스), 20,000건의 GET 요청, 2,000건의 PUT, COPY, POST 또는 LIST 요청, 100GB의 데이터 송신까지는 무료입니다 !


S3 버킷과 객체란 ?

  • 객체(object)는 데이터와 메타데이터를 구성하고 있는 저장 단위
    • 파일 개념
  • 버킷(Bucket)은 이러한 객체를 저장하고
    • 디렉토리/폴더 개념

사용 예


버킷 만들기


✅ 버킷 만들기

✅ 버킷 이름 설정

✅ 퍼블릭 엑세스 설정

저는 이미지를 업로드 할 예정이고 해당 이미지들은 퍼블릭으로 전환돼도 문제가 없다고 판단했고 이미지 업로드는 클라이언트에서 자류옵게 할 수 있으므로 가능합니다.

그래도 어느정도 보안은 유지해줘야 하기 때문에 IAM 정책으로 사용자에게 권한을 부여 할 예정입니다.

다른 설정은 default로 생성해주세요


IAM

IAM(Identity and Access Management)이란 Amazon Web Services 리소스에 대한 접근 및 권한을 관리하는 서비스입니다.

IAM으로 사용자, 그룹, 역할 및 정책을 통해 S3 리소스에 대한 접근을 제어할 예정으로 사용해보겠습니다.

기본적으로 IAM은 무료로 제공됩니다 : >

IAM 생성

IAM엑세스 관리사용자사용자 생성


사용자 이름 입력


권한 정책 -> AmazonS3FullAccess

사용자 생성 완료 !

엑세스 키 생성

엑세스 관리 → 사용자 → 사용자 이름 선택→ 보안 자격 증명 → 엑세스 키 만들기


사례는 자유롭게 생성합니다.

태그 입력 → 선택 사항

AccessKey, SecretKey가 생성되는데 SecretKey의 경우에는 해당 화면을 벗어나면 확인할 수 없기 때문에 꼭 따로 저장해주세요 !

profile
백엔드 기록 공간😁

0개의 댓글