AWS CloudFormation 배포 작업 참조 - AWS CodePipeline

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

AWS CloudFormation 배포 작업 참조

AWS CloudFormation 스택에서 작업을 실행합니다. 스택이란 하나의 단위로 관리할 수 있는 AWS 리소스 모음입니다. 스택의 리소스는 스택의 AWS CloudFormation 템플릿으로 정의합니다. 변경 세트는 원래 스택을 변경하지 않고 볼 수 있는 비교를 만듭니다. 스택 및 변경 세트에서 수행할 수 있는 AWS CloudFormation 작업의 유형에 대한 자세한 내용은 ActionMode 파라미터를 참조하십시오.

CodePipeline은 스택 작업이 실패한 AWS CloudFormation 작업에 대한 오류 메시지를 생성하기 위해 AWS CloudFormation DescribeStackEvents API를 호출합니다. 작업 IAM 역할에 해당 API에 대한 액세스 권한이 있는 경우 첫 번째 실패 리소스에 대한 세부 정보가 CodePipeline 오류 메시지에 포함됩니다. 그렇지 않으면 역할 정책에 적절한 권한이 없는 경우 CodePipeline은 API 액세스를 무시하고 대신 일반 오류 메시지를 표시합니다. 이렇게 하려면 파이프라인의 서비스 역할이나 다른 IAM 역할에 cloudformation:DescribeStackEvents 권한을 추가해야 합니다.

리소스 세부 정보가 파이프라인 오류 메시지에 표시되지 않도록 하려면 cloudformation:DescribeStackEvents 권한을 제거하여 작업 IAM 역할에 대한 이 권한을 취소할 수 있습니다.

작업 유형

  • 범주: Deploy

  • 소유자: AWS

  • 공급자: CloudFormation

  • 버전: 1

구성 파라미터

ActionMode

필수 여부: 예

ActionMode는 AWS CloudFormation이 스택 또는 변경 세트에서 수행하는 작업의 이름입니다. 사용할 수 있는 작업 모드는 다음과 같습니다.

  • CHANGE_SET_EXECUTE는 지정된 리소스 업데이트 세트를 기반으로 하는 리소스 스택에 대한 변경 세트를 실행합니다. 이 작업을 사용하면 AWS CloudFormation에서 스택 변경을 시작합니다.

  • CHANGE_SET_REPLACE: 변경 세트가 존재하지 않는 경우 스택 이름 및 제출하는 템플릿을 기반으로 변경 세트를 생성합니다. 변경 세트가 존재하는 경우 AWS CloudFormation에서는 해당 변경 세트를 삭제한 다음 새로 생성합니다.

  • CREATE_UPDATE는 스택이 없는 경우 스택을 생성합니다. 스택이 있는 경우 AWS CloudFormation에서는 스택을 업데이트합니다. 이 작업을 사용하여 기존 스택을 업데이트합니다. REPLACE_ON_FAILURE과 달리 스택이 있으며 실패 상태인 경우 CodePipeline은 스택을 삭제하고 교체하지 않습니다.

  • DELETE_ONLY: 스택을 삭제합니다. 존재하지 않는 스택을 지정하면 이 작업이 스택을 삭제하지 않고 성공적으로 완료됩니다.

  • REPLACE_ON_FAILURE는 스택이 없는 경우 스택을 생성합니다. 스택이 있으며 실패 상태인 경우 AWS CloudFormation은 스택을 삭제한 다음 새 스택을 생성합니다. 스택이 실패 상태가 아니면 AWS CloudFormation에서는 스택을 업데이트합니다.

    AWS CloudFormation에 다음 상태 유형 중 하나가 표시되면 스택이 실패 상태가 됩니다.

    • ROLLBACK_FAILED

    • CREATE_FAILED

    • DELETE_FAILED

    • UPDATE_ROLLBACK_FAILED

    이 작업을 사용하면 실패한 스택을 복구하거나 문제를 해결하지 않고 실패한 스택을 자동으로 대체합니다.

    중요

    REPLACE_ON_FAILURE는 스택을 삭제할 수도 있으므로 테스트용으로만 사용하는 것이 좋습니다.

StackName

필수 여부: 예

StackName은 기존 스택 또는 생성하려는 스택의 이름입니다.

기능

필수 항목 여부: 조건부

Capabilities 사용은 템플릿이 일부 리소스를 자체적으로 생성 및 업데이트할 수 있으며, 이러한 기능은 템플릿의 리소스 유형에 따라 결정됨을 승인합니다.

이 속성은 스택 템플릿에 IAM 리소스가 있거나 매크로가 포함된 템플릿에서 직접 스택을 만들 경우 필수 항목입니다. 이러한 방식으로 AWS CloudFormation 작업이 성공적으로 작동하도록 하려면 다음 기능 중 하나를 통해 작업을 해당 방식으로 수행하려고 함을 명시적으로 승인해야 합니다.

  • CAPABILITY_IAM

  • CAPABILITY_NAMED_IAM

  • CAPABILITY_AUTO_EXPAND

