본문 바로가기
프로젝트/낙낙(KnockKnock)

배포 자동화를 해보자-2(Github Actions)

by 티코딩 2023. 7. 31.

저번 포스팅에 이어서,

ㅇ IAM 역할만들기

마지막으로 배포그룹생성에서 막혔었는데, 미리 IAM에 가서 역할을 만들어야 한다. 나는 S3와 CodeDeploy를 사용해야하니 저 두개를 추가해줬다.

ㅇ 역할 EC2 인스턴스에 적용

EC2인스턴스를 체크하고 보안>IAM 역할 수정>내가만든 역할을 클릭!

이렇게 했다가 연결에서 아래와같은 에러가 발생해서. 그냥 원래 IAM 역할에다가 S3 full과 CodeDeploy full을 추가하고 연결했다.


다음 이유로 인해 세션이 종료되었습니다.  ----------ERROR------- Setting up data channel with id root-09d84bafb72638029 failed: failed to create websocket for datachannel with error: CreateDataChannel failed with no output or error: createDataChannel request failed: unexpected response from the service <AccessDeniedException> <Message>User: arn:aws:sts::395601294052:assumed-role/knockknock-role/i-0844ecd1f8a8095fc is not authorized to perform: ssmmessages:CreateDataChannel on resource: arn:aws:ssmmessages:us-east-1:395601294052:* because no identity-based policy allows the ssmmessages:CreateDataChannel action</Message> </AccessDeniedException>

 

ㅇ EC2에 CodeDeploy agent 설치하기

sudo apt-get update
sudo apt-get install ruby
sudo apt-get install wget
sudo apt-get install
sudo wget https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/install
sudo chmod +x ./install
sudo ./install auto

이렇게 설치가 끝나면 다시 배포그룹 생성한다.

그런데 서비스 역할에서 자꾸 오류가 나서 IAM > 역할 > 내가만든거
들어가서 신뢰관계를 누르고 수정을 조금 해줬다. Service 부분을 저렇게 바꾸고 했더니 배포그룹이 생성되었다.

다음단계로 넘어가보자.

 

ㅇ appspec.yml 파일 설정

appsepc.yml 파일은 Code Deploy의 작동을 모아놓은 파일이다.

여기서 문제가 생겼다.

./gradlew build 를 했는데 멈추더니...

인스턴스가 먹통이 됐다.

진짜 속이 먹먹하다..

그래서 중지하고 다시 시작했는데..

Session Manager가 연결이 안된다.

진짜 미칠 노릇이다.

아...

혹시몰라서 IAM 정책에

AmazonSSMManagedInstanceCore 를 추가해줬는데도 되지 않는다.

 

미.치.겠.다.

 

SSH로 연결을 다시 시도해보자.

여전히 timed out이 나왔지만 다시 자세히 보니 port22 가 보인다.

인바운드 규칙을 수정해보자. port22를 추가했더니 된다.

오잉? 이제는 ssh로는 연결되지만, Session Manager로는 연결이 안된다.

여기서 ssm agent 의 상태를 확인해보자.

sudo systemctl status amazon-ssm-agent

명령으로 상태를 확인할 수 있다.

active되고있지만. 여전히 되지않는다. 이제 그냥 ssh로 연결해야겠다.

 

 

 

 

내가 참고한 블로그

https://jhpa.tistory.com/10

 

야 너두 자동 배포 할 수 있어 with AWS CodeDeploy

안녕하세요 !! 오늘은 AWS CodeDeploy + Github Action + EC2 + S3 를 사용해 자동 배포를 구현한 경험을 공유하려고 합니다. 들어가기에 앞서, 저는 devOps 생초보이므로 중간에 어색하거나 쓸모 없는 로직이

jhpa.tistory.com

https://loosie.tistory.com/424

 

[Spring 배포 #2-2] CodeDeploy 생성 및 연동하기 (Travis-ci, S3)

배포 자동화 준비 : CodeDeploy 생성 및 연동하기 (Travis-ci, S3) 이제 AWS 배포 시스템 CodeDeploy를 생성해준다. 해당 과정에서는 총 2개의 IAM(ec2에 필요한 IAM, codeDeploy에 필요한 IAM)을 생성한다. 이제 CodeDe

loosie.tistory.com