자습서: 간단한 파이프라인 생성(S3 버킷) - AWS CodePipeline

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

자습서: 간단한 파이프라인 생성(S3 버킷)

파이프라인을 생성하는 가장 쉬운 방법은 AWS CodePipeline 콘솔에서 파이프라인 생성 마법사를 사용하는 것입니다.

이 자습서에서는 버전이 지정된 S3 소스 버킷을 사용하고 샘플 애플리케이션을 CodeDeploy 릴리스하는 2단계 파이프라인을 생성합니다.

참고

Amazon S3가 파이프라인의 소스 공급자인 경우, 소스 파일을 .zip 하나로 압축하고 그 .zip을 소스 버킷에 업로드할 수 있습니다. 압축이 풀린 단일 파일을 업로드할 수도 있지만 .zip 파일을 예상하는 다운스트림 작업은 실패합니다.

중요

파이프라인 생성의 일환으로 고객이 제공하는 S3 아티팩트 버킷이 아티팩트 CodePipeline 에 사용됩니다. (이는 S3 소스 작업에 사용되는 버킷과 다릅니다.) S3 아티팩트 버킷이 파이프라인의 계정과 다른 계정에 있는 경우 S3 아티팩트 버킷을 안전하고 신뢰할 수 AWS 계정 있는 에서 소유해야 합니다.

이 간단한 파이프라인을 생성한 후 다른 단계를 추가한 다음 단계 간 전환을 비활성화하고 활성화합니다.

중요

이 절차에서 파이프라인에 추가하는 많은 작업에는 파이프라인을 생성하기 전에 생성해야 하는 AWS 리소스가 포함됩니다.소스 작업에 대한 AWS 리소스는 항상 파이프라인을 생성하는 동일한 AWS 리전에서 생성해야 합니다. 예를 들어 미국 동부(오하이오) 리전에서 파이프라인을 생성하는 경우 CodeCommit 리포지토리는 미국 동부(오하이오) 리전에 있어야 합니다.

파이프라인을 생성할 때 리전 간 작업을 추가할 수 있습니다. 리전 간 작업에 대한 AWS 리소스는 작업을 실행하려는 동일한 AWS 리전에 있어야 합니다. 자세한 내용은 에 지역 간 액션 추가 CodePipeline 단원을 참조하십시오.

시작하기 전에 시작하기 CodePipeline 단원의 사전 조건을 충족해야 합니다.

1단계: 애플리케이션에 대한 S3 소스 버킷 생성

버전이 지정된 위치에 소스 파일이나 애플리케이션을 저장할 수 있습니다. 이 자습서에서는 샘플 애플리케이션 파일에 대한 S3 버킷을 생성하고 해당 버킷의 버전 관리를 활성화합니다. 버전 관리를 활성화한 후 샘플 애플리케이션을 해당 버킷에 복사합니다.