기능 사이에 쉼표(공백 아님)를 사용하여 둘 이상의 기능을 지정할 수 있습니다. 작업 선언의 예제는 CAPABILITY_IAM 및 CAPABILITY_AUTO_EXPAND 속성이 모두 있는 항목을 보여줍니다.

Capabilities에 대한 자세한 내용은 AWS CloudFormation API 참조UpdateStack에 있는 속성을 참조하세요.

ChangeSetName

필수 항목 여부: 조건부

ChangeSetName은 지정된 스택에 대해 생성하려는 새 변경 세트 또는 기존 변경 세트의 이름입니다.

이 속성은 CHANGE_SET_REPLACE 및 CHANGE_SET_EXECUTE 작업 모드의 경우 필수 항목입니다. 기타 모든 작업 모드의 경우 이 속성은 무시됩니다.

RoleArn

필수 항목 여부: 조건부

RoleArn은 지정된 스택의 리소스에 대해 작업을 수행할 때 AWS CloudFormation이 맡는 IAM 서비스 역할의 ARN입니다. 변경 세트를 실행할 때는 RoleArn이 적용되지 않습니다. 변경 세트를 생성하기 위해 CodePipeline을 사용하지 않는 경우 변경 세트 또는 스택에 연결된 역할이 있는지 확인해야 합니다.

참고

이 역할은 작업 선언 RoleArn에 구성된 대로 실행 중인 작업의 역할과 동일한 계정에 있어야 합니다.

이 속성은 다음 작업 모드의 경우 필수 항목입니다.

  • CREATE_UPDATE

  • REPLACE_ON_FAILURE

  • DELETE_ONLY

  • CHANGE_SET_REPLACE

참고

AWS CloudFormation은 템플릿에 대한 S3 서명 URL이 제공되므로 이 RoleArn은 아티팩트 버킷에 액세스할 수 있는 권한이 필요하지 않습니다. 하지만 서명된 URL을 생성하려면 작업 RoleArn에 아티팩트 버킷에 대한 액세스 권한이 필요합니다.

TemplatePath

필수 항목 여부: 조건부

TemplatePath는 AWS CloudFormation 템플릿 파일을 나타냅니다. 이 작업의 입력 아티팩트에 파일을 포함합니다. 파일 이름은 다음과 같은 형식을 따릅니다.

Artifactname::TemplateFileName

Artifactname은 CodePipeline에 표시될 때 입력 아티팩트 이름입니다. 예를 들어 아티팩트 이름이 SourceArtifact이며 파일 이름이 template-export.json인 소스 단계는 다음 예제에 표시된 대로 TemplatePath 이름을 생성합니다.

"TemplatePath": "SourceArtifact::template-export.json"

이 속성은 다음 작업 모드의 경우 필수 항목입니다.

  • CREATE_UPDATE

  • REPLACE_ON_FAILURE

  • CHANGE_SET_REPLACE

기타 모든 작업 모드의 경우 이 속성은 무시됩니다.

참고

최소 길이가 1바이트이고 최대 길이가 1MB인 템플릿 본문이 포함된 AWS CloudFormation 템플릿 파일. CodePipeline의 AWS CloudFormation 배포 작업에서는 최대 입력 아티팩트 크기가 항상 256MB입니다. 자세한 내용은 in AWS CodePipeline 할당량AWS CloudFormation 제한 단원을 참조하십시오.

OutputFileName

필수 항목 여부: 아니요

OutputFileName을 사용하여 CreateStackOutput.json과 같은 출력 파일 이름을 지정합니다. CodePipeline은 이 이름을 이 작업의 파이프라인 출력 아티팩트에 추가합니다. JSON 파일에는 AWS CloudFormation 스택에 있는 Outputs 섹션의 콘텐츠가 포함됩니다.

이름을 지정하지 않으면 CodePipeline에서는 출력 파일 또는 아티팩트를 생성하지 않습니다.

ParameterOverrides

필수 항목 여부: 아니요

파라미터는 스택 템플릿에 정의되며, 이를 통해 스택 생성 또는 업데이트 시 값을 제공할 수 있습니다. JSON 객체를 사용하여 템플릿에서 파라미터 값을 설정할 수 있습니다. 이러한 값은 템플릿 구성 파일에 설정된 값을 재정의합니다. 파라미터 재정의 사용에 대한 자세한 내용은 구성 속성(JSON 객체)을 참조하십시오.

대부분의 파라미터 값에 템플릿 구성 파일을 사용하는 것이 좋습니다. 파라미터를 사용하면 파이프라인이 실행될 때까지 알 수 없는 값만 재정의합니다. 자세한 내용은 AWS CloudFormation 사용 설명서CodePipeline 파이프라인에서 파라미터 재정의 함수 사용을 참조하세요.

참고

스택 템플릿에는 모든 파라미터 이름이 존재해야 합니다.

TemplateConfiguration

필수 항목 여부: 아니요

