최근 팀 블로그 주제로 프로젝트를 진행하다가 이미지를 어떻게 처리해야하는가? 라는 문제가 생겼습니다.
에디터에서 이미지를 업로드하면 base64 방식으로 인코딩이 되어서 정말 긴 문자열로 변환되어 서버로 전송되었습니다.
이대로 계속 진행을 하게 된다면 데이터베이스와 서버에 무리가 갈 것 같다고 판단을 했고 방법을 모색하던 중
아마존 S3를 사용하는 방법을 접하게 되어 해당 방식을 진행하고 있습니다.
아마존 S3는 AWS에서 제공하는 온라인 스토리지 웹 서비스이고 버킷과 키로 구성되어 있습니다.
기능 | |
---|---|
버킷(Bucket) | S3에 저장된 객체에 대한 컨테이너 |
키(Key) | 버킷 내 객체의 고유한 식별자, 모든 객체는 하나의 키를 갖고있음 |
특징으로는 다음과 같은 특징들을 가지고있습니다.
우선은 S3는 저렴한 요금을 제공하고있습니다. 또한 따로 데이터를 저장할 서버의 구현도 필요없이 AWS에서 간단하게 S3를 생성하고 사용할 수 있기때문에 선택을 했습니다.
aws 메인에서 서비스 - 스토리지 - S3를 선택합니다.
버킷 만들기를 선택합니다.
버킷 이름에 자신이 사용할 버킷의 이름을 입력합니다.
모든 퍼블릭 액세스 차단을 풀고 위의 사진과 같이 설정을 합니다.
다음과 같이 기본 형태로 되어있을텐데, 바로 버킷 만들기를 선택해줍니다.
S3를 생성했지만 아직 객체를 퍼블릭으로 사용할 수 없습니다.
정책을 활성화 해야하는데 다음 URL로 이동을 합니다.
Select Policy Type을 S3 Bucket Policy로 변경합니다.
Effect: Allow
Principal:
AWS Service: Amazon S3
Actions: GetObject
Amazone Resource Name (ARN): arn:aws:s3:::bucket-name/
위와 같이 입력을 해주세요.
Actions의 GetObject 같은 경우에는 조회만 가능하도록 하는데 더 원하시는 기능이 있으시면 더 선택하셔도 됩니다.
다 입력을 하시고 Add Statement를 눌러주세요.
값을 확인하고 Generate Policy를 눌러주세요.
다음과 같이 JSON이 나오는데 값을 복사합니다.
그리고 다시 S3 서비스로 이동을합니다.
해당 버킷의 이름을 클릭합니다.
권한을 선택하고 하단의 버킷 정책에서 편집을 눌러주세요.
좀 전에 복사한 JSON값을 붙여넣고 변경 사항을 저장해주세요.
그리고 버킷 메인화면으로 돌아가시면 다음과 같이 퍼블릭으로 변경이 되어 있는것을 보실 수 있습니다.
이 단계까지 하셨으면 S3를 이용하실 준비는 끝났습니다!