S3 버킷을 생성하려면,
  1. 에서 콘솔에 로그인합니다 AWS Management Console. S3 콘솔을 엽니다.

  2. 버킷 생성을 선택합니다.

  3. [Bucket Name]에서 버킷 이름을 입력합니다(예: awscodepipeline-demobucket-example-date).

    참고

    Amazon S3에 있는 모든 버킷 이름은 고유해야 하므로, 예에 표시된 이름이 아닌, 사용자 고유의 이름을 사용하세요. 이름에 날짜만 추가하여 간단히 예제 이름을 변경해도 됩니다. 이 자습서의 나머지 부분에서 이 이름을 사용할 것이므로 이름을 메모해 둡니다.

    리전에서 미국 서부(오레곤)과 같은 파이프라인을 생성할 리전을 선택한 다음, 버킷 생성을 선택합니다.

  4. 버킷이 생성되면 성공적으로 수행했다는 배너가 표시됩니다. [Go to bucket details]를 선택합니다.

  5. [Properties] 탭에서 [Versioning]을 선택합니다. [Enable versioning]을 선택한 다음 [Save]를 선택합니다.

    버전 관리가 활성화되면 Amazon S3이 버킷의 모든 객체 버전을 저장합니다.

  6. [Permissions] 탭에서 기본값을 그대로 둡니다. S3의 버킷 및 객체 권한에 대한 자세한 내용은 정책에서 권한 지정 단원을 참조하십시오.

  7. 그런 다음 샘플을 다운로드하여 로컬 컴퓨터의 폴더나 디렉토리에 저장합니다.

    1. 다음 중 하나를 선택합니다. Windows Server 인스턴스에 대해 이 자습서의 단계를 수행하려는 경우 SampleApp_Windows.zip을 선택합니다.

      • 를 사용하여 Amazon Linux 인스턴스에 배포하려면 SampleApp_Linux.zip 에서 샘플 애플리케이션을 CodeDeploy다운로드합니다.

      • 를 사용하여 Windows Server 인스턴스에 배포하려면 SampleApp_Windows.zip 에서 샘플 애플리케이션을 CodeDeploy다운로드합니다.

      샘플 애플리케이션에는 를 사용하여 배포하기 위한 다음 파일이 포함되어 있습니다 CodeDeploy.

      • appspec.yml YAML- 애플리케이션 사양 파일(AppSpec 파일)은 배포를 관리하는 CodeDeploy 데 가 사용하는 형식의 파일입니다. AppSpec 파일에 대한 자세한 내용은 AWS CodeDeploy 사용 설명서CodeDeploy AppSpec 파일 참조를 참조하세요.

      • index.html – 인덱스 파일에는 배포된 샘플 애플리케이션의 홈 페이지가 포함되어 있습니다.

      • LICENSE.txt – 라이선스 파일에는 샘플 애플리케이션에 대한 라이선스 정보가 포함되어 있습니다.

      • 스크립트용 파일 - 샘플 애플리케이션은 스크립트를 사용하여 인스턴스의 위치에 텍스트 파일을 씁니다. 다음과 같이 여러 CodeDeploy 배포 수명 주기 이벤트 각각에 대해 하나의 파일이 작성됩니다.

        • (Linux 샘플만 해당) scripts 폴더 - 이 폴더에는 종속성을 설치하고 자동 배포를 위한 샘플 애플리케이션을 시작 및 중지하기 위한 install_dependencies, start_server, stop_server와 같은 쉘 스크립트가 포함되어 있습니다.

        • (Windows 샘플만 해당) before-install.bat – 이것은 BeforeInstall 배포 수명 주기 이벤트의 배치 스크립트로, 이 샘플의 이전 배포 중 기록된 이전 파일을 제거하기 위해 실행되고 인스턴스에 새 파일을 기록할 위치를 만듭니다.

    2. 압축된 파일을 다운로드합니다. 파일의 압축을 풀지 마십시오.

  8. Amazon S3 콘솔에서 버킷용 파일 을 업로드합니다.

    1. 업로드를 선택합니다.

    2. 파일을 끌어서 놓거나 파일 추가를 선택하고 파일을 찾아봅니다.

    3. 업로드를 선택합니다.

2단계: Amazon EC2 Windows 인스턴스 생성 및 CodeDeploy 에이전트 설치

참고

이 자습서에서는 Amazon EC2 Windows 인스턴스를 생성하기 위한 샘플 단계를 제공합니다. Amazon EC2 Linux 인스턴스를 생성하는 샘플 단계는 섹션을 참조하세요3단계: Amazon EC2 Linux 인스턴스 생성 및 CodeDeploy 에이전트 설치. 생성할 인스턴스 수를 묻는 메시지가 표시되면 2개의 인스턴스를 지정하십시오.

이 단계에서는 샘플 애플리케이션을 배포할 Windows Server Amazon EC2 인스턴스를 생성합니다. 이 프로세스의 일환으로 인스턴스에 CodeDeploy 에이전트를 설치하고 관리할 수 있는 정책이 포함된 인스턴스 역할을 생성합니다. CodeDeploy 에이전트는 CodeDeploy 배포에 인스턴스를 사용할 수 있는 소프트웨어 패키지입니다. 또한 인스턴스가 CodeDeploy 에이전트가 애플리케이션을 배포하는 데 사용하는 파일을 가져오고 인스턴스를 에서 관리할 수 있도록 허용하는 정책을 연결합니다SSM.

인스턴스 역할을 생성하려면
  1. )에서 IAM 콘솔을 엽니다https://console.aws.amazon.com/iam/.

  2. 콘솔 대시보드에서 역할을 선택합니다.

  3. 역할 생성을 선택합니다.

  4. 신뢰할 수 있는 유형의 엔터티 선택에서 AWS 서비스를 선택합니다. 사용 사례 선택에서 를 선택한 다음 다음: 권한 을 EC2선택합니다.

  5. 검색하여 AmazonEC2RoleforAWSCodeDeploy라는 정책을 선택합니다.

  6. 검색하여 AmazonSSMManagedInstanceCore라는 정책을 선택합니다. 다음: 태그를 선택합니다.

  7. 다음: 검토를 선택합니다. 역할의 이름을 입력합니다(예: EC2InstanceRole).

    참고

    다음 단계를 위해 역할 이름을 적어 둡니다. 인스턴스를 생성할 때 이 역할을 선택합니다.

    역할 생성을 선택합니다.

