배포 플로우이다.
- Github Actions에서 프로젝트 빌드 후, jar 파일을 압축해서 S3에 업로드한다.
- 이어서 CodeDeploy에게 S3에 있는 jar 파일을 가지고 배포를 진행해달라고 전달한다.
- CodeDeploy는 배포할 EC2 인스턴스 내부에 있는 CodeDeploy Agent에게 배포 명령을 내리고, Agent는 jar 파일을 S3에서 받아서 주어진 스크립트에 따라 배포를 진행한다.
따라서 이번 세번째 포스팅 내용은!
포스팅이 너무 길어져서 이번 포스팅은 1번만 기록했다.
나머지 2,3은 다음 포스팅으로 넘어가려고 한다 ㅠㅠ
✔️1. S3에 빌드한 JAR 업로드
1-1. actions탭에서 workflow설정 (1,2편 포스팅 참고 https://java-girl.tistory.com/106)
1-2. IAM 사용자 설정
AWS는 외부서비스의 접근을 허용하지 않기때문에 IAM, Identify & Access Management를 사용하여 접근 권한을 획득해야 한다.
1. IAM(Identity and Access Management)이란?
- AWS Identity and Access Management (IAM)은 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스이다.
- AWS의 계정을 최초로 생성할 때 모든 AWS 서비스 및 리소스에 대해 완전한 액세스 권한이 있는 단일 로그인 ID로 시작한다. 이 자격 증명을루트 사용자라고 한다.
- 하지만루트 계정은 공유되어서도 안 되고 보안을 주의해야 한다. 모든 권한을 가지고 있기 때문에.
- 그래서루트 사용자를 사용하지 않을 것을 권장하고,IAM을 통해 리소스를 사용할 수 있도록 인증(로그인, 계정) 및 권한 부여된 대상을 제어한다.
2. IAM의 기능
- AWS 계정에 리소스를 관리하고 사용할 수 있는 권한을 다른 사람에게 부여할 수 있다.
- 리소스에 따라 여러 사람에게 다양한 권한을 부여할 수 있다. 세분화되게 권한 부여가 가능하다.
- Amazon EC2 인스턴스에 대해 IAM 기능을 통해 완전하게 자격 증명을 안전하게 제공할 수 있다.
- 멀티 팩터 인증(MFA) 제공한다. 계정 소유자나 사용자가 계정 사용을 위해 암호, 액세스 키뿐 아니라 특별히 구성된 Device 코드도 제공해야 한다.
- ID 페더레이션을 제공한다.
- PCI DSS를 준수한다.
- 많은 AWS 서비스와 통합이 가능하다.
- 일관성을 제공하고, 기본적으로 추가 비용 없이 무료 이용이 가능하다.
AmazonEC2FullAccess
AmazonS3FullAccess
AWSCodeDeployFullAccess
권한 추가!
그리고 액세스키를 발급해주었다.
발급받은 액세스키와, 액세스 시크릿키는 깃허브의 Action에서 Secret으로 등록해두었다.
IAM ACCESS KEY와 SECRET KEY를 깃허브 레포지토리 상에 평문 그대로 노출하게 되면 보안상 매우 문제가 되기 때문이다.
(밑에 db정도도 같이 등록해둔것이 보인다.)
1-3. S3버킷 생성
버킷 이름 적고, 버킷 생성
버킷이 생성되었다.
1-4.EC2 생성
인스턴스를 생성했다!
탄력적 IP도 생성해서 연결해주고, EC2인스턴스 IAM역할 생성해서 연결해주었다.
🔗참고 : AWS EC2 인스턴스 생성 및 설정 — 기억의 정류장 (tistory.com)
> 다음편으로.......
Gitghub Actions로 CI/CD 파이프라인 구축하기 大 삽질일기 - 4
https://java-girl.tistory.com/101
'개인프로젝트' 카테고리의 다른 글
Gitghub Actions로 CI/CD 파이프라인 구축하기 大 삽질일기 - 5 (0) | 2024.04.06 |
---|---|
Gitghub Actions로 CI/CD 파이프라인 구축하기 大 삽질일기 - 4 (0) | 2024.04.04 |
Gitghub Actions로 CI/CD 파이프라인 구축하기 大 삽질일기 - 2 (0) | 2024.04.01 |
Gitghub Actions로 CI/CD 파이프라인 구축하기 大 삽질일기 - 1 (0) | 2024.03.30 |
CI/CD 구축 관련 (0) | 2024.03.28 |