AWS CodeCommit 및 CodeDeploy를 사용한 코드 배포 자동화

게시 됨: 2022-03-25

Automate Code Deployment with AWS CodeCommit & CodeDeploy

웹 개발자로서 작업에는 프로덕션 서버에 대한 코드 배포 자동화와 같은 몇 가지 복잡한 작업이 포함될 수 있습니다. 문제.

FTP를 사용할 때 공동 개발자의 코드를 덮어써야 합니다. 이 문제는 매우 일반적이고 우리 대부분에게 발생합니다. 이 가이드에서는 AWS CodeCommit, CodeDeploy 및 Pipeline 서비스를 사용한 코드 배포 자동화를 보여줍니다.

기술 개요:

  1. AWS CodeCommit : CodeCommit을 사용하여 모든 프로젝트 파일과 커밋 로그를 보관할 리포지토리(웹 콘텐츠/코드 파일)를 유지 관리합니다.
  2. EC2 서버 : 우리는 EC2를 프로덕션 서버로 사용할 것이며, 여기에는 웹사이트 방문자를 위한 라이브 사이트와 코드가 포함될 것입니다.
  3. AWS CodeDeploy : EC2 서버에 코드를 게시하는 애플리케이션을 보유합니다. 또한 코드를 게시하려는 대상 EC2 인스턴스의 이름/태그를 보유할 배포 그룹을 생성합니다.
  4. 파이프라인 : CodeCommit을 소스로 선택하고 CodeDeploy를 배포 단계로 선택합니다. 따라서 CodeCommit에서 코드 변경 사항이 감지될 때마다 파이프라인이 실행되고 해당 코드 변경 사항을 CodeDeploy(EC2 인스턴스)로 푸시합니다.

코드 배포 자동화: 자세히 설명 :

AWS 전문가를 찾고 계십니까? 여기에서 체크아웃

코드 배포 자동화를 위한 IAM 및 Git 사용자 생성

먼저 코드를 변경하고 배포 서버에 게시할 IAM 사용자와 Git 사용자를 생성해야 합니다.

  1. IAM 사용자 생성
    1. 액세스 허용 : AWSCodeCommitFullAccess, AWSCodeDeployFullAccess, AWSCodeCommitPowerUser. "기존 정책을 직접 연결" 탭에서 이 옵션을 찾을 수 있습니다.
  2. 이제 이 IAM 사용자로 로그인합니다.
  3. 오른쪽 상단에서 보안 자격 증명 을 클릭합니다 .
  4. AWS CodeCommit 자격 증명 을 클릭합니다 .
  5. "AWS CodeCommit용 HTTPS Git 자격 증명" 섹션에서 자격 증명 생성 버튼을 클릭합니다.
  6. 이제 해당 사용자 이름과 비밀번호를 안전한 장소에 복사하십시오. 이것은 코드 변경 사항을 푸시/풀하기 위한 Git의 기본 사용자 이름과 비밀번호가 됩니다.

CodeCommit에서 리포지토리 생성

이제 정확한 코드를 저장할 저장소를 만들어 보겠습니다.

  1. IAM 사용자에서 CodeCommit 대시보드 로 이동합니다 .
  2. 오른쪽 상단에서 리포지토리를 만들 지역을 선택합니다.
  3. 저장소 만들기를 클릭하고 이름, 설명을 입력하고 만들기를 클릭합니다.
  4. " 저장소 복제 " 섹션 아래에 저장소의 URL이 표시됩니다. 안전한 장소에 보관하십시오. 다음과 같습니다. https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest

Creating a Repository in CodeCommit

AWS 전문가를 찾고 계십니까? 여기에서 체크아웃

처음으로 프로젝트 파일 업로드

  1. 원본 코드가 있는 로컬 시스템명령 프롬프트 를 엽니다 .
  2. 명령 프롬프트에서 코드가 있는 경로로 이동합니다.
  3. 이제 다음 명령을 실행하여 코드를 AWS 리포지토리에 처음으로 푸시합니다.

자식 초기화
git config –local init.defaultBranch 메인
git config – global init.defaultBranch 메인
자식 추가 . ## 이것은 프로젝트의 모든 파일을 커밋합니다
git commit -m "초기 커밋"
자식 푸시 https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest –all