인스턴스를 시작하려면
  1. 에서 Amazon EC2 콘솔을 엽니다https://console.aws.amazon.com/ec2/.

  2. 측면 탐색에서 인스턴스를 선택하고 페이지 상단에서 인스턴스 시작을 선택합니다.

  3. 이름 및 태그 아래의 이름MyCodePipelineDemo를 입력하세요. 그러면 인스턴스에 Name의 태그 MyCodePipelineDemo의 태그 이 할당됩니다. 나중에 샘플 CodeDeploy 애플리케이션을 인스턴스에 배포하는 애플리케이션을 생성합니다. CodeDeploy 는 태그를 기반으로 배포할 인스턴스를 선택합니다.

  4. 애플리케이션 및 OS 이미지(Amazon Machine Image)에서 Windows 옵션을 선택합니다. (이AMI는 Microsoft Windows Server 2019 Base로 설명되며 '자유 계층 적격' 레이블이 지정되어 있으며 빠른 시작에서 찾을 수 있습니다.)

  5. 인스턴스 유형에서 인스턴스의 하드웨어 구성으로 사용할 프리 티어 가능 t2.micro 유형을 선택합니다.

  6. 키 페어(로그인)에서 키 페어를 선택하거나 새로 생성합니다.

    키 페어 없이 계속을 선택할 수도 있습니다.

    참고

    이 자습서의 목적상 키 페어 없이 진행할 수 있습니다. SSH 를 사용하여 인스턴스에 연결하려면 키 페어를 생성하거나 사용합니다.

  7. 네트워크 설정에서 다음을 수행합니다.

    퍼블릭 IP 자동 할당에서 상태가 활성화인지 확인합니다.

    • [Assign a security group] 옆에 있는 [Create a new security group]을 선택합니다.

    • 의 행에서 소스 유형 SSH에서 내 IP 를 선택합니다.

    • 보안 그룹 추가 를 선택하고 HTTP를 선택한 다음 소스 유형 에서 내 IP 를 선택합니다.

  8. Advanced details(고급 세부 정보)를 확장합니다. IAM 인스턴스 프로파일 에서 이전 절차에서 생성한 IAM 역할(예: )을 선택합니다EC2InstanceRole.

  9. 요약에서 인스턴스 수2를 입력합니다.

  10. 인스턴스 시작을 선택합니다.

  11. 모든 인스턴스 보기(View all instances)를 선택하여 확인 페이지를 닫고 콘솔로 돌아갑니다.

  12. [Instances] 페이지에서 시작 상태를 볼 수 있습니다. 인스턴스를 시작할 때 초기 상태는 pending입니다. 인스턴스가 시작되면 상태가 로 변경running되고 퍼블릭 DNS 이름이 수신됩니다. (공개 DNS 열이 표시되지 않으면 표시/숨기기 아이콘을 선택한 다음 공개 DNS를 선택합니다.)

  13. 연결할 수 있도록 인스턴스가 준비될 때까지 몇 분 정도 걸릴 수 있습니다. 인스턴스가 상태 확인을 통과했는지 확인합니다. [Status Checks] 열에서 이 정보를 볼 수 있습니다.

3단계: 에서 애플리케이션 생성 CodeDeploy

에서 CodeDeploy 애플리케이션은 배포하려는 코드에 대한 이름 형식의 식별자입니다. 는 이 이름을 CodeDeploy 사용하여 배포 중에 개정, 배포 구성 및 배포 그룹의 올바른 조합이 참조되도록 합니다. 이 자습서의 뒷부분에서 파이프라인을 생성할 때 이 단계에서 생성하는 CodeDeploy 애플리케이션의 이름을 선택합니다.

먼저 에서 CodeDeploy 사용할 서비스 역할을 생성합니다. 서비스 역할을 이미 생성한 경우 다른 서비스 역할을 생성할 필요가 없습니다.

CodeDeploy 서비스 역할을 생성하려면
  1. )에서 IAM 콘솔을 엽니다https://console.aws.amazon.com/iam/.

  2. 콘솔 대시보드에서 역할을 선택합니다.

  3. 역할 생성을 선택합니다.

  4. 신뢰할 수 있는 엔터티 선택에서 AWS 서비스를 선택합니다. 사용 사례(Use case)에서 CodeDeploy을(를) 선택합니다. 나열된 옵션 CodeDeploy 중에서 선택합니다. Next(다음)를 선택합니다. AWSCodeDeployRole 관리형 정책이 역할에 연결됩니다.

  5. Next(다음)를 선택합니다.

  6. 역할 이름(예: CodeDeployRole)을 입력한 후 Create role(역할 생성)을 선택합니다.

에서 애플리케이션을 생성하려면 CodeDeploy
  1. https://console.aws.amazon.com/codedeploy에서 CodeDeploy 콘솔을 엽니다.

  2. 애플리케이션 페이지가 표시되지 않으면 AWS CodeDeploy 메뉴에서 애플리케이션 을 선택합니다.

  3. 애플리케이션 생성을 선택합니다.

  4. 애플리케이션 이름MyDemoApplication을 입력합니다.

  5. 컴퓨팅 플랫폼 에서 EC2/온프레미스 를 선택합니다.

  6. 애플리케이션 생성을 선택합니다.

