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

에 대한 Capabilities 자세한 내용은 UpdateStack AWS CloudFormationAPI참조의 속성을 참조하십시오.

ChangeSetName

필수 항목 여부: 조건부

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

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

RoleArn

필수 항목 여부: 조건부

RoleArn는 지정된 ARN 스택의 AWS CloudFormation 리소스에서 작동할 때 위임되는 IAM 서비스 역할입니다. RoleArn변경 세트를 실행할 때는 적용되지 않습니다. 변경 세트를 만드는 CodePipeline 데 사용하지 않는 경우 변경 세트 또는 스택에 관련 역할이 있는지 확인하십시오.

참고

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

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

  • CREATE_UPDATE

  • REPLACE_ON_ FAILURE

  • DELETE_ONLY

  • CHANGE_SET_REPLACE

참고

AWS CloudFormation 템플릿에 S3 서명이 URL 제공되므로 아티팩트 버킷에 액세스할 수 있는 권한이 필요하지 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 작업에 대한 파이프라인 출력 CodePipeline 아티팩트에 추가되는 출력 파일 이름 (예:) 을 지정하는 데 사용합니다. CreateStackOutput.json JSON파일에는 AWS CloudFormation 스택의 Outputs 섹션 내용이 들어 있습니다.

이름을 지정하지 않으면 출력 파일이나 아티팩트가 CodePipeline 생성되지 않습니다.

ParameterOverrides

필수 여부: 아니요

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

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

참고

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

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 아티팩트를 참조하세요.

    • 스택의 일부로 배포할 Lambda 함수에 아티팩트를 제공하기 위함입니다. AWS CloudFormation

출력 아티팩트

  • 아티팩트 수: 0 to 1

  • 설명: OutputFileName 파라미터가 지정된 경우 이 작업에 의해 생성된 출력 아티팩트에는 지정된 이름의 JSON 파일이 포함됩니다. 이 JSON 파일에는 AWS CloudFormation 스택의 Outputs 섹션 내용이 들어 있습니다.

    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" } ] },

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