TemplateConfiguration은 템플릿 구성 파일입니다. 이 작업의 입력 아티팩트에 파일을 포함합니다. 여기에는 템플릿 파라미터 값과 스택 정책이 포함될 수 있습니다. 템플릿 구성 파일 형식에 대한 자세한 내용은 AWS CloudFormation 아티팩트를 참조하세요.

템플릿 구성 파일 이름은 다음 형식을 따릅니다.

Artifactname::TemplateConfigurationFileName

Artifactname은 CodePipeline에 표시될 때 입력 아티팩트 이름입니다. 예를 들어, 아티팩트 이름이 SourceArtifact이며 파일 이름이 test-configuration.json인 소스 단계는 다음 예제에 표시된 대로 TemplateConfiguration 이름을 생성합니다.

"TemplateConfiguration": "SourceArtifact::test-configuration.json"

입력 아티팩트

  • 아티팩트 수: 0 to 10

  • 설명: 선택적으로 AWS CloudFormation 작업은 다음의 용도로 아티팩트를 입력으로 수락합니다.

    • 실행할 스택 템플릿 파일을 제공하기 위해. TemplatePath 파라미터를 참조하십시오.

    • 사용할 템플릿 구성 파일을 제공하기 위해. TemplateConfiguration 파라미터를 참조하십시오. 템플릿 구성 파일 형식에 대한 자세한 내용은 AWS CloudFormation 아티팩트를 참조하세요.

    • AWS CloudFormation 스택의 일부로 배포할 Lambda 함수에 대한 아티팩트를 제공하기 위해

출력 아티팩트

  • 아티팩트 수: 0 to 1

  • 설명: OutputFileName 파라미터를 지정하면 이 작업에 의해 지정된 이름의 JSON 파일이 포함되어 있는 출력 아티팩트가 생성됩니다. JSON 파일에는 AWS CloudFormation 스택에 있는 출력 섹션의 콘텐츠가 포함됩니다.

    AWS CloudFormation 작업에 대해 생성할 수 있는 출력 섹션에 대한 자세한 내용은 출력을 참조하십시오.

출력 변수

이 작업을 구성하면 파이프라인에서 다운스트림 작업의 작업 구성에서 참조할 수 있는 변수가 생성됩니다. 이러한 변수를 다운스트림 작업 구성에서 사용할 수 있도록 네임스페이스를 사용하여 작업을 구성합니다.

AWS CloudFormation 작업의 경우 스택 템플릿의 Outputs 섹션에 지정된 값에서 변수가 생성됩니다. 출력을 생성하는 유일한 CloudFormation 작업 모드는 스택 생성, 스택 업데이트 및 변경 세트 실행과 같이 스택을 생성하거나 업데이트하는 모드입니다. 변수를 생성하는 해당 작업 모드는 다음과 같습니다.

  • CHANGE_SET_EXECUTE

  • CHANGE_SET_REPLACE

  • CREATE_UPDATE

  • REPLACE_ON_FAILURE

자세한 내용은 변수 참조 단원을 참조하십시오. CloudFormation 출력 변수를 사용하는 파이프라인에서 CloudFormation 배포 작업이 적용된 파이프라인을 생성하는 방법을 보여주는 자습서는 자습서: AWS CloudFormation 배포 작업의 변수를 사용하는 파이프라인 생성 단원을 참조하십시오.

작업 선언

YAML
Name: ExecuteChangeSet ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormation Version: '1' RunOrder: 2 Configuration: ActionMode: CHANGE_SET_EXECUTE Capabilities: CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND ChangeSetName: pipeline-changeset ParameterOverrides: '{"ProjectId": "my-project","CodeDeployRole": "CodeDeploy_Role_ARN"}' RoleArn: CloudFormation_Role_ARN StackName: my-project--lambda TemplateConfiguration: 'my-project--BuildArtifact::template-configuration.json' TemplatePath: 'my-project--BuildArtifact::template-export.yml' OutputArtifacts: [] InputArtifacts: - Name: my-project-BuildArtifact
JSON
{ "Name": "ExecuteChangeSet", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CloudFormation", "Version": "1" }, "RunOrder": 2, "Configuration": { "ActionMode": "CHANGE_SET_EXECUTE", "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", "ChangeSetName": "pipeline-changeset", "ParameterOverrides": "{\"ProjectId\": \"my-project\",\"CodeDeployRole\": \"CodeDeploy_Role_ARN\"}", "RoleArn": "CloudFormation_Role_ARN", "StackName": "my-project--lambda", "TemplateConfiguration": "my-project--BuildArtifact::template-configuration.json", "TemplatePath": "my-project--BuildArtifact::template-export.yml" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "my-project-BuildArtifact" } ] },

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.

  • 구성 속성 참조 - AWS CloudFormation 사용 설명서의 이 참조 장에는 이러한 CodePipeline 파라미터에 대한 추가 설명과 예제가 나와 있습니다.

  • AWS CloudFormation API 참조 - AWS CloudFormation API 레퍼런스CreateStack 파라미터는 AWS CloudFormation 템플릿의 스택 파라미터를 설명합니다.