에서 배포 그룹을 생성하려면 CodeDeploy
  1. 애플리케이션이 표시되는 페이지에서 Create deployment group(배포 그룹 생성)을 선택합니다.

  2. Deployment group name(배포 그룹 이름)MyDemoDeploymentGroup을 입력합니다.

  3. 서비스 역할에서 앞서 생성한 서비스 역할을 선택합니다. 에 대한 서비스 역할 생성에 설명된 신뢰 및 권한과 최소한 AWS CodeDeploy 를 신뢰하는 서비스 역할을 사용해야 합니다. CodeDeploy 서비스 역할을 가져오려면 서비스 역할 가져오기(콘솔)를 ARN참조하세요. ARN

  4. 배포 유형 아래에서 인 플레이스를 선택합니다.

  5. 환경 구성에서 Amazon EC2 인스턴스를 선택합니다. 필드에서 이름을 선택하고 필드에 MyCodePipelineDemo를 입력합니다.

    중요

    EC2 인스턴스를 생성할 때 인스턴스에 할당한 이름 키와 동일한 값을 여기에서 선택해야 합니다. MyCodePipelineDemo가 아닌 이름으로 인스턴스에 태그를 지정한 경우, 여기에서 해당 이름을 사용해야 합니다.

  6. AWS Systems Manager 를 사용한 에이전트 구성에서 지금 및 일정 업데이트를 선택합니다. 그러면 인스턴스에 에이전트가 설치됩니다. Windows 인스턴스는 이미 SSM 에이전트와 함께 구성되어 있으며 이제 CodeDeploy 에이전트와 함께 업데이트됩니다.

  7. 배포 설정에서 CodeDeployDefault.OneAtaTime을 선택합니다.

  8. 로드 밸런서에서 로드 밸런싱 활성화 상자가 선택되지 않았는지 확인합니다. 이 예에서는 로드 밸런서를 설정하거나 대상 그룹을 선택할 필요가 없습니다. 확인란의 선택을 취소하면 로드 밸런서 옵션이 표시되지 않습니다.

  9. 고급 섹션에서 기본값을 그대로 둡니다.

  10. [Create deployment group]을 선택합니다.

4단계: 에서 첫 번째 파이프라인 생성 CodePipeline

자습서의 이 부분에서는 파이프라인을 생성합니다. 샘플은 파이프라인을 통해 자동으로 실행됩니다.

CodePipeline 자동 릴리스 프로세스를 생성하려면
  1. 에 로그인 AWS Management Console 하고 http://console.aws.amazon.com/codesuite/codepipeline/home CodePipeline 콘솔을 엽니다.

  2. [Welcome] 페이지, [Getting started] 페이지 또는 [Pipelines] 페이지에서 Create pipeline(파이프라인 생성)을 선택합니다.

  3. 1단계: 파이프라인 설정 선택파이프라인 이름MyFirstPipeline을 입력합니다.

    참고

    파이프라인에 다른 이름을 선택하는 경우, 이 자습서의 나머지 부분에서 MyFirstPipeline 대신 해당 이름을 사용해야 합니다. 파이프라인을 만든 후에는 해당 이름을 변경할 수 없습니다. 파이프라인 이름에는 일부 제한이 적용됩니다. 자세한 내용은 의 할당량 AWS CodePipeline 단원을 참조하십시오.

  4. 파이프라인 유형에서는 기본 선택을 V2로 유지합니다. 파이프라인 유형은 특성과 가격이 다릅니다. 자세한 내용은 파이프라인 유형 단원을 참조하십시오.

  5. 서비스 역할에서 다음 중 하나를 수행합니다.

    • CodePipeline 가 에서 새 서비스 역할을 생성하도록 허용하려면 새 서비스 역할을 선택합니다IAM.

    • 에서 이미 생성된 서비스 역할을 사용하려면 기존 서비스 역할을 선택합니다IAM. 역할 이름의 목록에서 서비스 역할을 선택합니다.

  6. [Advanced settings]의 설정은 기본값 그대로 두고, [Next]를 선택합니다.

  7. 2단계: 소스 단계 추가소스 공급자에서 Amazon S3를 선택합니다. [Bucket]에 1단계: 애플리케이션에 대한 S3 소스 버킷 생성에서 생성한 S3 버킷의 이름을 입력합니다. S3 객체 키에 파일 경로가 있거나 없는 객체 키를 입력하고 파일 확장명을 포함해야 합니다. 예를 들어, SampleApp_Windows.zip의 경우 다음 예제에 표시된 대로 샘플 파일 이름을 입력합니다.

    SampleApp_Windows.zip

    다음 단계를 선택합니다.

    [Change detection options] 아래에서 기본값을 그대로 둡니다. 이렇게 하면 CodePipeline 가 Amazon CloudWatch Events를 사용하여 소스 버킷의 변경 사항을 감지할 수 있습니다.

    Next(다음)를 선택합니다.

  8. Step 3: Add build stage(3단계: 빌드 단계 추가)에서 Skip build stage(빌드 단계 건너뛰기)를 선택하고 Skip(건너뛰기)을 다시 선택하여 경고 메시지를 수락합니다. Next(다음)를 선택합니다.

  9. 4단계: 배포 단계 추가의 배포 공급자 에서 를 선택합니다CodeDeploy . 리전 필드는 기본적으로 파이프라인 AWS 리전 과 동일합니다. 애플리케이션 이름MyDemoApplication을 입력하거나 새로 고침 버튼을 선택한 다음, 목록에서 애플리케이션 이름을 선택합니다. 배포 그룹에서 MyDemoDeploymentGroup을 입력하거나, 목록에서 이를 선택한 후 다음을 선택합니다.

    참고

    Deploy라는 이름은 파이프라인의 첫 단계에 Source라는 이름이 지정되는 것처럼 4단계: 배포 단계 추가 단계에서 생성한 단계에 기본적으로 지정되는 이름입니다.

  10. 5단계: 검토에서 정보를 검토한 다음, 파이프라인 생성을 선택합니다.

  11. 파이프라인이 실행을 시작합니다. CodePipeline 샘플이 배포의 각 Amazon EC2 인스턴스에 웹 페이지를 배포함에 따라 진행 상황 및 성공 및 실패 메시지를 볼 수 있습니다 CodeDeploy.

