AWS CloudFormation 구성 속성 참조 - AWS CloudFormation

AWS CloudFormation 구성 속성 참조

CodePipeline 파이프라인을 구축하는 경우 AWS CloudFormation을 공급자로 사용해 파이프라인에 Deploy 작업을 추가합니다. 그런 다음 파이프라인에서 호출하는 AWS CloudFormation 작업과 해당 작업의 설정을 지정해야 합니다. 이 주제에서는 AWS CloudFormation 구성 속성에 대해 설명합니다. 속성을 지정하기 위해 CodePipeline 콘솔을 사용하거나 AWS CLI, CodePipeline API 또는 AWS CloudFormation 템플릿에 사용할 JSON 객체를 생성할 수 있습니다.

구성 속성(콘솔)

CodePipeline 콘솔은 구성 속성을 보여주고 선택한 작업 모드를 기반으로 필요한 속성을 나타냅니다.

참고

파이프라인을 생성하는 경우 스택 생성 또는 업데이트 또는 변경 사항 세트 생성 또는 교체 작업 모드를 지정할 수 있습니다. 고급 섹션의 속성은 파이프라인을 편집하는 경우에만 사용할 수 있습니다.

작업 모드

연결된 스테이지를 처리할 때 CodePipeline에서 호출하는 AWS CloudFormation 작업입니다. 다음 작업 모드 중 하나를 선택합니다.

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

  • 스택 생성 또는 업데이트는 지정된 스택이 없는 경우 스택을 생성합니다. 스택이 있는 경우 AWS CloudFormation에서는 스택을 업데이트합니다. 이 작업을 사용하여 기존 스택을 업데이트합니다. CodePipeline은 스택을 대체하지 않습니다.

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

  • 변경 사항 세트 실행은 변경 세트를 실행합니다.

  • 불량 스택 교체는 지정된 스택이 없는 경우 스택을 생성합니다. 스택이 존재하는데 실패 상태이면(ROLLBACK_COMPLETE, ROLLBACK_FAILED, CREATE_FAILED, DELETE_FAILED 또는 UPDATE_ROLLBACK_FAILED로 보고됨) AWS CloudFormation에서는 해당 스택을 삭제한 다음 새로 생성합니다. 스택이 실패 상태가 아니면 AWS CloudFormation에서는 스택을 업데이트합니다. 이 작업을 사용하면 실패한 스택을 복구하거나 문제를 해결하지 않고 실패한 스택을 대체합니다. 이 모드는 일반적으로 테스트를 위해 선택합니다.

스택 이름

기존 스택 또는 생성할 스택과 연결된 이름입니다. 이름은 스택을 생성하는 AWS 리전에서 고유해야 합니다.

참고

스택 이름에는 영숫자(대소문자 구분)와 하이픈만 사용할 수 있습니다. 영문자로 시작해야 하고 128자 이하여야 합니다.

변경 세트 이름

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

템플릿

AWS CloudFormation 템플릿 파일의 위치로, ArtifactName::TemplateFileName 형식을 따릅니다.

템플릿 구성

템플릿 구성 파일의 위치로, ArtifactName::TemplateConfigurationFileName 형식을 따릅니다. 템플릿 구성 파일에는 템플릿 파라미터 값, 스택 정책, 태그가 포함될 수 있습니다. 이 파일에 민감한 정보(예: 암호)를 포함하면 해당 파일에 대한 액세스를 제한합니다. 자세한 내용은 AWS CloudFormation 아티팩트 단원을 참조하십시오.

기능

특정 리소스가 포함된 스택의 경우 AWS CloudFormation에서 리소스를 생성 또는 업데이트할 수 있음을 나타내는 명시적으로 승인입니다. 예를 들어 스택 템플릿에 AWS Identity and Access Management(IAM) 리소스가 포함되어 있는 경우 CAPABILITY_IAM을 지정해야 합니다. 자세한 내용은 CreateStack API 작업 요청 파라미터를 참조하세요.

스택 템플릿에 IAM 리소스가 포함되어 있는 경우 이 속성을 지정해야 합니다.

여러 기능을 지정할 수 있습니다.

역할 이름

지정된 스택의 리소스에 대해 작동 중인 경우 AWS CloudFormation에서 수임하는 IAM 서비스 역할의 이름입니다.

출력 파일 이름

고급 섹션에서는 CodePipeline이 지정된 작업을 수행한 후 출력 아티팩트에 추가하는 출력 파일(예: CreateStackOutput.json)을 지정할 수 있습니다. 출력 아티팩트에는 AWS CloudFormation 템플릿의 Outputs 섹션의 내용으로 구성된 JSON 파일이 들어 있습니다.

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

파라미터 재정의

파라미터는 템플릿에서 정의되며, 이를 통해 스택을 생성하거나 업데이트 할 때 사용자 지정 값을 입력할 수 있습니다. 템플릿 구성 파일의 템플릿 파라미터 값을 재정의하는 JSON 객체를 지정할 수 있습니다. 스택 템플릿에는 모든 파라미터 이름이 존재해야 합니다. 자세한 내용은 Defining a parameter in a template를 참조하세요.

