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 사용을 권장한다.
[AWS] 스프링부트 AWS Secrets Manager 적용하기!
프로젝트를 진행하다보면 gitignore 설정을 깜빡해 aws 관련 주요 키정보를 노출하게 되는 등 민감한 보안 문제가 발생한다. 주로 application.yml 이나 application.propertise가 깃 레퍼지토리에 커밋 되었을
pgmjun.tistory.com
이렇게 해서 S3를 사용하기 위한 SpringBoot 세팅을 마쳤습니다.
S3 Browser - Amazon S3 Client for Windows. User Interface for Amazon S3. S3 Bucket Explorer.
s3browser.com
위는 S3 Browser 라는 툴인데 S3를 GUI환경에서 편하게 사용할 수 있도록 해주는 툴입니다.
S3를 많이 다루게 되실 것 같다면 위 툴 설치를 추천드립니다!
'BackEnd > Infra' 카테고리의 다른 글
AWS EC2 Swap 메모리로 메모리 부족 문제 해결하기 (0) | 2024.01.31 |
---|---|
AWS IAM 생성하기 (1) | 2023.05.31 |
[AWS] EC2 도메인 연결 및 HTTPS 적용하기 (7) | 2022.06.04 |
[AWS] EC2 배포(1) - 스프링 부트 RDS 연결 및 IAM 설정 (1) | 2022.05.03 |
[AWS] AWS EC2 FTP 클라이언트 연결 (FileZilla) (1) | 2022.04.13 |