이번에는 Github Action과 AWS S3를 연동하는 방법을 알아보자. 구조는 다음과 같다.
EC2는 다음 스펙으로 생성했다.
AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어합니다. - AWS
먼저 IAM을 검색하면 다음과 같은 화면으로 올 수 있을 것이다. 사용자로 들어와서 사용자 추가
를 해보자.
먼저 사용자 이름을 적고, 엑세스 유형은 프로그래밍 방식 엑세스
를 한다.
권한 설정은 기존 정책 직접 연결
을 선택한다. 그러면 정책 검색을 할 수 있는 화면에서 다음과 같이 검색해서 선택한다.
다음 태그 추가는 본인이 인지 가능한 정도의 이름으로 만들자.
이제 내가 생성할 권한을 최종적으로 확인할 수 있다.
최종 생성 완료를 하면 엑세스 키 ID
와 비밀 엑세스 키
가 생성된다. 이 키들을 가지고 Github Action
과 연동할 것이다.
해당 Repository
의 Settings
→ Secrets
에서 만들어주면 된다. 생성한 엑세스 키 ID
와 비밀 엑세스 키
를 저장하자.
AWS의 S2 서비스는 일종의 파일 서버입니다. 순수하게 파일을 저장하고 접근 권한을 관리, 검색 등을 지원하는 파일 서버의 역할을 합니다. - 스프링 부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 님)
Github Action에서 생성된 파일을 저장하도록 구성할 것이다. 이번엔 S3
를 검색해서 이동하고, 버킷을 만들어보자.
원하는 버킷 이름을 만들어준다.
그다음으로 권한 설정에서 모든 퍼블릭 엑세스 차단
을 선택한다. 왜 그럴까?
실제 서비스에서 할 때는 Jar 파일이 퍼블릭일 경우 누구나 내려받을 수 있어 코드나 설정값, 주요 키값들이 다 탈취될 수 있습니다. - 스프링 부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 님)
이제 버킷을 만들어 주면 된다.
# 디렉토리 생성
- name: Make Directory
run: mkdir -p deploy
# Jar 파일 복사
- name: Copy Jar
run: cp ./build/libs/*.jar ./deploy
# 파일 압축
- name: Make zip file
run: zip -r ./springboor-with-githubaction.zip ./deploy
# Deploy
- name: Deploy
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
aws-region: ap-northeast-2
- name: Upload to S3
run: aws s3 cp --region ap-northeast-2 --acl private ./springboor-with-githubaction.zip s3://springboot-with-githubaction/
순서는 이러하다.
build
후 생성된 jar 파일
을 넣을 것이다.jar 파일
을 복사해서 deploy
폴더에 담는다.완성했다면 Github에 Push 해보자.
만약 빌드에 성공했다면 S3 버킷에 업로드가 된 것을 확인할 수 있다.
Github Action을 사용한 Spring boot & gradle CI/CD 구축 - 2
스프링 부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 님)
참고가 되었습니다. 감사합니다.