EC2, IAM 설정

이번 편에서는 AWSEC2IAM설정을 하겠습니다.

IAM 설정

가장 먼저 IAM에서 EC2, CodePipeline, CodeDeploy 역할을 추가하고
S3에 업로드 하고 EC2Deploy할 수 있는 권한을 가진 사용자를 추가해야합니다.

EC2 역할 설정

IAM 에 들어간 후 역할 -> 역할 만들기 에서 EC2를 선택합니다.
스크린샷 2019-05-13 오후 2.31.16.png

다음을 클릭한 후
정책 연결 리스트에서 AmazonEC2RoleforAWSCodeDeploy를 찾아서 체크해줍니다.
스크린샷 2019-05-13 오후 2.31.26.png

검토까지 다음을 클릭하신 뒤
역할 이름을 ec2-code-deploy로 설정하신 후 역할을 만듭니다.

스크린샷 2019-05-13 오후 2.31.43.png

CodeDeploy 역할 설정

IAM 에 들어간 후 역할 -> 역할 만들기 에서 아래와 같이(CodeDeploy, CodeDeploy) 선택합니다.

스크린샷 2019-05-13 오후 4.29.44.png

검토까지 다음을 클릭하신 뒤
역할 이름을 code-deploy-role 로 설정하신 후 역할을 만듭니다.

사용자 만들기

마지막으로 S3에 업로드 하고 EC2Deploy할 수 있는 권한을 가진 사용자를 만들어야합니다.
IAM -> 사용자 -> 사용자 추가를 클릭합니다.
아래와 같이 사용자 이름은 gitlab-deploy 로 작성하고 프로그래밍 방식 엑세스를 체크하고 다음단계로 넘어갑니다.

스크린샷 2019-05-13 오후 4.36.07.png

기존 정책에 직접 연결을 선택하신 후
AWSCodeDeployFullAccess, AmazonS3FullAccess 정책을 추가합니다.

검토단계까지 넘어간 후 아래와 같으면 사용자를 만듭니다.

스크린샷 2019-05-13 오후 4.38.17.png

사용자를 만들면 아래와 같은 화면이 나오는데

스크린샷 2019-05-13 오후 4.40.06.png

.csv 다운로드 버튼을 클릭해서 엑세스키 ID와 비밀 엑세스 키를 저장합니다.

EC2 설정

인스턴스 생성

배포에 쓰일 새로운 EC2 인스턴스를 생성합니다.

스크린샷 2019-05-13 오후 4.51.18.png

스크린샷 2019-05-13 오후 2.29.58.png

인스턴스 세부 정보 구성 단계에서
IAM 역할을 아까 만들었던 ec2-code-deploy로 지정합니다.

스크린샷 2019-05-13 오후 4.56.49.png

5단계 태그 추가에서는 Name / code deploy로 추가합니다.

스크린샷 2019-05-13 오후 4.59.40.png

6단계 보안 그룹에서는 HTTP 를 추가해줍니다.
스크린샷 2019-05-13 오후 4.59.54.png

검토후 시작 -> 시작하기 클릭 후 기존 키페어가 있으면 기존 키페어를 선택하고 없으면 새로 생성합니다.
이 키페어는 절때 잃어버리면 안됩니다.

스크린샷 2019-05-13 오후 5.01.32.png

AWS CLI 설정 및 Code Deploy Agent 설치

인스턴스 시작 후 ssh 로 접속합니다.
ssh -i {키파일} ec2-user@{인스턴스 주소}

접속한 후 아까 추가한 사용자를 등록합니다.
aws configure 명령어를 입력한 후 아까 다운받은 .csv파일에 있는 코드를 입력합니다.

스크린샷 2019-05-13 오후 5.30.11.png

aws s3 cp s3://aws-codedeploy-ap-northeast-2/latest/install . --region ap-northeast-2를 입력하여 code deploy agent를 설치합니다.

설치가 되면
sudo chmod +x ./install, sudo ./install auto 명령어를 입력하여 설치합니다.
sudo service codedeploy-agent start 명령어를 입력해 code deploy agent 를 실행합니다.

NginX 설치 및 설정

다음엔 nginx 를 설치할 차례입니다.
sudo yum install nginx -y로 nginx 를 설치한 후
sudo vim /etc/nginx/nginc.conf를 입력해 nginx config파일을 vim으로 엽니다.

그 후 아래와 같이 location 부분에 추가합니다.

    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://127.0.0.1:8080/;
    proxy_redirect off;

스크린샷 2019-05-13 오후 2.45.41.png

저장을 한 후
sudo nginx start를 입력하여 nginx를 시작합니다.

이렇게 IAMEC2 설정을 마무리했습니다.

다음 포스트에서는 CodePipeline, CodeDeploy 설정과 실제로 배포가 작동되게 만들어보겠습니다.

감사합니다.

모든 소스 코드는 GITHUB에있습니다.
현재까지의 코드 : https://github.com/KingCjy/Spring-Ci/tree/post1