Uploading your project file for the first time

  • EC2 인스턴스 생성 및 CodeDeploy 에이전트 설치
  1. 인스턴스 역할 생성
    1. AWS IAM 콘솔을 엽니다.
    2. 역할 탭 >> 역할 만들기로 이동합니다.
    3. 신뢰할 수 있는 엔터티 유형 선택에서 AWS 서비스 를 선택합니다 . '사용 사례 선택' 에서 EC2를 선택 합니다. '사용 사례 선택'에서 EC2를 선택합니다. 다음: 권한 을 선택합니다 .
    4. AmazonEC2RoleforAWSCodeDeploy 라는 정책을 검색하여 선택한 후 다음: 태그 를 선택합니다 .
    5. 다음: 검토를 선택합니다. 역할 이름(예: EC2InstanceRole )을 입력하고 생성 을 클릭합니다 .
  2. EC2 인스턴스 생성
    1. EC2 콘솔로 이동합니다. 인스턴스 시작을 클릭합니다.
    2. Amazon 머신 이미지(AMI)를 선택하고 Amazon Linux 2 AMI(HVM), SSD 볼륨 유형 을 찾은 다음 선택을 선택합니다. (이 AMI에는 "프리 티어 적격"이라는 레이블이 지정되어 있으며 목록 상단에서 찾을 수 있습니다.)
    3. 인스턴스 유형 선택 페이지에서 프리 티어 적격 t2.micro 유형을 인스턴스의 하드웨어 구성으로 선택한 후 다음: 인스턴스 세부 정보 구성 을 선택합니다 .
    4. 인스턴스 세부 정보 구성 페이지에서 다음을 수행합니다.
      1. 인스턴스 수에 1 을 입력 합니다.
      2. 공용 IP 자동 할당에서 활성화를 선택합니다 .
      3. IAM 역할에서 이전 절차에서 생성한 IAM 역할을 선택합니다(예: EC2InstanceRole ).
      4. 고급 세부 정보 를 확장 하고 사용자 데이터 필드에 다음을 입력합니다.

#!/bin/bash
yum -y 업데이트
yum install -y 루비
yum install -y aws-cli
cd /home/ec2-user
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod +x ./설치
./자동 설치

  1. 3단계: 인스턴스 세부 정보 구성 페이지의 나머지 항목은 변경하지 않고 그대로 둡니다. 다음: 스토리지 추가 를 선택합니다 .
  2. 4단계: 스토리지 추가 페이지를 변경하지 않고 그대로 두고 다음: 태그 추가를 선택합니다.
  3. 태그 추가 를 선택합니다 . 키에 Name 을 입력하고 값에 MyCodePipelineDemo 를 입력합니다 . 다음: 보안 그룹 구성을 선택합니다. 나중에 이 인스턴스에 샘플 애플리케이션을 배포하는 CodeDeploy 애플리케이션을 생성합니다. CodeDeploy는 인스턴스에 연결된 태그를 기반으로 배포할 인스턴스를 선택합니다.
  4. 보안 그룹 구성 페이지에서 다음을 수행합니다.
      • 보안 그룹 할당 옆에 있는 새 보안 그룹 만들기 를 선택 합니다.
      • SSH 에서 소스 아래에서 내 IP 를 선택합니다 .
      • Add Rule (규칙 추가)을 선택 하고 HTTP( HTTP )를 선택한 다음 Source (소스)에서 내 IP( 내 IP )를 선택합니다.
  5. 검토 및 시작을 선택합니다.
  6. 인스턴스 시작 검토 페이지 에서 시작을 선택합니다. 키 페어를 입력하라는 메시지가 표시되면 ' 키 페어 없이 진행 '을 선택 합니다.
  7. 인스턴스 보기 를 선택 하여 확인 페이지를 닫고 콘솔로 돌아갑니다.
  8. 인스턴스 페이지 에서 시작 상태를 볼 수 있습니다 . 인스턴스를 시작할 때 초기 상태는 '보류 중'입니다. 인스턴스가 시작되면 상태가 'running'으로 변경되고 퍼블릭 DNS 이름을 받습니다. ( 공용 DNS 열이 표시되지 않으면 표시 /숨기기 아이콘 을 선택한 다음 공용 DNS 를 선택합니다 .)
  9. 인스턴스에 연결할 준비가 되는 데 몇 분 정도 걸릴 수 있습니다. 상태 확인 열의 정보 를 보고 인스턴스가 상태 확인을 통과했는지 확인하십시오.

Create an EC2 Instance

AWS 전문가를 찾고 계십니까? 여기에서 체크아웃

CodeDeploy에서 애플리케이션 생성

  • CodeDeploy 서비스 역할 생성
    • https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.
    • 콘솔 대시보드에서 역할 을 선택합니다.
    • 역할 생성을 선택합니다.
    • 신뢰할 수 있는 엔터티 유형 선택에서 AWS 서비스 를 선택합니다. 사용 사례 선택에서 CodeDeploy 를 선택합니다. 사용 사례 선택에서 CodeDeploy를 선택합니다. 다음: 권한을 선택합니다. AWSCodeDeployRole 관리형 정책은 이미 역할에 연결되어 있습니다.
    • 다음: 태그 및 다음: 검토를 선택합니다.
    • 역할 이름(예: CodeDeployRole)을 입력한 다음 역할 생성을 선택합니다.
  • CodeDeploy에서 애플리케이션 생성
    • https://console.aws.amazon.com/codedeploy에서 CodeDeploy 콘솔을 엽니다.
    • 응용 프로그램 페이지가 나타나지 않으면 메뉴에서 응용 프로그램 을 선택합니다.
    • 애플리케이션 생성 을 선택합니다.
    • 애플리케이션 이름에 MyDemoApplication 을 입력합니다.
    • 컴퓨팅 플랫폼에서 EC2/온프레미스 를 선택합니다.
    • 애플리케이션 생성을 선택합니다.

    Create an application in CodeDeploy

  • CodeDeploy에서 배포 그룹 생성
    • 애플리케이션을 표시하는 페이지에서 배포 그룹 생성 을 선택합니다.
    • 배포 그룹 이름에 MyDemoDeploymentGroup 을 입력합니다.
    • 서비스 내 역할에서 이전에 생성한 서비스 역할을 선택합니다(예: CodeDeployRole ).
    • 배포 유형에서 In-place 를 선택합니다.
    • 환경 구성 에서 Amazon EC2 인스턴스를 선택합니다. 키 필드에 이름 을 입력합니다. 값 필드에 인스턴스에 태그를 지정하는 데 사용한 이름을 입력합니다(예: MyCodePipelineDemo ).
    • 배포 구성에서 CodeDeployDefault.OneAtaTime 을 선택합니다.
    • 로드 밸런서에서 로드 밸런싱 활성화가 선택되어 있지 않은지 확인합니다. 이 예에서는 로드 밸런서를 설정하거나 대상 그룹을 선택할 필요가 없습니다.
    • 고급 섹션을 확장합니다. 경보 아래에서 경보가 나열되면 경보 구성 무시를 선택합니다.
    • 배포 그룹 생성을 선택합니다.