축하합니다! 방금 에서 간단한 파이프라인을 생성했습니다 CodePipeline. 파이프라인에는 두 단계가 있습니다.

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

  • 를 사용하여 이러한 변경 사항을 EC2 인스턴스에 배포하는 배포 단계입니다 CodeDeploy.

이제 결과를 확인합니다.

파이프라인이 성공적으로 실행되었는지 확인하려면
  1. 파이프라인의 초기 진행 상황을 확인합니다. 각 단계의 상태는 [No executions yet]에서 [In Progress]로 바뀌며, 다시 [Succeeded]나 [Failed] 중 하나로 바뀝니다. 파이프라인은 몇 분 내로 첫 번째 실행을 완료해야 합니다.

  2. 작업 상태가 성공으로 표시되면 배포 스테이지의 상태 영역에서 세부 정보를 선택합니다. 그러면 CodeDeploy 콘솔이 열립니다.

  3. 배포 그룹 탭의 배포 수명 주기 이벤트에서 인스턴스 ID를 선택합니다. EC2 콘솔이 열립니다.

  4. 설명 탭의 퍼블릭 DNS에서 주소를 복사한 다음 웹 브라우저의 주소 표시줄에 붙여넣습니다. S3 버킷에 업로드한 샘플 애플리케이션에 대한 인덱스 페이지를 봅니다.

    웹페이지에 S3 버킷에 업로드한 샘플 애플리케이션이 표시됩니다.

단계, 작업, 파이프라인의 작동 방식에 대한 자세한 내용은 CodePipeline 개념 단원을 참조하십시오.

(선택 사항) 5단계: 파이프라인에 다른 단계 추가

이제 파이프라인에 다른 단계를 추가하여 를 사용하여 스테이징 서버에서 프로덕션 서버로 배포합니다 CodeDeploy. 먼저 CodePipelineDemoApplication 의 에서 다른 배포 그룹을 생성합니다 CodeDeploy. 그런 다음 이 배포 그룹을 사용하는 작업이 포함된 단계를 추가합니다. 다른 단계를 추가하려면 CodePipeline 콘솔 또는 AWS CLI 를 사용하여 JSON 파일에서 파이프라인의 구조를 검색하고 수동으로 편집한 다음 update-pipeline 명령을 실행하여 파이프라인을 변경 사항으로 업데이트합니다.

에서 두 번째 배포 그룹 생성 CodeDeploy

참고

자습서의 이 부분에서는 두 번째 배포 그룹을 생성하지만 이전과 동일한 Amazon EC2 인스턴스에 배포합니다. 이는 데모용일 뿐입니다. 에 오류가 표시되는 방법을 보여주지 않도록 의도적으로 설계되었습니다 CodePipeline.

에서 두 번째 배포 그룹을 생성하려면 CodeDeploy
  1. https://console.aws.amazon.com/codedeploy에서 CodeDeploy 콘솔을 엽니다.

  2. 애플리케이션을 선택한 다음 애플리케이션 목록에서 MyDemoApplication을 선택합니다.

  3. 배포 그룹 탭을 선택한 다음 Create deployment group(배포 그룹 생성)을 선택합니다.

  4. Create deployment group(배포 그룹 생성) 페이지의 Deployment group name(배포 그룹 이름)에 두 번째 배포 그룹 이름(예: CodePipelineProductionFleet)을 입력합니다.

  5. 서비스 역할 에서 초기 배포에 사용한 것과 동일한 CodeDeploy 서비스 역할( CodePipeline 서비스 역할 아님)을 선택합니다.

  6. 배포 유형 아래에서 인 플레이스를 선택합니다.

  7. 환경 구성에서 Amazon EC2 인스턴스를 선택합니다. 상자에서 이름을 선택하고, 상자에서 목록의 MyCodePipelineDemo를 선택합니다. 배포 설정의 기본 구성을 그대로 둡니다.

  8. Deployment configuration(배포 구성)에서 CodeDeployDefault.OneAtaTime을 선택합니다.

  9. 로드밸런서에서 Enable load balancing(로드 밸런싱 활성화)을 선택 해제합니다.

  10. [Create deployment group]을 선택합니다.

