기록창고

Github action 으로 EC2 에 spring boot 배포하기(2) 본문

devops(?)

Github action 으로 EC2 에 spring boot 배포하기(2)

방금시작한사람 2020. 7. 24. 01:25

1 에서는 빌드한 파일을 S3에 옮겼습니다.

 

이제 Code Deploy 를 이용하여 S3 있는 빌드파일을 EC2로 옮겨서 실행시키는 일만 남았네용

 

code deploy 는 깃허브를 통해서 파일을 가져올수도 있고, S3 를 이용해서도 가져올 수 있습니다.

 

근데 빌드파일을 깃허브에 올리는건 좀 이상(?)하다고 생각하고 있습니다.. 올려도 상관은 없습니다!

 

https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/tutorial-ecs-deployment.html

 

자습서: Amazon ECS 서비스 배포 - AWS CodeDeploy

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

https://jojoldu.tistory.com/281?category=777282

 

1) AWS로 배포하기 시리즈 - 1. Code Deploy 사용하기

AWS로 전체 시스템 구축해야 할 일이 생겨 AWS 배포 환경 시리즈를 시작합니다. 시리즈 과정은 CodeDeploy -> Code Pipeline -> ELB & Auto Scaling Group -> Beanstalk 으로 진행될 예정입니다. 저는 아래와 같은..

jojoldu.tistory.com

 

위의 두 글을 참고 했습니다.

 

자습서에 보면 사전 조건이라는 탭이 있는데, 이걸 필수적으로 먼저 해야됩니다.

 

안하면 권한문제 때문에 하다가 문제가 생긴다네용

 

첫번째로 IAM 유저를 만듭니다.

 

https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/getting-started-provision-user.html

 

위의 정책은 IAM 사용자에게 AWS Lambda 컴퓨팅 플랫폼, EC2/온프레미스 컴퓨팅 플랫폼 및 Amazon ECS 컴퓨팅 플랫폼을 배포하는 데 필요한 액세스 권한을 부여합니다. 

 

여기서 발급받은 사용자는 Github action 에서 S3 를 업로드 할 때처럼 ID, Key 를 잘 저장해두셔야합니다.

 

이 사용자가 Codedeploy 를 실행해서 S3 에 있는 데이터를 EC2 로 옮기는 권한을 받고

github action 에서 aws cli 로 deploy 를 실행하기 때문입니다!

 

AWS 콘솔에서 IAM 에서 사용자에서 사용자를 추가합니다.

 

 

 

정책을 만듭니다

 

 

 

아래는 권한입니다. 자습서에도 나왔습니당

더보기

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "autoscaling:*", "codedeploy:*", "ec2:*", "lambda:*", "ecs:*", "elasticloadbalancing:*", "iam:AddRoleToInstanceProfile", "iam:CreateInstanceProfile", "iam:CreateRole", "iam:DeleteInstanceProfile", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:GetInstanceProfile", "iam:GetRole", "iam:GetRolePolicy", "iam:ListInstanceProfilesForRole", "iam:ListRolePolicies", "iam:ListRoles", "iam:PassRole", "iam:PutRolePolicy", "iam:RemoveRoleFromInstanceProfile", "s3:*", "ssm:*" ], "Resource" : "*" } ] }

정책을 이름을 정합니다. 

 

 

생성을 누르면 정책이 만들어지고 

 

다시 사용자 추가를 하여, 아까 만든 정책을 검색하여 선택해서 쭉쭉 진행합니다

 

 

다 만들면 ID 와 KEY 가 나올텐데, github action 에서 쓰일것이니 잘 저장해주시기 바랍니다.

잃어버리면 다시 삭제했다가 만들면 됩니당

 

그리고 EC2 에 codedeploy agent 를 설치합니다.

 

설치는 

https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html

 

Installing the AWS CLI version 2 on Linux - AWS Command Line Interface

Installing the AWS CLI version 2 on Linux This section describes how to install, update, and remove the AWS CLI version 2 on Linux. The AWS CLI version 2 has no dependencies on other Python packages. It has a self-contained, embedded copy of Python include

docs.aws.amazon.com

여기 잘 나왔습니다. ㅎㅎ;

 

설치 후에서는 EC2 에도 역할을 부여 합니다

IAM 역할이란 무엇입니까?

IAM 역할은 신뢰하는 개체에 권한을 부여하는 안전한 방법입니다. 

 

여기서 신뢰하는 개체란 aws 안에 있는 서비스 같습니다. 사용자를 만들어서 각 개체에 들어가서 설정하는 것이 아니라

객체에 바로 설정하는 방법 같습니다. (추측입니다.. ) 

 

 

IAM 에서 역할 탭에 가서 역할을 만듭니다.

 

2개를 만들 예정인데, 하나는 EC2 에서 사용할 역할이고 나머지 하나는 Codedeploy 에서 사용할 역할입니다.

 

EC2는 S3 Full Access 권한을 넣어주고,

CodeDeploy는 AWSCodeDeployRole 를 넣어줍니다.

 

그리고 EC2 설정에 가서 IAM 역할을 바꿔줍니다.

IAM 역할 변경

 

그러면 설정이 끝납니다.. 

 

 

 

Comments