참고

ParameterOverrides 속성에 저장할 수 있는 JSON 객체의 최대 크기 제한은 1킬로바이트입니다.

템플릿 구성 파일을 사용하여 대부분의 파라미터 값을 지정하는 것이 좋습니다. 파라미터 재정의를 사용하여 동적 파라미터 값만 지정합니다. 동적 파라미터는 파이프라인을 실행할 때까지 알 수 없습니다.

다음 예에서는 파라미터 재정의 기능을 사용하여 ParameterName 파라미터의 값을 정의합니다. 이 기능은 CodePipeline 입력 아티팩트에서 값을 검색합니다. 파라미터 재정의 기능에 대한 자세한 내용은 CodePipeline 파이프라인에서 파라미터 재정의 함수 사용 단원을 참조하세요.

{ "ParameterName" : { "Fn::GetParam" : ["ArtifactName", "config-file-name.json", "ParamName"]} }

구성 속성(JSON 객체)

단계 작업의 공급자로 CloudFormation을 지정하는 경우 Configuration 속성 내에서 다음 속성을 정의합니다. AWS CLI, CodePipeline API 또는 AWS CloudFormation 템플릿에 JSON 객체를 사용합니다. 예제는 연습: 테스트 및 프로덕션 스택용 파이프라인 빌드AWS CloudFormation 구성 속성 참조 단원을 참조하세요.

ActionMode

연결된 스테이지를 처리할 때 CodePipeline에서 호출하는 AWS CloudFormation 작업입니다. 다음 작업 모드 중 하나만 지정합니다.

  • CHANGE_SET_EXECUTE: 변경 세트를 실행합니다.

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

  • CREATE_UPDATE: 지정된 스택이 존재하지 않는 경우 스택을 생성합니다. 스택이 있는 경우 AWS CloudFormation에서는 스택을 업데이트합니다. 이 작업을 사용하여 기존 스택을 업데이트합니다. CodePipeline은 스택을 대체하지 않습니다.

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

  • REPLACE_ON_FAILURE: 지정된 스택이 존재하지 않는 경우 스택을 생성합니다. 스택이 존재하는데 실패 상태이면(ROLLBACK_COMPLETE, ROLLBACK_FAILED, CREATE_FAILED, DELETE_FAILED 또는 UPDATE_ROLLBACK_FAILED로 보고됨) AWS CloudFormation에서는 스택을 삭제한 다음 새 스택을 생성합니다. 스택이 실패 상태가 아니면 AWS CloudFormation에서는 스택을 업데이트합니다. 이 작업을 사용하면 실패한 스택을 복구하거나 문제를 해결하지 않고 실패한 스택을 자동으로 대체합니다. 이 모드는 일반적으로 테스트를 위해 선택합니다.

이 속성은 필수입니다.

Capabilities

특정 리소스가 포함된 스택의 경우 AWS CloudFormation에서 리소스를 생성 또는 업데이트할 수 있음을 나타내는 명시적으로 승인입니다. 예를 들어 스택 템플릿에 AWS Identity and Access Management(IAM) 리소스가 포함되어 있는 경우 CAPABILITY_IAM을 지정해야 합니다. 자세한 내용은 CreateStack API 작업 요청 파라미터를 참조하세요.

이 속성은 조건부입니다. 스택 템플릿에 IAM 리소스가 포함되어 있는 경우 이 속성을 지정해야 합니다.

여러 기능을 지정할 수 있습니다. 다음 예제에서는 템플릿에 CAPABILITY_IAMCAPABILITY_AUTO_EXPAND 속성을 추가합니다.

YAML
configuration: ActionMode: CHANGE_SET_REPLACE Capabilities: CAPABILITY_IAM,CAPABILITY_AUTO_EXPAND ChangeSetName: pipeline-changeset RoleArn: CloudFormation_Role_ARN StackName: my-pipeline-stack TemplateConfiguration: 'my-pipeline-stack::template-configuration.json' TemplatePath: 'my-pipeline-stack::template-export.yml'
JSON
"configuration": { "ActionMode": "CHANGE_SET_REPLACE", "Capabilities": "CAPABILITY_IAM,CAPABILITY_AUTO_EXPAND", "ChangeSetName": "pipeline-changeset", "RoleArn": "CloudFormation_Role_ARN", "StackName": "my-pipeline-stack", "TemplateConfiguration": "my-pipeline-stack::template-configuration.json", "TemplatePath": "my-pipeline-stack::template-export.yml" }
ChangeSetName

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

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

OutputFileName

출력 파일의 이름(예: CreateStackOutput.json)입니다. CodePipeline에서는 지정된 작업을 수행한 후 파일을 출력 아티팩트에 추가합니다. 출력 아티팩트에는 AWS CloudFormation 템플릿의 Outputs 섹션의 내용으로 구성된 JSON 파일이 들어 있습니다.

이 속성은 선택 사항입니다. 이름을 지정하지 않으면 CodePipeline에서는 출력 아티팩트를 생성하지 않습니다.