파이프라인의 다른 단계로 배포 그룹 추가

이제 다른 배포 그룹이 있으므로 이 배포 그룹을 사용하여 이전에 사용한 것과 동일한 EC2 인스턴스에 배포하는 단계를 추가할 수 있습니다. 콘솔 또는 를 CodePipeline 사용하여 이 단계를 AWS CLI 추가할 수 있습니다.

세 번째 단계 생성(콘솔)

CodePipeline 콘솔을 사용하여 새 배포 그룹을 사용하는 새 단계를 추가할 수 있습니다. 이 배포 그룹은 이미 사용한 EC2 인스턴스에 배포되므로 이 단계의 배포 작업이 실패합니다.

  1. 에 로그인 AWS Management Console 하고 http://console.aws.amazon.com/codesuite/codepipeline/home CodePipeline 콘솔을 엽니다.

  2. 이름 에서 생성한 파이프라인의 이름 을 선택합니다 MyFirstPipeline.

  3. 파이프라인 세부 정보 페이지에서 [Edit]를 선택합니다.

  4. 편집 페이지에서 + Add stage(단계 추가)를 선택하여 배포 단계 바로 다음에 단계를 추가합니다.

    편집 화면의 + 단계 추가 버튼을 보여주는 이미지
  5. Add stage(단계 추가)Stage name(단계 이름)Production을 입력합니다. Add stage(단계 추가)를 선택합니다.

  6. 새 단계에서 + Add action group(작업 그룹 추가)을 선택합니다.

  7. 작업 편집작업 이름에서 Deploy-Second-Deployment를 입력합니다. 작업 공급자 배포에서 를 선택합니다CodeDeploy.

  8. CodeDeploy 섹션의 애플리케이션 이름 MyDemoApplication에서 파이프라인을 생성할 때와 마찬가지로 드롭다운 목록에서 를 선택합니다. 배포 그룹에서 방금 생성한 배포 그룹(CodePipelineProductionFleet)을 선택합니다. 입력 아티팩트에서 소스 작업에서 입력 아티팩트를 선택합니다. 저장(Save)을 선택합니다.

  9. 편집 페이지에서 저장을 선택합니다. 파이프라인 변경 사항 저장에서 저장을 선택합니다.

  10. 새로운 단계가 파이프라인에 추가되었더라도 변경 사항에 의해 파이프라인이 다시 실행되도록 트리거되지 않았으므로 상태가 [No executions yet]으로 표시됩니다. 편집된 파이프라인이 어떻게 실행되는지를 보려면 수동으로 마지막 개정을 다시 실행해야 합니다. 파이프라인 세부 정보 페이지에서 변경 사항 릴리스를 선택한 다음, 메시지가 표시되면 릴리스를 선택합니다. 이렇게 하면 소스 작업에 지정된 각 소스 위치에서 사용 가능한 가장 최근의 개정이 파이프라인을 통해 실행됩니다.

    또는 AWS CLI 를 사용하여 로컬 Linux, macOS 또는 Unix 시스템의 터미널 또는 로컬 Windows 시스템의 명령 프롬프트에서 파이프라인을 다시 실행하려면 파이프라인 이름을 지정하여 start-pipeline-execution 명령을 실행합니다. 이렇게 하면 파이프라인을 통해 소스 버킷의 애플리케이션이 두 번째로 실행됩니다.

    aws codepipeline start-pipeline-execution --name MyFirstPipeline

    이 명령은 pipelineExecutionId 객체를 반환합니다.

  11. CodePipeline 콘솔로 돌아가 파이프라인 목록에서 뷰 페이지를 열MyFirstPipeline도록 선택합니다.

    파이프라인에 세 단계 및 이 세 단계를 통해 실행 중인 아티팩트의 상태가 표시됩니다. 파이프라인이 모든 단계를 통해 실행되려면 최대 5분이 소요될 수 있습니다. 앞에서와 마찬가지로 첫 번째 두 단계에는 배포 성공이 표시되지만, Production 단계에는 Deploy-Second-Deployment 작업 실패가 표시됩니다.

  12. [Deploy-Second-Deployment] 작업에서 [Details]를 선택합니다. 배포 페이지로 CodeDeploy 리디렉션됩니다. 이 경우 실패는 첫 번째 인스턴스 그룹이 모든 EC2 인스턴스에 배포되어 두 번째 배포 그룹에 대한 인스턴스가 없어서 발생합니다.

    참고

    이 경우의 실패는 의도된 것으로 파이프라인 단계에 실패가 있는 경우 어떻게 되는지를 설명하기 위한 것입니다.

