자습서: AWS CloudFormation 배포 작업의 변수를 사용하는 파이프라인 생성 - AWS CodePipeline

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

자습서: AWS CloudFormation 배포 작업의 변수를 사용하는 파이프라인 생성

이 자습서에서는 AWS CodePipeline 콘솔을 사용하여 배포 작업이 적용된 파이프라인을 생성합니다. 파이프라인이 실행되면 템플릿은 스택을 생성하고 outputs 파일도 생성합니다. 스택 템플릿에 의해 생성된 출력은 CodePipeline의 AWS CloudFormation 작업에 의해 생성된 변수입니다.

템플릿에서 스택을 생성하는 작업에서 변수 네임스페이스를 지정합니다. 그런 다음 outputs 파일에 의해 생성된 변수는 후속 작업에서 사용할 수 있습니다. 이 예제에서는 AWS CloudFormation 작업에 의해 생성된 StackName 변수를 기반으로 변경 세트를 생성합니다. 수동 승인 후 변경 세트를 실행한 다음 StackName 변수를 기반으로 스택을 삭제하는 스택 삭제 작업을 생성합니다.

사전 조건: AWS CloudFormation 서비스 역할 및 CodeCommit 리포지토리 생성

다음 항목이 있어야 합니다.

  • CodeCommit 리포지토리. 자습서: 간단한 파이프라인 생성(CodeCommit 리포지토리)에 생성한 AWS CodeCommit 리포지토리를 사용할 수 있습니다.

  • 이 예제에서는 템플릿에서 Amazon DocumentDB 스택을 생성합니다. Amazon DocumentDB에 대한 다음 권한을 가진 AWS CloudFormation 서비스 역할을 생성하려면 AWS Identity and Access Management(IAM)을 사용해야 합니다.

    "rds:DescribeDBClusters", "rds:CreateDBCluster", "rds:DeleteDBCluster", "rds:CreateDBInstance"

1단계: 샘플 AWS CloudFormation 템플릿 다운로드, 편집 및 업로드

샘플 AWS CloudFormation 템플릿 파일을 다운로드하여 CodeCommit 리포지토리에 업로드합니다.

  1. 해당 리전의 샘플 템플릿 페이지로 이동합니다. 예를 들어, us-west-2의 페이지는 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/sample-templates-services-us-west-2.html에 있습니다. Amazon DocumentDB에서 Amazon DocumentDB 클러스터클러스터용 템플릿을 다운로드하십시오. 파일 이름은 documentdb_full_stack.yaml입니다.

  2. documentdb_full_stack.yaml 파일의 압축을 풀고 텍스트 편집기에서 엽니다. 다음과 같이 변경합니다.

    1. 이 예제에서는 템플릿의 Parameters 섹션에 다음 Purpose: 파라미터를 추가합니다.

      Purpose: Type: String Default: testing AllowedValues: - testing - production Description: The purpose of this instance.
    2. 이 예제에서는 템플릿의 Outputs: 섹션에 다음 StackName 출력을 추가합니다.

      StackName: Value: !Ref AWS::StackName
  3. 템플릿 파일을 AWS CodeCommit 리포지토리에 업로드합니다. 압축을 풀고 편집한 템플릿 파일을 리포지토리의 루트 디렉터리에 업로드해야 합니다.

    CodeCommit 콘솔을 사용하여 파일을 업로드하려면 다음과 같이 합니다.

    1. CodeCommit 콘솔을 열고 리포지토리 목록에서 해당 리포지토리를 선택합니다.

    2. 파일 추가를 선택한 후 파일 업로드를 선택합니다.

    3. 파일 선택을 선택한 다음 파일을 찾습니다. 사용자 이름과 이메일 주소를 입력하여 변경 사항을 커밋합니다. 변경 사항 커밋을 선택합니다.

    파일은 리포지토리의 루트 수준에서 다음과 같아야 합니다.

    documentdb_full_stack.yaml

2단계: 파이프라인 생성

이 단원에서는 다음 작업을 통해 파이프라인을 생성합니다.

  • 소스 아티팩트가 템플릿 파일인 CodeCommit 작업이 있는 소스 단계입니다.

  • AWS CloudFormation 배포 작업이 적용된 배포 단계.

마법사가 생성한 소스 및 배포 단계의 각 작업에는 각각 변수 네임스페이스 SourceVariablesDeployVariables가 할당됩니다. 작업에 네임스페이스가 할당되어 있으므로 이 예제에 구성된 변수를 다운스트림 작업에 사용할 수 있습니다. 자세한 내용은 Variables 섹션을 참조하세요.