Create a deployment group in CodeDeploy

AWS 전문가를 찾고 계십니까? 여기에서 체크아웃

파이프라인 생성

    • 파이프라인 생성
    • AWS Management 콘솔에 로그인하고 http://console.aws.amazon.com/codesuite/codepipeline/home에서 CodePipeline 콘솔을 엽니다.
    • https://console.aws.amazon.com/codepipeline/에서 CodePipeline 콘솔을 엽니다.
    • 파이프라인 생성 을 선택 합니다.
    • 1 단계 : 파이프라인 설정 선택의 파이프라인 이름에 MyFirstPipeline 을 입력 합니다.
    • 서비스 역할에서 새 서비스 역할을 선택하여 CodePipeline이 IAM에서 서비스 역할을 생성하도록 허용합니다.
    • 고급 설정 아래의 설정을 기본값으로 두고 다음을 선택합니다.
    • 2단계 : 소스 추가 단계의 소스 공급자 에서 CodeCommit선택 합니다 .
      리포지토리 이름에서 1단계: CodeCommit 리포지토리 생성에서 생성한 CodeCommit 리포지토리의 이름을 선택합니다. 분기 이름에서 기본을 선택하고 다음 단계를 선택합니다.
    • 리포지토리 이름과 분기를 선택하면 이 파이프라인에 대해 생성할 Amazon CloudWatch Events 규칙이 메시지에 표시됩니다.
    • '변경 감지' 옵션에서 기본값을 그대로 둡니다. 이를 통해 CodePipeline은 Amazon CloudWatch Events를 사용하여 소스 리포지토리의 변경 사항을 감지할 수 있습니다.
    • 다음 을 선택 합니다.
    • 3단계 : 빌드 단계 추가에서 빌드 단계 건너뛰기 를 선택한 다음 건너뛰기를 다시 선택하여 경고 메시지를 수락 합니다 . 다음 을 선택 합니다.

    참고 : 이 자습서에서는 빌드 없음 서비스가 필요한 코드를 배포하므로 이 단계를 건너뛸 수 있습니다. 그러나 인스턴스에 배포하기 전에 소스 코드를 빌드해야 하는 경우 이 단계에서 CodeBuild를 구성할 수 있습니다.

    • 4단계 : 배포 추가 단계의 배포 공급자에서 CodeDeploy 를 선택합니다 .
      애플리케이션 이름에서 MyDemoApplication 을 선택합니다 . 배포 그룹에서 MyDemoDeploymentGroup 을 선택한 후 다음 단계 를 선택합니다 .
    • 5단계 : 정보 검토에서 파이프라인 생성 을 선택 합니다.
    • 파이프라인은 생성된 후 실행을 시작합니다. CodeCommit 리포지토리에서 코드를 다운로드하고 EC2 인스턴스에 대한 CodeDeploy 배포를 생성합니다. CodePipeline 샘플이 CodeDeploy 배포의 Amazon EC2 인스턴스에 웹 페이지를 배포할 때 진행률, '성공' 및 '실패' 메시지를 볼 수 있습니다.

Create a Pipeline

이제 모든 설정이 완료되었습니다! 배포 ⇒ 배포 로 이동합니다 . 성공한 모든 배포와 실패한 배포의 로그를 볼 수 있습니다.

사이트의 변경 사항을 확인하려면 EC2 인스턴스를 열고 http://ec2-3-108-40-48.ap-south-1.compute.amazonaws.com 으로 표시되는 퍼블릭 DNS를 검색합니다 .

탐색하면 라이브 페이지가 표시됩니다.

Create an Option Group

코드 배포 자동화를 성공적으로 완료했습니다. 이제 새 코드 변경 사항을 리포지토리에 푸시하고 사이트에 자동으로 게시할 수 있습니다. 여전히 문제가 발생하면 여기에서 언제든지 의견을 말하십시오.

AWS 전문가를 찾고 계십니까? 여기에서 체크아웃