세 번째 단계 생성(CLI)

AWS CLI 를 사용하여 파이프라인에 스테이지를 추가하는 것은 콘솔을 사용하는 것보다 더 복잡하지만 파이프라인의 구조에 대한 가시성을 높입니다.

파이프라인에 대한 3번째 단계를 생성하려면
  1. 로컬 Linux, macOS 또는 Unix 머신에서 터미널 세션을 열거나 로컬 Windows 머신에서 명령 프롬프트를 열고, get-pipeline 명령을 실행하여 방금 생성한 파이프라인의 구조를 표시합니다. MyFirstPipeline의 경우, 다음 명령을 입력합니다.

    aws codepipeline get-pipeline --name "MyFirstPipeline"

    이 명령은 의 구조를 반환합니다 MyFirstPipeline. 출력의 첫 번째 부분에 다음과 비슷한 내용이 표시됩니다.

    { "pipeline": { "roleArn": "arn:aws:iam::80398EXAMPLE:role/AWS-CodePipeline-Service", "stages": [ ...

    출력의 마지막 부분에 파이프라인 메타데이터가 포함되고 다음과 비슷한 내용이 표시됩니다.

    ... ], "artifactStore": { "type": "S3" "location": "amzn-s3-demo-bucket", }, "name": "MyFirstPipeline", "version": 4 }, "metadata": { "pipelineArn": "arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline", "updated": 1501626591.112, "created": 1501626591.112 } }
  2. 이 구조를 복사하여 평문 편집기에 붙여 넣은 다음 파일을 pipeline.json로 저장합니다. 편의를 위해 이 파일을 aws codepipeline 명령을 실행하는 동일한 디렉터리에 저장합니다.

    참고

    다음과 같이 get-pipeline 명령을 사용하여 를 파일에 JSON 직접 파이프할 수 있습니다.

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
  3. 배포 스테이지 섹션을 복사하고 이를 처음 두 단계 이후에 붙여 넣습니다. 배포 스테이지와 같은 배포 단계이므로 이를 세 번째 단계의 템플릿으로 사용할 것입니다.

  4. 단계 이름 및 배포 그룹 세부 정보를 변경합니다.

    다음 예제는 배포 단계 후 pipeline.json 파일에 JSON 추가하는 를 보여줍니다. 강조 표시된 요소를 새 값으로 편집하십시오. 배포 스테이지와 프로덕션 단계를 구분하기 위해 쉼표를 포함해야 한다는 것을 기억하십시오.

    , { "name": "Production", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "Deploy-Second-Deployment", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "CodePipelineDemoApplication", "DeploymentGroupName": "CodePipelineProductionFleet" }, "runOrder": 1 } ] }
  5. get-pipeline 명령을 사용하여 검색된 파이프라인 구조로 작업하는 경우 JSON 파일에서 metadata 줄을 제거해야 합니다. 이렇게 하지 않으면 update-pipeline 명령에서 사용할 수 없습니다. "metadata": { } 행과, "created", "pipelineARN""updated" 필드를 제거합니다.

    예를 들어, 구조에서 다음 행을 삭제합니다.

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }

    파일을 저장합니다.

  6. 다음과 유사하게 파이프라인 JSON 파일을 지정하여 update-pipeline 명령을 실행합니다.

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    이 명령은 업데이트한 파이프라인의 전체 구조를 반환합니다.

    중요

    파일 이름 앞에 file://를 포함해야 합니다. 이 명령에 필수적입니다.

  7. start-pipeline-execution 명령을 실행하여 파이프라인의 이름을 지정합니다. 이렇게 하면 파이프라인을 통해 소스 버킷의 애플리케이션이 두 번째로 실행됩니다.

    aws codepipeline start-pipeline-execution --name MyFirstPipeline

    이 명령은 pipelineExecutionId 객체를 반환합니다.

  8. CodePipeline 콘솔을 열고 파이프라인 MyFirstPipeline 목록에서 를 선택합니다.

    파이프라인에 세 단계 및 이 세 단계를 통해 실행 중인 아티팩트의 상태가 표시됩니다. 파이프라인이 모든 단계를 통해 실행되려면 최대 5분이 소요될 수 있습니다. 앞에서와 마찬가지로 첫 번째 두 단계에는 배포 성공이 표시되지만, [Production] 단계에는 [Deploy-Second-Deployment] 작업이 실패했다고 표시됩니다.

  9. [Deploy-Second-Deployment] 작업에서 [Details]를 선택하여 실패 세부 정보를 확인합니다. CodeDeploy 배포에 대한 세부 정보 페이지로 리디렉션됩니다. 이 경우 실패는 첫 번째 인스턴스 그룹이 모든 EC2 인스턴스에 배포되어 두 번째 배포 그룹에 대한 인스턴스가 없어서 발생합니다.

    참고

    이 경우의 실패는 의도된 것으로 파이프라인 단계에 실패가 있는 경우 어떻게 되는지를 설명하기 위한 것입니다.

