본문 바로가기

⭐ AWS/CodePipeLine

S3를 활용한 Code PipeLine 구축

S3_with_CodeDeploy.drawio
0.00MB

# 개념도?

- Code build 없이 Code PipeLine을 구축하는 방법에 대해서 알아보자. (Code Deploy를 S3로 하는 방법)

1. S3 생성

Name : codepipeline-test-01

2. 버킷 > 속성 > 버킷 버전 관리 항목에서 활성화를 선택한 뒤 저장을 한다.

3. 샘플코드 다운로드 (로컬 컴퓨터의 폴더 또는 디렉토리에 저장합니다.)

* 배포 Target의 OS종류

Linux : https://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/samples/SampleApp_Linux.zip

Window : https://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/samples/SampleApp_Windows.zip

4. 다운받은 샘플코드를 S3 버킷에 업로드 합니다.

S3 버킷 > 파일 업로드 > 위에서 다운받은 ZIP 파일 업로드

- 업로드된 객체를 확인 할 수 있습니다.

5. 샘플 애플리케이션이 배포되는 EC2 인스턴스를 생성합니다. (Linux)

1) IAM Role 설정

- 역할 이름을 입력하고, 역할을 생성 합니다.

2) EC2생성 > 인스턴스 중지 > 인스턴스 설정 > 사용자 데이터 편집

- Userdata에 아래 명령어를 기입함으로서, ruby, aws-cli, codedeploy를 자동으로 설치합니다.

#!/bin/bash
sudo su -
yum -y update
yum install -y ruby
yum install -y aws-cli
cd /home/ec2-user
aws s3 cp s3://aws-codedeploy-us-east-2/latest/install . --region us-east-2
chmod +x ./install
./install auto

- EC2 보안그룹에서 80포트를 오픈합니다.

3) IAM Role" 에서 생성한 Role을 맵핑해줍니다.

> 인스턴스 id > 보안 > IAM 역할 수정 > 위에서 생성한 codepipeline-role 을 선택하고 저장.

6. CodeDeploy 배포

1) IAM Role

2) CodeDeploy 애플리케이션을 생성

Name : MyDemoApplication

Platform : EC2/온프레미스

7. CodeDeploy 배포그룹 설정

- 이전 IAM에서 설정한 ROLE을 적용

- 해당 EC2 인스턴스에 Tag값을 설정한 뒤 CodeDeploy에서 설정한 태그값을 적용

- 14일마다 CodeDeploy를 업데이트 하도록 설정

- 배포 설정을 아래와같이 설정

8. CodePipeline에서 첫 번째 파이프라인 생성

파이프라인을 생성하고 실행할 준비가 되었습니다.

CodeCommit 리포지토리로 푸시될 때 자동으로 실행되는 파이프라인을 생성합니다.

1) Code Pipeline 설정 선택

2) Source Stage 추가

소스공급자 : Amazon S3

버킷 : codepipeline-test-01

S3 객체 키 : SampleApp_Linux.zip

Change detection options 아래에서 기본값을 그대로 둡니다.

CodePipeline이 Amazon CloudWatch Events를 사용하여 소스 버킷의 변경을 감지할 수 있습니다.

- 빌드 스테이지 (생략)

3) 배포 스테이지 추가

배포 공급자 : CodeDeploy

리전 : ap-northeast-2

이름 : MyDemoApplication

배포그룹 : codedeployrole-test

- 파이프라인을 생성하고, 파이프라인이 실행을 시작합니다. CodePipeline과 CodeDeploy가 각 Amazon EC2 인스턴스에 웹 페이지를 배포하므로 진행 사항과 성공 및 실패 메시지를 볼 수 있습니다.

9. CodePipeline Action

* Source라는 소스 단계는 S3 버킷에 저장된 버전이 지정된 샘플 애플리케이션의 변경 사항을 감지하고 이러한 변경 사항을 파이프라인으로 가져옵니다.

* Deploy 단계는 CodeDeploy를 이용해 이러한 변경 사항을 EC2 인스턴스에 배포합니다.

- 여러번 실패 후 아래와 성공 하였는데 위의 사용자 데이터 편집의 명령어들이 정상적으로 실행이 되지않아 생긴 문제였습니다.

7. 테스트

- 3번에서 구성한 EC2의 Public DNS로 호출해봅니다.

- 정상적으로 테스트 페이지를 호출하는것을 확인 할 수 있습니다.

- 여기까지 S3를 활용하여 배포하는 방법에 대해서 알아보았습니다.

- 끝 - 

'⭐ AWS > CodePipeLine' 카테고리의 다른 글

CodePipeLine 자동실행 정리  (0) 2022.07.12