ParameterOverrides

파라미터는 템플릿에서 정의되며, 이를 통해 스택을 생성하거나 업데이트 할 때 사용자 지정 값을 입력할 수 있습니다. 템플릿 구성 파일의 템플릿 파라미터 값을 재정의하는 JSON 객체를 지정할 수 있습니다. 스택 템플릿에는 모든 파라미터 이름이 존재해야 합니다. 자세한 내용은 Defining a parameter in a template를 참조하세요.

다음 예제는 InstanceTypeKeyName 파라미터 재정의를 템플릿에 추가합니다.

YAML
configuration: ActionMode: CHANGE_SET_REPLACE Capabilities: CAPABILITY_NAMED_IAM ChangeSetName: pipeline-changeset ParameterOverrides: '{"InstanceType": "t2.small","KeyName": "my-keypair"}' RoleArn: CloudFormation_Role_ARN StackName: my-pipeline-stack TemplateConfiguration: 'my-pipeline-stack::template-configuration.json' TemplatePath: 'my-pipeline-stack::template-export.yml'
JSON
"configuration": { "ActionMode": "CHANGE_SET_REPLACE", "Capabilities": "CAPABILITY_NAMED_IAM", "ChangeSetName": "pipeline-changeset", "ParameterOverrides": "{\"InstanceType\": \"t2.small\",\"KeyName\": \"my-keypair\"}", "RoleArn": "CloudFormation_Role_ARN", "StackName": "my-pipeline-stack", "TemplateConfiguration": "my-pipeline-stack::template-configuration.json", "TemplatePath": "my-pipeline-stack::template-export.yml" }
참고

ParameterOverrides 속성에 저장할 수 있는 JSON 객체의 최대 크기는 1KB입니다.

템플릿 구성 파일을 사용하여 대부분의 파라미터 값을 지정하는 것이 좋습니다. 파라미터 재정의를 사용하여 동적 파라미터 값만 지정합니다. 동적 파라미터 값은 파이프라인을 실행할 때까지 알 수 없습니다.

다음 예에서는 파라미터 재정의 기능을 사용하여 ParameterName 파라미터의 값을 정의합니다. 이 기능은 CodePipeline 입력 아티팩트에서 값을 검색합니다. 파라미터 재정의 기능에 대한 자세한 내용은 CodePipeline 파이프라인에서 파라미터 재정의 함수 사용 단원을 참조하세요.

{ "ParameterName" : { "Fn::GetParam" : ["ArtifactName", "config-file-name.json", "ParamName"]} }

이 속성은 선택 사항입니다.

RoleArn

스택의 리소스에 대해 작동 중인 경우 AWS CloudFormation이 수임하는 IAM 서비스 역할의 Amazon 리소스 이름(ARN)입니다.

CREATE_UPDATE, REPLACE_ON_FAILURE, DELETE_ONLYCHANGE_SET_REPLACE 작업 모드의 경우 이 속성은 필수입니다. 변경 세트를 실행할 때 RoleArn이 적용되지 않습니다. 변경 세트를 생성하기 위해 CodePipeline을 사용하지 않는 경우 변경 세트 또는 스택에 연결된 역할이 있는지 확인해야 합니다.

StackName

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

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

TemplateConfiguration

TemplateConfiguration은 템플릿 구성 파일입니다. 이 작업의 입력 아티팩트에 파일을 포함합니다. 템플릿 구성 파일 이름은 다음 형식을 따릅니다.

Artifactname::TemplateConfigurationFileName

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

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

템플릿 구성 파일에는 템플릿 파라미터 값과 스택 정책을 포함할 수 있습니다. 이 파일에 민감한 정보(예: 암호)를 포함하면 해당 파일에 대한 액세스를 제한합니다. 예제 템플릿 구성 파일은 AWS CloudFormation 아티팩트 단원을 참조하십시오.

이 속성은 선택 사항입니다.

TemplatePath

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

Artifactname::TemplateFileName

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

"TemplatePath": "SourceArtifact::template.yaml"

작업 모드 CREATE_UPDATE, REPLACE_ON_FAILURECHANGE_SET_REPLACE의 경우 이 속성은 필수입니다. 기타 모든 작업 모드의 경우 이 속성은 무시됩니다.

다음 사항도 참조하세요.

이러한 파라미터를 이용할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.

  • CodePipeline의 AWS CloudFormation 작업 파라미터에 대한 자세한 내용을 알아보려면 AWS CodePipeline 사용 설명서AWS CloudFormation 작업 구성 참조를 참조하세요.

  • Owner 필드 또는 configuration 필드와 같은 작업 공급자별 예제 템플릿 값은 AWS CodePipeline 사용 설명서의 Action structure reference에서 확인하세요.

  • YAML 또는 JSON 형식의 예제 파이프라인 스택 템플릿을 다운로드하려면 AWS CodePipeline 사용 설명서AWS CloudFormation이 포함된 파이프라인 생성에서 자습서를 참조하세요.

  • 템플릿 예제 구성 파일은 AWS CloudFormation 아티팩트를 참조하세요.