AWS S3 연동 시 액세스 키(accessKey) 발급 받기 ( AWS / EC2 / S3 / Spring Boot )
🌜 Server/AWS & Linux

AWS S3 연동 시 액세스 키(accessKey) 발급 받기 ( AWS / EC2 / S3 / Spring Boot )

안녕하세요. 그린주입니다 ๑'ٮ'๑

오늘도 힘차게 시작해보겠습니다!

 

개요

이번 글에서는 Spring Boot & AWS S3 연동 시 액세스 키 accessKey와 secretKey를 발급받는 방법에 대해 공유해드리겠습니다. 

 

Spring Boot와 AWS S3를 연동할 때 로컬 환경에서 액세스 키를 발급받는 과정과 배포 환경에서 액세스 키를 발급받는 과정 두 가지로 나눠져 있습니다. 

** 액세스 키를 다루기 전 주의 사항 **
참고로 해당 ID와 키가 외부로 공개가 되면 천만 원 이상의 비용이 부과되기 때문에 조심해야 합니다.

목차

로컬 환경

배포 환경


로컬 환경

AWS 환경이 아닌 로컬 환경에서 S3를 사용하기 위해 먼저 S3를 관리하는 사용자를 생성하겠습니다.

AWS IAM 서비스에서 사용자 추가로 사용자 생성을 진행합니다.


사용자 이름을 지정합니다.

액세스 유형은 API를 연동할 계정이기 때문에 액세스 키 - 프로그래밍 방식 액세스를 선택합니다.

 


권한 설정 - 기존 정책 직접 연결을 선택하고 S3를 검색해 아래와 같이 AmazonS3FullAccess를 체크합니다. 


태그를 추가합니다. (선택사항)


728x90

검토 - 올바른 설정을 했는지 확인하고 사용자 만들기로 생성합니다.


사용자 추가가 완료되면 생성된 사용자의 액세스 키 ID와 비밀 액세스 키를 확인할 수 있습니다.

발급 성공!!


해당 키를 이용하여 소스에 적용하여 API를 사용하면 됩니다.


배포 환경

로컬과 배포 환경이 다른 이유는 AWS S3의 accessKey, secretKey는 Git의 관리 대상이 아닙니다.

그러다 보니 배포 항목에 포함되지가 않습니다.

배포 항목에 포함되지 않으니 EC2 배포해서는 작동하지 않습니다.

 

그래서 배포에서는 EC2의 IAM Role을 활용하여 S3 액세스 키를 받아보겠습니다.

  만약 기존에 EC2에서 사용하던 Role이 있다면 해당 Role에 S3 정책도 추가만 해주시면 됩니다.

 

역할 만들기

AWS IAM 서비스 역할에서 역할 만들기를 진행합니다.


사용할 서비스로 EC2를 선택합니다.


사용자 생성 때와 마찬가지로 S3 권한을 선택


태그를 추가합니다. (선택사항)


검토 - 올바른 설정을 했는지 확인하고 사용자 만들기로 생성합니다.


728x90

이렇게 생성된 역할을 해당 EC2에 연결해줍니다.

EC2 > 작업 > 보안 > IAM 역할 수정


위에서 설정한 역할 선택 후 저장합니다.

이렇게 되면 EC2는 별다른 설정이 없어도 할당된 IAM Role에 따라 accessKey와 secretKey를 발급받습니다.


명령어로 확인해보면 accessKey와 secretKey가 정상적으로 발급된 것을 확인할 수 있습니다.

aws configure list

 

Type이 iam-role로 되어있는 것은 개발자가 직접 key를 등록한 것이 아니라, IAM Role을 통해 생성되었다는 것을 의미합니다.

발급 성공!!


해당 키는 yml 파일에 코드를 추가하여 사용하면 됩니다.

  cloud.aws.stack.auto: false 

 

EC2에서 Spring Cloud 프로젝트를 실행시키면 기본적으로  CloudFormation 구성을 시작하기 때문에
설정한 CloudFormation이 없으면 프로젝트 실행되지 않습니다. 해당 기능을 사용하지 않도록 false로 설정합니다.

 

 

  cloud.aws.credentials.instanceProfile: true

 

EC2 인스턴스의  IAM Role에 생성된 accessKey와 secretKey를 사용하겠다는 의미입니다.
만약 이 값이 없다면 application.yml이나 environment 등에서 해당 키가 있는지 찾아서 사용합니다.


마무리

이렇게 Spring Boot & AWS S3 연동 시 액세스 키 accessKey와 secretKey를 발급받는 방법에 대해 적어보았습니다.
다들 성공하셨을까요?? 끝까지 파이팅입니다!


긴 글 봐주셔서 감사합니다!
오늘도 행복한 하루 보내세요 '◡'✿


참고

https://jojoldu.tistory.com/300

https://loy124.tistory.com/204

https://developerjun2.tistory.com/106


728x90
728x90