킹의 개발일지

AWS S3 사용해서 이미지 업로드 본문

aws

AWS S3 사용해서 이미지 업로드

k1ng 2022. 8. 22. 15:56

애플리케이션의 개발을 거의 끝마치고 배포를 해야하는 상황이왔다! 드디어!!

 

개발 단계에서 로컬 디렉토리에 이미지 파일을 저장했었지만, AWS의 ec2 나 elastic beanstalk를 사용해서 애플리케이션을 배포할 목적이기에 이미지를 따로 저장할 공간이 필요했다.

 

찾던 중 AWS의 s3를 알게됐고, 이를 사용하는 과정을 담으려고 한다!

 

S3를 이용하는 과정은 AWS에서 제공하는 사용설명서를 참조했다.

https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/GetStartedWithS3.html

 

Amazon S3 시작하기 - Amazon Simple Storage Service

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com


S3 (Simple Storage Service)

https://aws.amazon.com/ko/s3/

 

클라우드 스토리지 | 웹 스토리지| Amazon Web Services

 

aws.amazon.com

 

S3 페이지로 가보면 아래와 같은 설명을 볼 수 있다.

Amazon Simple Storage Service(Amazon S3)는 업계 최고 수준의 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스입니다. 고객은 규모와 업종에 관계없이 원히는 양의 데이터를 저장하고 보호하여 데이터 레이크, 클라우드 네이티브 애플리케이션 및 모바일 앱과 같은 거의 모든 사용 사례를 지원할 수 있습니다. 비용 효율적인 스토리지 클래스와 사용이 쉬운 관리 기능을 통해 비용을 최적화하고, 데이터를 정리하고, 세분화된 액세스 제어를 구성하여 특정 비즈니스, 조직 및 규정 준수 요구 사항을 충족할 수 있습니다.

 

개인 공부목적으로 사용할 것이기에 S3의 풀 기능을 활용하진 못하겠지만 해당 내용만으로도 내가만든 간단한 프로젝트에도 적합할 것이라 생각이 들었다. 무엇보다 aws 프리티어 사용혜택이 있었기에 쾌재를 부르며 사용했다.


우선 S3를 사용하기 위해서는 버킷을 먼저 만들어야한다.

 

버킷 만들기

S3 페이지에서 S3 시작하기 버튼을 클릭하면 해당 페이지로 이동할 수 있다. 이후 버킷 만들기 버튼을 클릭하면 버킷을 만들수 있는 페이지로 이동한다.

 

버킷의 이름과 사용할 리전을 설정해준다. 그리고 객체 소유권을 디폴트로 두었다. 이후 정책 생성자를 이용해 정책을 등록할 예정이다.

 

참고로 버킷이름에는 버킷의 DNS 호환 이름을 입력해주었다. 기존에 구매 해두었던 도메인을 Route 53에 등록해 웹 사이트 호스팅용 Amazon S3 버킷을 생성하고 구성하기 위함이다.

 

다음으로 버킷의 퍼블릭 엑세스 차단 설정을 해주어야한다.

외부에 S3를 공개할 목적이라면 차단을 해제하면된다. 아마존에서는 퍼블릭 웹 사이트 호스팅과 같은 사용 사례에 대해 하나 이상의 설정을 해제해야 하는 경우가 아니라면 모든 설정을 사용 설정 상태로 유지하는 것이 좋다고 한다.

 

 

개인 프로젝트용이기에 버킷 버전 관리 및 기본 암호화는 디폴트로 두고 버킷을 생성했다.

 

위 과정이 끝나면 버킷은 생성된다. 하지만 생성된 버킷에 이미지를 업로드하고 생성된 객체 URL로 접속해보면 퍼미션이 없어서 access denied로 열어볼 수 없을 것이다.

버킷 정책 생성

이 때 버킷 정책을 생성해주어야한다.

http://awspolicygen.s3.amazonaws.com/policygen.html 

 

AWS Policy Generator

Click below to edit. To save the policy, copy the text below to a text editor. Changes made below will not be reflected in the policy generator tool.

awspolicygen.s3.amazonaws.com

 

 

빨간 줄을 그어준 부분들을 수정해주면 된다.

  • Select Type of Policy: S3 Buckey Policy
  • Effect: Allow
  • Principal: *
  • Actions: GetObject => 모든 사람에게 접근가능한 권한은 읽기만 할 수 있게 한다.
  • Amazon Resource Name (ARN): arn:aws:s3:::{버킷이름}/*

위에 맞게 작성하고 Add Statement를 클릭하면, 정책이 하나 추가된다.

 

그리고 Generate Policy를 클릭하면 다음과 같은 팝업창이 뜨는데, 이를 복사해둔다.

 

이후 생성한 버킷의 권한 탭으로 이동해서 버킷 정책 편집을 클릭하고 복사한 정책내용을 붙혀넣고 저장해준다.

정책을 저장하고 다시 버킷에 저장된 이미지의 URL을 클릭하면 정상적으로 이미지가 나타나게 된다.

 

지금까지 버킷을 생성하고 접근관리를 위해 정책을 생성해봤다.

 

이젠 어플리케이션을 이용해서 이미지를 업로드 할 수 있도록 해줄것이다.

'aws' 카테고리의 다른 글

aws-amplify에서 chat-gpt stream response 받아보기.  (0) 2023.09.02
탄력적 IP를 할당해보자  (0) 2022.08.19
AWS 서버를 구축해보자  (0) 2022.08.17