Build CICD pipeline with Github Action ‐2 : AWS settings (EC2,S3,IAM,codeDeploy) - APPS-sookmyung/2023-POCHAK-server GitHub Wiki
Build CICD pipeline with Github Action -2 : AWS settings (EC2,S3,IAM,codeDeploy)
Written by Dayeon Kim
전체적인 흐름
앞장에서는 그림만 넣어두었다면 이번 위키에서는 약간의 설명을 덧붙여놓겠음
- main branch에 pull 발생
- Github Action의
deploy.yml
코드 빌드 - AWS code deploy 실행
- 프로젝트 빌드 후 압축하여 s3에 push
- code deploy 실행
- ec2에 배포 명령
appspec.yml
파일 참조 - s3에서 파일 가져와 쉘 스크립트 실행
🚀 1. EC2 Setting
1-1. 탄력적 IP 추가
AWS EC2 인스턴스는 서버를 중지하고 다시 실행시키면 퍼블릭 IP 가 변경되기 때문에 클라이언트가 사용할 수 있는 변하지 않는 IP 가 필요 탄력적 IP란 외부에서 인스턴스에 접근 가능한 고정 IP
1-2. 호스트 등록해서 간편하게 접속하기
ssh mykeyhost
으로 바로 접속 가능하도록 config 파일 세팅
1-3. 보안그룹 설정
인바운드 : 외부 → ec2 인스턴스 내부 허용 아웃바운드 : ec2 인스턴스 내부 → 외부 허용
인바운드 규칙 추가 - 로컬 PC에서 서버에 접속 가능하도록 ssh 추가하고 소스를 내 IP로 설정
1-4. ec2에 springboot 서버 띄우기 test
자동화말고 일단 그냥 뜨는지부터 확인
컴파일러 버전 에러가 떳지만 나머지는 문제 없으므로 바로 CICD로 넘어갔음
1-5. Tag 추가
Code Deploy에서 인스턴스를 연결해주기 위해서 tag 등록
🚀 2. IAM Setting
- AmazonS3FullAccess EC2에서 S3에 접근할 수 있도록 권한 만들고 인스턴스에 연결해준다
🚀 3. CodeDeploy Setting
EC2 인스턴스 열고 공식문서 링크를 따라치면 됨. 공식문서 굿
3-1. CodeDeploy를 사용하기 위한 IAM 설정
사용사례에서 codeDeploy를 선택하고 그대로 만들면 됨
3-2. CodeDeploy application 생성
ec2/온프레미스 옵션으로 선택
3-3. CodeDeploy 배포그룹 생성
방금 만든 application에서 배포그룹 생성 3-1에서 만든 IAM 선택해주고, 아까 Ec2에 달아준 tag와도 연결시켜주면 끝
🚀 4. S3 Setting
버킷 생성
🚀 5. IAM 사용자 추가
앞에서 한건 S3,EC2에게 권한 부여, 지금은 사용자 추가
- AWSCodeDeployFullAccess
- AmazonS3FullAccess
Access Key발급받아서 꼭 저장해두기 (Github의 Secret에 저장해놓았음)