마법사를 사용하여 파이프라인을 생성하려면
  1. AWS Management Console에 로그인하여 http://console.aws.amazon.com/codesuite/codepipeline/home에서 CodePipeline 콘솔을 여세요.

  2. Welcome(시작) 페이지, 시작하기 페이지 또는 Pipelines(파이프라인) 페이지에서 파이프라인 생성을 선택합니다.

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

  4. 파이프라인 유형에서 이 자습서의 목적에 맞는 V1을 선택합니다. V2를 선택할 수도 있지만 파이프라인 유형별 특성과 가격이 다르다는 점에 유의하십시오. 자세한 내용은 파이프라인 유형 섹션을 참조하세요.

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

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

    • Existing service role(기존 서비스 역할)을 선택합니다. 역할 이름의 목록에서 서비스 역할을 선택합니다.

  6. 아티팩트 스토어에서 다음과 같이 합니다.

    1. 파이프라인에 대해 선택한 리전의 파이프라인에 기본값으로 지정된 Amazon S3 아티팩트 버킷과 같은 기본 아티팩트 스토어를 사용하려면 기본 위치를 선택합니다.

    2. 파이프라인과 동일한 리전에 Amazon S3 아티팩트 버킷과 같이 이미 아티팩트 스토어가 있는 경우 사용자 지정 위치을 선택합니다.

    참고

    이는 소스 코드에 대한 소스 버킷이 아닙니다. 이 파이프라인은 아티팩트 스토어입니다. S3 버킷과 같은 개별 아티팩트 스토어는 각 파이프라인에 필요합니다. 파이프라인을 생성하거나 편집할 때 파이프라인 리전에 아티팩트 버킷이 있어야 하며 작업을 실행하는 AWS 리전마다 아티팩트 버킷 하나가 있어야 합니다.

    자세한 정보는 입력 및 출력 아티팩트CodePipeline 파이프라인 구조 참조 섹션을 참조하십시오.

    다음을 선택합니다.

  7. 2단계: 소스 단계 추가:

    1. 소스 공급자에서 AWS CodeCommit을 선택합니다.

    2. 리포지토리 이름에서 1단계: CodeCommit 리포지토리 생성에서 생성한 CodeCommit 리포지토리의 이름을 선택합니다.

    3. [Branch name]에서 가장 마지막 코드 업데이트가 포함된 브랜치의 이름을 선택합니다.

    리포지토리 이름과 브랜치를 선택하면 이 파이프라인에 대해 생성될 Amazon CloudWatch Events 규칙이 표시됩니다.

    다음을 선택합니다.

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

    다음을 선택합니다.

  9. 4단계: 배포 단계 추가에서 다음과 같이 합니다.

    1. 작업 이름에서 배포를 선택합니다. 배포 공급자에서 CloudFormation을 선택합니다.

    2. 작업 모드에서 스택 생성 또는 업데이트를 선택합니다.

    3. 스택 이름에 스택의 이름을 입력합니다. 템플릿이 생성하는 스택의 이름입니다.

    4. 출력 파일 이름에 출력 파일의 이름(예: outputs)을 입력합니다. 스택이 생성된 후 작업에 의해 생성되는 파일의 이름입니다.

    5. 고급을 확장합니다. 매개변수 재정의에서 템플릿 재정의를 키-값 쌍으로 입력합니다. 예를 들어 이 템플릿에는 다음과 같은 재정의가 필요합니다.

      { "DBClusterName": "MyDBCluster", "DBInstanceName": "MyDBInstance", "MasterUser": "UserName", "MasterPassword": "Password", "DBInstanceClass": "db.r4.large", "Purpose": "testing"}

      재정의를 입력하지 않으면 템플릿에서 기본값으로 스택을 생성합니다.

    6. 다음을 선택합니다.

    7. 파이프라인 생성을 선택합니다. 파이프라인이 실행되도록 허용합니다. 2단계 파이프라인이 완료되어 단계를 추가할 준비가 되었습니다.

3단계: AWS CloudFormation 배포 작업을 추가하여 변경 세트 생성

