AWS CloudFormation 작업 참조 배포 - AWS CodePipeline

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

AWS CloudFormation 작업 참조 배포

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

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

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

작업 유형

  • 범주: 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 속성이 모두 있는 항목을 작업 선언 보여줍니다.

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

ChangeSetName

필수 항목 여부: 조건부

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

이 속성은 CHANGE__SETREPLACE 및 CHANGE_SET_ 작업 모드에 필요합니다EXECUTE. 기타 모든 작업 모드의 경우 이 속성은 무시됩니다.

RoleArn

필수 항목 여부: 조건부

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

참고

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

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

  • CREATE_UPDATE

  • REPLACE_ON_FAILURE

  • DELETE_ONLY

  • CHANGE_SET_REPLACE

참고

AWS CloudFormation 에는 템플릿URL에 S3-signed가 부여되므로 아티팩트 버킷에 액세스할 수 있는 권한이 필요하지 RoleArn 않습니다. 그러나 서명된 를 생성하려면 아티팩트 버킷에 액세스할 수 있는 권한이 RoleArn 필요합니다URL.

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

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

참고

AWS CloudFormation 템플릿 본문이 포함된 템플릿 파일의 최소 길이는 1바이트이고 최대 길이는 1MB입니다. 의 AWS CloudFormation 배포 작업의 경우 CodePipeline최대 입력 아티팩트 크기는 항상 256MB입니다. 자세한 내용은 의 할당량 AWS CodePipelineAWS 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 스택 파라미터를 설명합니다.