AWS를 지원하지 않는 AWS 지역에 파이프라인을 생성하십시오. CodePipeline - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS를 지원하지 않는 AWS 지역에 파이프라인을 생성하십시오. CodePipeline

작성자: Anand Krishna Varanasi(AWS)

코드 리포지토리: invisible-codepipeline-unsupported-regions

환경: PoC 또는 파일럿

기술: 인프라, DevOps

AWS 서비스: AWS CodeBuild, AWS CodeCommit, AWS CodeDeploy, AWS CodePipeline

요약

CodePipeline AWS는 Amazon Web Services (AWS) 의 DevOps 도구 세트에 속하는 지속적 전송 (CD) 오케스트레이션 서비스입니다. 다양한 소스 (예: 버전 제어 시스템 및 스토리지 솔루션), AWS 및 AWS 파트너의 지속적 통합 (CI) 제품 및 서비스, 오픈 소스 제품과 통합되어 빠른 애플리케이션 및 인프라 배포를 위한 end-to-end 워크플로 서비스를 제공합니다.

하지만 모든 AWS 지역에서 지원되는 CodePipeline 것은 아니며, AWS CI/CD 서비스를 연결하는 보이지 않는 오케스트레이터가 있으면 유용합니다. 이 패턴은 AWS, AWS CodeBuild, AWS와 같은 AWS CI/CD 서비스를 사용하여 아직 지원되지 않는 AWS 지역에서 end-to-end 워크플로 파이프라인을 구현하는 방법을 설명합니다. CodePipeline CodeCommit CodeDeploy

사전 조건 및 제한 사항

사전 조건

  • 활성 상태의 AWS 계정

  • Cloud Development Kit(CDK) CLI 버전 2.28 이상

아키텍처

대상 기술 스택

다음 다이어그램은 아프리카 (케이프타운) 지역과 같이 지원하지 CodePipeline 않는 지역에서 생성된 파이프라인을 보여줍니다. 개발자가 CodeDeploy 구성 파일 (배포 라이프사이클 후크 스크립트라고도 함) 을 에서 호스팅하는 Git 리포지토리로 푸시합니다. CodeCommit (이 패턴과 함께 제공된 GitHub 리포지토리를 참조하십시오.) Amazon EventBridge 규칙이 자동으로 시작됩니다. CodeBuild

CodeDeploy 구성 파일은 파이프라인 소스 단계의 CodeCommit 일부로 가져와 파이프라인으로 전송됩니다. CodeBuild  

다음 단계에서는 다음 CodeBuild 작업을 수행합니다. 

  1. 애플리케이션 소스 코드 TAR 파일을 다운로드합니다. AWS Systems Manager의 기능인 파라미터 스토어를 사용하여 이 파일의 이름을 구성할 수 있습니다.

  2. CodeDeploy 구성 파일을 다운로드합니다.

  3. 애플리케이션 유형별 애플리케이션 소스 코드와 CodeDeploy 구성 파일의 통합 아카이브를 생성합니다.

  4. 결합된 아카이브를 사용하여 Amazon Elastic Compute Cloud (Amazon EC2) 인스턴스에 CodeDeploy 배포를 시작합니다.

지원되지 않는 AWS 리전에서 파이프라인 생성

도구

서비스

  • CodeBuildAWS는 소스 코드를 컴파일하고, 단위 테스트를 실행하고, 배포할 준비가 된 아티팩트를 생성하는 데 도움이 되는 완전관리형 빌드 서비스입니다.

  • CodeCommitAWS는 자체 소스 제어 시스템을 관리할 필요 없이 Git 리포지토리를 비공개로 저장하고 관리할 수 있는 버전 제어 서비스입니다.

  • AWS는 Amazon EC2 또는 온프레미스 인스턴스, AWS Lambda 함수 또는 Amazon Elastic Container Service (Amazon ECS) 서비스로의 배포를 CodeDeploy 자동화합니다.

  • AWS는 소프트웨어 릴리스의 여러 단계를 신속하게 모델링 및 구성하고 소프트웨어 변경 사항을 지속적으로 릴리스하는 CodePipeline 데 필요한 단계를 자동화하도록 지원합니다.

  • AWS Cloud Development Kit(AWS CDK)는 AWS 클라우드 인프라를 코드로 정의하고 프로비저닝하는 데 도움이 되는 소프트웨어 개발 프레임워크입니다.

코드