AWS CloudFormation에서 수동 승인 작업 전에 변경 세트를 생성하도록 파이프라인에서 다음 작업을 생성합니다.

  1. https://console.aws.amazon.com/codepipeline/에서 CodePipeline 콘솔을 엽니다.

    파이프라인에서 파이프라인을 선택하고 보기를 선택합니다. 다이어그램은 파이프라인 소스 및 배포 단계를 보여줍니다.

  2. 파이프라인을 편집하거나 편집 모드에서 파이프라인을 계속 표시합니다.

  3. 배포 단계를 편집하려면 선택합니다.

  4. 이전 작업에서 생성된 스택에 대한 변경 세트를 생성하는 배포 작업을 추가합니다. 단계의 기존 작업 뒤에 이 작업을 추가합니다.

    1. 작업 이름Change_Set를 입력합니다. 작업 공급자에서 AWS CloudFormation을 선택합니다.

    2. 입력 아티팩트에서 SourceArtifact를 선택합니다.

    3. 작업 모드에서 변경 사항 세트 생성 또는 교체를 선택합니다.

    4. 스택 이름에 다음과 같이 변수 구문을 입력합니다. 변경 세트가 생성되는 스택의 이름입니다. 여기서 기본 네임스페이스 DeployVariables는 작업에 할당됩니다.

      #{DeployVariables.StackName}
    5. 변경 세트 이름에서 변경 세트의 이름을 입력합니다.

      my-changeset
    6. 파라미터 재정의에서 Purpose 파라미터를 testing에서 production으로 변경합니다.

      { "DBClusterName": "MyDBCluster", "DBInstanceName": "MyDBInstance", "MasterUser": "UserName", "MasterPassword": "Password", "DBInstanceClass": "db.r4.large", "Purpose": "production"}
    7. 완료를 선택하여 작업을 저장합니다.

4단계: 수동 승인 작업 추가

파이프라인에서 수동 승인 작업을 생성합니다.

  1. 파이프라인을 편집하거나 편집 모드에서 파이프라인을 계속 표시합니다.

  2. 배포 단계를 편집하려면 선택합니다.

  3. 변경 세트를 생성하는 배포 작업 다음에 수동 승인 작업을 추가합니다. 이 작업을 사용하면 파이프라인이 변경 세트를 실행하기 전에 AWS CloudFormation에서 생성된 리소스 변경 세트를 확인할 수 있습니다.

5단계: CloudFormation 배포 작업을 추가하여 변경 세트 실행

AWS CloudFormation에서 수동 승인 작업 후에 변경 세트를 실행하도록 파이프라인에서 다음 작업을 생성합니다.

  1. https://console.aws.amazon.com/codepipeline/에서 CodePipeline 콘솔을 엽니다.

    파이프라인에서 파이프라인을 선택하고 보기를 선택합니다. 다이어그램은 파이프라인 소스 및 배포 단계를 보여줍니다.

  2. 파이프라인을 편집하거나 편집 모드에서 파이프라인을 계속 표시합니다.

  3. 배포 단계를 편집하려면 선택합니다.

  4. 이전 수동 작업에서 승인된 변경 세트를 실행할 배포 작업을 추가합니다.

    1. 작업 이름Execute_Change_Set를 입력합니다. 작업 공급자에서 AWS CloudFormation을 선택합니다.

    2. 입력 아티팩트에서 SourceArtifact를 선택합니다.

    3. 작업 모드에서 변경 세트 실행을 선택합니다.

    4. 스택 이름에 다음과 같이 변수 구문을 입력합니다. 변경 세트가 생성되는 스택의 이름입니다.

      #{DeployVariables.StackName}
    5. 변경 세트 이름에 이전 작업에서 생성한 변경 세트의 이름을 입력합니다.

      my-changeset
    6. 완료를 선택하여 작업을 저장합니다.

    7. 파이프라인 실행을 계속합니다.

6단계: CloudFormation 배포 작업을 추가하여 스택 삭제

AWS CloudFormation에서 출력 파일의 변수에서 스택 이름을 가져와서 스택을 삭제하도록 파이프라인에서 최종 작업을 생성합니다.

  1. https://console.aws.amazon.com/codepipeline/에서 CodePipeline 콘솔을 엽니다.

    파이프라인에서 파이프라인을 선택하고 보기를 선택합니다. 다이어그램은 파이프라인 소스 및 배포 단계를 보여줍니다.

  2. 파이프라인을 편집하도록 선택합니다.

  3. 배포 단계를 편집하려면 선택합니다.

  4. 스택을 삭제할 배포 작업을 추가합니다.

    1. 작업 이름에서 DeleteStack을 선택합니다. 배포 공급자에서 CloudFormation을 선택합니다.

    2. 작업 모드에서 스택 삭제를 선택합니다.

    3. 스택 이름에 다음과 같이 변수 구문을 입력합니다. 작업이 삭제하는 스택의 이름입니다.

    4. 완료를 선택하여 작업을 저장합니다.

    5. 저장을 선택하여 파이프라인을 저장합니다.

    파이프라인은 저장될 때 실행됩니다.