(선택 사항) 6단계: 의 스테이지 간 전환 비활성화 및 활성화 CodePipeline

파이프라인의 단계 간 전환을 활성화하거나 비활성화할 수 있습니다. 단계 간 전환을 비활성화하면 단계 간 전환을 수동으로 제어할 수 있습니다. 예를 들어 파이프라인의 처음 두 단계를 실행할 수 있지만 프로덕션에 배포할 준비가 될 때까지 또는 해당 단계의 문제나 오류를 해결하는 동안 세 번째 단계로의 전환을 비활성화할 수 있습니다.

CodePipeline 파이프라인의 스테이지 간 전환을 비활성화 및 활성화하려면
  1. CodePipeline 콘솔을 열고 파이프라인 MyFirstPipeline 목록에서 를 선택합니다.

  2. 파이프라인의 세부 정보 페이지에서 이전 섹션(프로덕션)에서 추가한 두 번째 단계(배포)와 세 번째 단계 사이의 전환 비활성화 버튼을 선택합니다.

  3. 전환 비활성화에서 전환을 비활성화하는 사유를 입력한 후 비활성화를 선택합니다.

    단계 사이에 있는 화살표가 아이콘을 표시하고 색상이 변경되며 전환 활성화 버튼이 표시됩니다.

    '실패 문제를 해결하는 동안 전환 비활성화'로 전환을 비활성화한 입력한 이유를 보여주는 이미지
  4. 샘플을 S3 버킷에 다시 업로드합니다. 버킷에 버전이 지정되어 있는 경우, 이 변경 사항으로 인해 파이프라인이 시작됩니다.

  5. 파이프라인의 세부 정보 페이지로 돌아간 다음 단계의 상태를 확인합니다. 파이프라인 보기가 변경되어 처음 두 단계의 진행 상황 및 성공이 표시되지만, 세 번째 단계에는 변경된 내용이 없습니다. 이 프로세스에는 몇 분이 걸릴 수 있습니다.

  6. 두 단계 사이에서 전환 활성화 버튼을 선택하여 전환을 활성화합니다. [Enable transition] 대화 상자에서 [Enable]을 선택합니다. 몇 분 후에 단계가 실행되기 시작하고 파이프라인의 처음 두 단계를 통해 이미 실행된 아티팩트를 처리하려고 시도합니다.

    참고

    이 세 번째 단계를 성공시키려면 전환을 활성화하기 전에 CodePipelineProductionFleet 배포 그룹을 편집하고 애플리케이션이 배포되는 다른 EC2 인스턴스 세트를 지정합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 배포 그룹 설정 변경을 참조하십시오. EC2 인스턴스를 더 많이 생성하면 추가 비용이 발생할 수 있습니다.

7단계: 리소스 정리

이 자습서에서 생성한 리소스 중 일부를 자습서: 4단계 파이프라인 생성에 사용할 수 있습니다. 예를 들어 CodeDeploy 애플리케이션 및 배포를 재사용할 수 있습니다. 클라우드에서 완전히 관리되는 빌드 서비스 CodeBuild인 와 같은 공급자를 사용하여 빌드 작업을 구성할 수 있습니다. Jenkins 등의 빌드 서버나 시스템과 함께 공급자를 사용하는 빌드 작업을 구성할 수도 있습니다.

하지만 이 자습서와 다른 자습서를 완료한 후에는 사용한 파이프라인과 리소스를 삭제해야 이 리소스를 계속 사용할 경우 부과되는 요금을 피할 수 있습니다. 먼저 파이프라인을 삭제한 다음 CodeDeploy 애플리케이션과 관련 Amazon EC2 인스턴스를 삭제하고 마지막으로 S3 버킷을 삭제합니다.

이 자습서에서 사용한 리소스를 정리하려면
  1. CodePipeline 리소스를 정리하려면 의 파이프라인 삭제의 AWS CodePipeline지침을 따르세요.

  2. CodeDeploy 리소스를 정리하려면 리소스 정리(콘솔)의 지침을 따릅니다.

  3. S3 버킷을 삭제하려면 버킷 삭제 또는 비우기의 지침을 따릅니다. 더 많은 파이프라인을 생성하려는 경우, 파이프라인의 아티팩트를 저장하기 위해 생성한 S3 버킷을 삭제합니다. 이 버킷에 대한 자세한 내용은 CodePipeline 개념 단원을 참조하십시오.