이 패턴의 코드는 GitHub CodePipeline 미지원 지역 리포지토리에서 사용할 수 있습니다.

에픽

작업설명필요한 기술

CDK CLI를 설치합니다.

지침은 CDK 설명서를 참조하세요.

AWS DevOps

Git 클라이언트를 설치합니다.

커밋을 만들려면 로컬 컴퓨터에 설치된 Git 클라이언트를 사용하여 커밋을 저장소로 푸시하면 됩니다. CodeCommit Git 클라이언트를 CodeCommit 사용하여 설정하려면 설명서를 참조하십시오. CodeCommit

AWS DevOps

npm을 설치합니다.

npm 패키지 매니저를 설치합니다. 자세한 내용은 npm 설명서를 참조하세요.

AWS DevOps
작업설명필요한 기술

코드 리포지토리를 복제합니다.

다음 명령을 실행하여 GitHub CodePipeline 지원되지 않는 지역 리포지토리를 로컬 시스템에 복제합니다.

git clone https://github.com/aws-samples/invisible-codepipeline-unsupported-regions
DevOps 엔지니어

cdk.json에서 파라미터를 설정합니다.

cdk.json 파일을 열고 다음 파라미터 값을 입력합니다.

"pipeline_account":"XXXXXXXXXXXX", "pipeline_region":"us-west-2", "repo_name": "app-dev-repo", "ec2_tag_key": "test-vm", "configName" : "cbdeployconfig", "deploymentGroupName": "cbdeploygroup", "applicationName" : "cbdeployapplication", "projectName" : "CodeBuildProject"

여기서 각 항목은 다음과 같습니다.

  • pipeline_account(은)는 파이프라인이 빌드될 AWS 계정입니다.

  • pipeline_region(은)는 파이프라인이 빌드될 AWS 리전입니다.

  • repo_name CodeCommit 저장소의 이름입니다.

  • ec2_tag_key(은)는 코드를 배포하려는 EC2 인스턴스에 연결된 태그입니다.

  • configName CodeDeploy 구성 파일의 이름입니다.

  • deploymentGroupName CodeDeploy 배포 그룹의 이름입니다.

  • applicationName CodeDeploy 애플리케이션 이름입니다.

  • projectName CodeBuild 프로젝트 이름입니다.

AWS DevOps

CDK 구성 라이브러리를 설정합니다.

복제된 GitHub 리포지토리에서 다음 명령을 사용하여 AWS CDK 구성 라이브러리를 설치하고, 애플리케이션을 구축하고, 합성하여 애플리케이션용 AWS CloudFormation 템플릿을 생성합니다.

npm i aws-cdk-lib npm run build cdk synth
AWS DevOps

샘플 CDK 애플리케이션을 배포합니다.

지원되지 않는 리전(예: af-south-1)에서 다음 명령을 실행하여 코드를 배포합니다.

cdk deploy
AWS DevOps
작업설명필요한 기술

애플리케이션용 CI/CD를 설정합니다.

cdk.json파일에 지정한 CodeCommit 리포지토리 (app-dev-repo기본적으로 호출됨) 를 복제하여 애플리케이션의 CI/CD 파이프라인을 설정합니다.

git clone https://git-codecommit.us-west-2.amazonaws.com/v1/repos/app-dev-repo

여기서 리포지토리 이름과 리전은 cdk.json 파일에 입력한 값에 따라 달라집니다.

AWS DevOps
작업설명필요한 기술

배포 지침으로 파이프라인을 테스트합니다.

GitHub CodePipeline 미지원 지역 리포지토리의 CodeDeploy_Files 폴더에는 애플리케이션 배포를 CodeDeploy 지시하는 샘플 파일이 포함되어 있습니다. 이 appspec.yml 파일은 응용 프로그램 배포 흐름을 제어하는 후크가 포함된 CodeDeploy 구성 파일입니다. 샘플 파일인 index.html, start_server.sh, stop_server.sh, install_dependencies.sh(을)를 사용하여 Apache에서 호스팅되는 웹 사이트를 업데이트할 수 있습니다. 예를 들어 GitHub 리포지토리의 코드를 사용하여 모든 유형의 애플리케이션을 배포할 수 있습니다. 파일이 CodeCommit 리포지토리로 푸시되면 보이지 않는 파이프라인이 자동으로 시작됩니다. 배포 결과를 보려면 CodeBuild 및 CodeDeploy 콘솔에서 개별 단계의 결과를 확인하세요.

AWS DevOps

관련 리소스