지난 1편에 이어서 Github Actions에서 CI 후 AWS S3에 jar 파일을 올린 뒤 CodeDeploy로 해당 파일을 EC2에 배포해야합니다.
그러기 위해선 Github에서는 S3와 CodeDeploy에 접근 가능하도록 설정을 해야하는데요, 그 설정 과정에 대한 설명입니다.
설정한 후 애플리케이션을 Github main에 merge를 한 뒤 CD 할 수 있게 코드를 작성해야하는데요, 그 과정에 대한 설명도 작성할 예정입니다. 전체 목차는 아래와 같습니다.
1. GithubActions 에서 사용할 IAM 사용자 생성
2. Github Repository에 Secrets 추가
3. AppSpec.yml 작성
4. 배포 스크립트(stop.sh, start.sh) 작성
5. Github Actions Workflow(deploy.yml) 작성
6. Github Actions 사용해서 배포하기
1. GithubActions 에서 사용할 IAM 사용자 생성
Github Actions 워크 플로우에서 AWS에 접근하려면 권한이 필요합니다.
그래서 이버에는 IAM 사용자를 생성해 Github Actions에서도 S3와 CodeDeploy에 접근할 수 있게 설정해보겠습니다.
1.1 IAM 사용자 생성하기
"IAM 페이지 -> 사용자 -> 사용자 추가" 의 과정을 거쳐 사용자를 생성합니다.
1.2 IAM 사용자 이름 설정
사용자 이름을 설정합니다. 제가 참고한 블로그에서는 이 과정에 액세스 유형을 설정할 수 있지만, 제가 설정할 때는 업데이트가 된 것인지 별도로 액세스 유형을 설정할 수는 없었습니다. 그래서 따로 설정 해주었는데, 이는 바로 아래 <1.5 IAM 사용자의 액세스 키 생성하기> 항목에서 확인하실 수 있습니다.
1.3 접근이 필요한 권한 추가
권한 옵션은 직접 정책 연결로 설정한 뒤 AWSCodeDeployFullAccess, AmazonS3FullAccess 권한을 검색한 뒤 추가해 줍니다.
1.4 IAM 사용자 이름 설정
IAM 사용자 이름만 설정한 뒤 넘어가면 됩니다.
1.5 IAM 사용자의 액세스 키 생성하기
Github Actions에서도 AWS에 접근하기 위해서는 별도의 액세스 키를 발급받아야 합니다.
"IAM 페이지 -> 사용자 -> 생성한 IAM 사용자 -> 보안 자격 증명 -> 액세스 키 만들기" 를 따라서 액세스 키 만들기를 시작합니다.
1.5.1 액세스 키 모범 사례 및 대안
사용사례는 CLI, 확인에 "위의 권장 사항을 이해했으며 액세스 키 생성을 계속하려고 합니다."에 체크한 뒤 다음으로 넘어갑니다.
1.5.2 발급된 액세스키/비밀 액세스 키 확인
발급된 액세스키/비밀 액세스 키 확인한 뒤 따로 저장해 둡니다.
2. Github Repository에 Secrets 추가
1.5 과정에서 발급한은 키들을 Github Repository에 저장해줘야 Github Actions에서 S3와 CodeDeploy에 접근할 수 있습니다.
"Repository Settings -> Secrets and variables -> Actions -> New repository secret" 이 과정으로 발급받은 액세스 키와 비밀 액세스 키를 저장할 수 있습니다. 이름은 편하신대로 하시면 됩니다.
[ec2-user@ip-000-00-00-00 local-server]$ docker-compose up --build -d
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/
Building spring
Sending build context to Docker daemon 278.7MB
Step 1/4 : FROM openjdk:11-jdk
---> 6927c2556235
Step 2/4 : ARG JAR_FILE=./build/libs/localdeploy-0.0.1-SNAPSHOT.jar
---> Using cache
---> 0614a623d85c
Step 3/4 : COPY ${JAR_FILE} app.jar
COPY failed: file not found in build context or excluded by .dockerignore: stat build/libs/localdeploy-0.0.1-SNAPSHOT.jar: file does not exist
ERROR: Service 'spring' failed to build
흠 아마 내가 빌드한 거를 잘 못한 것 같은데,, 구글링을 해도 이걸 어떻게 해야하는지 아직 못찾았다