[AWS] AWS S3 사용법 (with. 스프링부트)
AWS S3 사용법
AWS S3란?
Amazon S3란 AWS(Amazon Web Service)에서 지원하는 Simple Storage Service의 약자이다.
다시말해 아마존 S3는 아마존 웹 서비스에서 제공하는 온라인 스토리지 웹 서비스이다.
사진, 파일, 폴더 등 다양한 것들을 저장하고 사용할 수 있다.
대부분의 서비스를 무료로 이용할 수 있는 프리 티어 회원에게 제공되는 S3 서비스의 기준이다.
이 이상 사용하게 되면 추가금을 결제해야하는데
유료로 이용해도 생각보다 많이 저렴하니 부담없이 사용할 수 있다.
다시 본론으로 돌아가 프리 티어 가입법을 설명하겠다.
버킷 생성
검색 탭에 'S3'를 검색하여 들어간다.
그럼 이렇게 버킷을 생성하는 화면이 나오는데, 우리는 이제부터 이 '버킷' 이라는 것을 만들어볼 것이다.
본인은 이미 테스트를 위해 만들어 놓았기 때문에 아래에 존재하는 것이니 처음이라면 아래에 아무것도 없는 것이 맞다.
버킷이란 Amazon S3에 저장된 객체에 대한 컨테이너이다. 버킷에 저장할 수 있는 객체 수에는 제한이 없으며, 계정에 버킷을 최대 100개까지 만들 수 있다.
버킷 이름과 AWS 리전을 입력하는 곳이다. 이름은 자신이 원하는 대로 입력하면 되고, 리전은 서비스 지역에 따라 설정하면 된다.
스프링부트와 연결하여 사용하기 위해 모든 퍼블릭 액세스 차단을 해제하여 퍼블릭 상태로 만든다.
이 작업이 끝났다면 '버킷 만들기' 버튼을 눌러 버킷을 생성한다.
그리고 생성된 버킷의 권한 탭에 들어간다.
그럼 내부의 버킷 정책 파트가 있는데 이 부분의 편집 버튼을 누른다.
버킷 ARN을 복사하고 정책 생성기에 들어간다.
위의 설정과 같이 세팅하고 맨 아래에 복사한 ARN을 붙여넣어준다.
Actions는 이미지에 표기된 대로 getObject, putObject, deleteObject 를 선택해주면 된다.
이제 입력이 제대로 되었는지 확인하고 Generate Policy 를 누르자.
생성된 정책을 복사해준다.
복사한 내용을 버킷 정책에 붙여넣기 해준 뒤 Resource 맨 뒤에 /*을 붙여 저장해주면 정책 설정은 끝이다.
IAM 사용자 추가
S3를 이용하기 위해서는 IAM이라는 것을 만들고 이곳에 권한을 준 뒤에, IAM의 엑세스키, Secret엑세스키를 사용해 접근해야한다.
그러기 위해 IAM 사용자를 추가해주겠다.
검색탭에 IAM을 검색하고 들어가준다.
그 다음 엑세스 관리 탭의 사용자에 들어간 뒤에
오른쪽 상단의 사용자 추가 버튼을 누른다.
사용자 이름을 입력하고, 엑세스 키 를 선택한 뒤 다음으로 넘어간다.
권한을 설정하는 부분이다.
'기존 정책 직접 연결'을 선택 후 AmazonS3FullAccess 정책을 선택후 다음으로 넘어간다.
이것을 선택해야 S3에 파일을 업로드하거나 다운로드 할 수 있다.
이 부분은 선택사항이기 때문에 따로 설정하지 않고 다음으로 넘어가 사용자를 만들었다.
생성된 csv파일을 다운받고 IAM 생성을 마치도록 하겠다.
csv파일에는 엑세스키가 담겨있고 현재 화면에서 밖에 볼 수 없기 때문에 저장해서 따로 보관하지 않으면 찾기 힘들다.
꼭 로컬에 저장해놓도록 하자.
SpringBoot 세팅
나는 스프링 부트와 함께 사용할 것이기 때문에 따로 설정을 해주겠다.
maven 기준의 설명이니 참고하자.
우선 pom.xml에 들어가 dependency를 추가하고 application.properties 를 설정해야한다.
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
applicaiton.properties
##AWS S3
cloud.aws.credentials.accessKey=엑세스 키 ID (AWS S3에서 발급 받은 키)
cloud.aws.credentials.secretKey=비밀 엑세스 키 (AWS S3에서 발급 받은 키)
cloud.aws.stack.auto=false
# AWS S3 Service bucket
cloud.aws.s3.bucket=버킷이름 (자신이 설정한 버킷이름)
cloud.aws.region.static=ap-northeast-2 (버킷 지역(서울은 ap-northeast-2))
# AWS S3 Bucket URL
cloud.aws.s3.bucket.url=https://s3.ap-northeast-2.amazonaws.com/버킷이름
엑세스 키와 비밀 엑세스 키는 아까 다운받은 csv 파일에 들어있으니 확인하고 기입하면 된다.
그리고 이 부분은 절대 노출되어선 안되므로 .gitignore에 꼭! 추가하자.
그대로 github에 올렸다가 아마존에서 이메일과 전화까지 받으셨다는 어느 블로거분도 계셨다. 주의하도록 하자..
플러그인 중에 .ignore 이라는 플러그인을 install 하면 쉽게 .gitignore에 추가할 수 있다.
gitignore 해줄 파일에 오른쪽 마우스를 누르고 Add to .gitignore file 버튼으로 간단하게 .gitignore에 추가해주었다.
위와 같이 Secret한 내용을 돈을 조금 사용하여 편하게 관리하고 싶다면
AWS SecretManager 사용을 권장한다.
이렇게 해서 S3를 사용하기 위한 SpringBoot 세팅을 마쳤습니다.
위는 S3 Browser 라는 툴인데 S3를 GUI환경에서 편하게 사용할 수 있도록 해주는 툴입니다.
S3를 많이 다루게 되실 것 같다면 위 툴 설치를 추천드립니다!