

# CloudFormation 구성 속성 참조
<a name="continuous-delivery-codepipeline-action-reference"></a>

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

**Topics**
+ [구성 속성(콘솔)](#continuous-delivery-codepipeline-action-reference-console)
+ [구성 속성(JSON 객체)](#continuous-delivery-codepipeline-action-reference-json)
+ [다음 사항도 참조하세요.](#continuous-delivery-codepipeline-action-reference-see-also)

## 구성 속성(콘솔)
<a name="continuous-delivery-codepipeline-action-reference-console"></a>

CodePipeline [콘솔](https://console.aws.amazon.com/codepipeline/)은 구성 속성을 보여주고 선택한 작업 모드를 기반으로 필요한 속성을 나타냅니다.

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

**작업 모드**  
연결된 스테이지를 처리할 때 CodePipeline에서 호출하는 CloudFormation 작업입니다. 다음 작업 모드 중 하나를 선택합니다.  
+ **변경 사항 세트 생성 또는 교체**는 변경 세트가 존재하지 않는 경우 스택 이름 및 제출하는 템플릿을 기반으로 변경 세트를 생성합니다. 변경 세트가 존재하는 경우 CloudFormation에서는 해당 변경 세트를 삭제한 다음 새로 생성합니다.
+ **스택 생성 또는 업데이트**는 지정된 스택이 없는 경우 스택을 생성합니다. 스택이 있는 경우 CloudFormation에서는 스택을 업데이트합니다. 이 작업을 사용하여 기존 스택을 업데이트합니다. CodePipeline은 스택을 대체하지 않습니다.
+ **스택 삭제**는 스택을 삭제합니다. 존재하지 않는 스택을 지정하면 이 작업이 스택을 삭제하지 않고 성공적으로 완료됩니다.
+ **변경 사항 세트 실행**은 변경 세트를 실행합니다.
+ **불량 스택 교체**는 지정된 스택이 없는 경우 스택을 생성합니다. 스택이 존재하는데 실패 상태이면(`ROLLBACK_COMPLETE`, `ROLLBACK_FAILED`, `CREATE_FAILED`, `DELETE_FAILED` 또는 `UPDATE_ROLLBACK_FAILED`로 보고됨) CloudFormation에서는 해당 스택을 삭제한 다음 새로 생성합니다. 스택이 실패 상태가 아니면 CloudFormation에서는 스택을 업데이트합니다. 이 작업을 사용하면 실패한 스택을 복구하거나 문제를 해결하지 않고 실패한 스택을 대체합니다. 이 모드는 일반적으로 테스트를 위해 선택합니다.

**스택 이름**  
기존 스택 또는 생성할 스택과 연결된 이름입니다. 이름은 스택을 생성하는 AWS 리전에서 고유해야 합니다.  
스택 이름에는 영숫자(대소문자 구분)와 하이픈만 사용할 수 있습니다. 영문자로 시작해야 하고 128자 이하여야 합니다.

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

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

**템플릿 구성**  
템플릿 구성 파일의 위치로, `{{ArtifactName}}::{{TemplateConfigurationFileName}}` 형식을 따릅니다. 템플릿 구성 파일에는 템플릿 파라미터 값, 스택 정책, 태그가 포함될 수 있습니다. 이 파일에 민감한 정보(예: 암호)를 포함하면 해당 파일에 대한 액세스를 제한합니다. 자세한 내용은 [CloudFormation 아티팩트](continuous-delivery-codepipeline-cfn-artifacts.md) 섹션을 참조하세요.

**기능**  
특정 리소스가 포함된 스택의 경우 CloudFormation에서 리소스를 생성 또는 업데이트할 수 있음을 나타내는 명시적으로 승인입니다. 예를 들어 스택 템플릿에 AWS Identity and Access Management(IAM) 리소스가 포함되어 있는 경우 `CAPABILITY_IAM`을 지정해야 합니다. 자세한 내용은 [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html) API 작업 요청 파라미터를 참조하세요.  
스택 템플릿에 IAM 리소스가 포함되어 있는 경우 이 속성을 지정해야 합니다.  
여러 기능을 지정할 수 있습니다.

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

**출력 파일 이름**  
**고급** 섹션에서는 CodePipeline이 지정된 작업을 수행한 후 [출력 아티팩트](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-artifacts)에 추가하는 출력 파일(예: `CreateStackOutput.json`)을 지정할 수 있습니다. 출력 아티팩트에는 CloudFormation 템플릿의 `Outputs` 섹션의 내용으로 구성된 JSON 파일이 들어 있습니다.  
이름을 지정하지 않으면 CodePipeline에서는 출력 아티팩트를 생성하지 않습니다.

**파라미터 재정의**  
파라미터는 템플릿에서 정의되며, 이를 통해 스택을 생성하거나 업데이트 할 때 사용자 지정 값을 입력할 수 있습니다. 템플릿 구성 파일의 템플릿 파라미터 값을 재정의하는 JSON 객체를 지정할 수 있습니다. 스택 템플릿에는 모든 파라미터 이름이 존재해야 합니다. 자세한 내용은 [CloudFormation 템플릿 Parameters 구문](parameters-section-structure.md) 섹션을 참조하세요.  
`ParameterOverrides` 속성에 저장할 수 있는 JSON 객체의 최대 크기 제한은 1킬로바이트입니다.
템플릿 구성 파일을 사용하여 대부분의 파라미터 값을 지정하는 것이 좋습니다. 파라미터 재정의를 사용하여 동적 파라미터 값만 지정합니다. 동적 파라미터는 파이프라인을 실행할 때까지 알 수 없습니다.  
다음 예에서는 파라미터 재정의 기능을 사용하여 `ParameterName` 파라미터의 값을 정의합니다. 이 기능은 CodePipeline 입력 아티팩트에서 값을 검색합니다. 파라미터 재정의 기능에 대한 자세한 내용은 [CodePipeline 파이프라인에서 파라미터 재정의 함수 사용](continuous-delivery-codepipeline-parameter-override-functions.md) 단원을 참조하세요.  

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

## 구성 속성(JSON 객체)
<a name="continuous-delivery-codepipeline-action-reference-json"></a>

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

`ActionMode`  
연결된 스테이지를 처리할 때 CodePipeline에서 호출하는 CloudFormation 작업입니다. 다음 작업 모드 중 하나만 지정합니다.  
+ `CHANGE_SET_EXECUTE`: 변경 세트를 실행합니다.
+ `CHANGE_SET_REPLACE`: 변경 세트가 존재하지 않는 경우 스택 이름 및 제출하는 템플릿을 기반으로 변경 세트를 생성합니다. 변경 세트가 존재하는 경우 CloudFormation에서는 해당 변경 세트를 삭제한 다음 새로 생성합니다.
+ `CREATE_UPDATE`: 지정된 스택이 존재하지 않는 경우 스택을 생성합니다. 스택이 있는 경우 CloudFormation에서는 스택을 업데이트합니다. 이 작업을 사용하여 기존 스택을 업데이트합니다. CodePipeline은 스택을 대체하지 않습니다.
+ `DELETE_ONLY`: 스택을 삭제합니다. 존재하지 않는 스택을 지정하면 이 작업이 스택을 삭제하지 않고 성공적으로 완료됩니다.
+ `REPLACE_ON_FAILURE`: 지정된 스택이 존재하지 않는 경우 스택을 생성합니다. 스택이 존재하는데 실패 상태이면(`ROLLBACK_COMPLETE`, `ROLLBACK_FAILED`, `CREATE_FAILED`, `DELETE_FAILED` 또는 `UPDATE_ROLLBACK_FAILED`로 보고됨) CloudFormation에서는 스택을 삭제한 다음 새 스택을 생성합니다. 스택이 실패 상태가 아니면 CloudFormation에서는 스택을 업데이트합니다. 이 작업을 사용하면 실패한 스택을 복구하거나 문제를 해결하지 않고 실패한 스택을 자동으로 대체합니다. 이 모드는 일반적으로 테스트를 위해 선택합니다.
이 속성은 필수입니다.

`Capabilities`  
특정 리소스가 포함된 스택의 경우 CloudFormation에서 리소스를 생성 또는 업데이트할 수 있음을 나타내는 명시적으로 승인입니다. 예를 들어 스택 템플릿에 AWS Identity and Access Management(IAM) 리소스가 포함되어 있는 경우 `CAPABILITY_IAM`을 지정해야 합니다. 자세한 내용은 [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html) API 작업 요청 파라미터를 참조하세요.  
이 속성은 조건부입니다. 스택 템플릿에 IAM 리소스가 포함되어 있는 경우 이 속성을 지정해야 합니다.  
여러 기능을 지정할 수 있습니다. 다음 예제에서는 템플릿에 `CAPABILITY_IAM` 및 `CAPABILITY_AUTO_EXPAND` 속성을 추가합니다.  

```
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'
```

```
 "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_REPLACE` 및 `CHANGE_SET_EXECUTE`의 경우 이 속성은 필수입니다. 기타 모든 작업 모드의 경우 이 속성은 무시됩니다.

`OutputFileName`  
출력 파일의 이름(예: `CreateStackOutput.json`)입니다. CodePipeline에서는 지정된 작업을 수행한 후 파일을 [출력 아티팩트](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-artifacts)에 추가합니다. 출력 아티팩트에는 CloudFormation 템플릿의 `Outputs` 섹션의 내용으로 구성된 JSON 파일이 들어 있습니다.  
이 속성은 선택 사항입니다. 이름을 지정하지 않으면 CodePipeline에서는 출력 아티팩트를 생성하지 않습니다.

`ParameterOverrides`  
파라미터는 템플릿에서 정의되며, 이를 통해 스택을 생성하거나 업데이트 할 때 사용자 지정 값을 입력할 수 있습니다. 템플릿 구성 파일의 템플릿 파라미터 값을 재정의하는 JSON 객체를 지정할 수 있습니다. 스택 템플릿에는 모든 파라미터 이름이 존재해야 합니다. 자세한 내용은 [CloudFormation 템플릿 Parameters 구문](parameters-section-structure.md) 섹션을 참조하세요.  
다음 예제는 `InstanceType` 및 `KeyName` 파라미터 재정의를 템플릿에 추가합니다.  

```
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'
```

```
"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 파이프라인에서 파라미터 재정의 함수 사용](continuous-delivery-codepipeline-parameter-override-functions.md) 단원을 참조하세요.  

```
{
  "ParameterName" : { "Fn::GetParam" : ["ArtifactName", "config-file-name.json", "ParamName"]}
}
```
이 속성은 선택 사항입니다.

`RoleArn`  
스택의 리소스에 대해 작동 중인 경우 CloudFormation이 수임하는 IAM 서비스 역할의 Amazon 리소스 이름(ARN)입니다.  
`CREATE_UPDATE`, `REPLACE_ON_FAILURE`, `DELETE_ONLY` 및 `CHANGE_SET_REPLACE` 작업 모드의 경우 이 속성은 필수입니다. 변경 세트를 실행할 때 `RoleArn`이 적용되지 않습니다. 변경 세트를 생성하기 위해 CodePipeline을 사용하지 않는 경우 변경 세트 또는 스택에 연결된 역할이 있는지 확인해야 합니다.

`StackName`  
기존 스택 또는 생성하려는 스택의 이름입니다.  
모든 작업 모드의 경우 이 속성은 필수입니다.

`TemplateConfiguration`  
`TemplateConfiguration`은 템플릿 구성 파일입니다. 이 작업의 입력 아티팩트에 파일을 포함합니다. 템플릿 구성 파일 이름은 다음 형식을 따릅니다.  
`{{Artifactname}}::{{TemplateConfigurationFileName}}`  
`Artifactname`은 CodePipeline에 표시될 때 입력 아티팩트 이름입니다. 예를 들어, 아티팩트 이름이 `SourceArtifact`이며 파일 이름이 `test-configuration.json`인 소스 단계는 다음 예제에 표시된 대로 `TemplateConfiguration` 이름을 생성합니다.  

```
"TemplateConfiguration": "SourceArtifact::test-configuration.json"
```
템플릿 구성 파일에는 템플릿 파라미터 값과 스택 정책을 포함할 수 있습니다. 이 파일에 민감한 정보(예: 암호)를 포함하면 해당 파일에 대한 액세스를 제한합니다. 예제 템플릿 구성 파일은 [CloudFormation 아티팩트](continuous-delivery-codepipeline-cfn-artifacts.md) 단원을 참조하십시오.  
이 속성은 선택 사항입니다.

`TemplatePath`  
`TemplatePath`는 CloudFormation 템플릿 파일을 나타냅니다. 이 작업의 입력 아티팩트에 파일을 포함합니다. 파일 이름은 다음과 같은 형식을 따릅니다.  
`{{Artifactname}}::{{TemplateFileName}}`  
`Artifactname`은 CodePipeline에 표시될 때 입력 아티팩트 이름입니다. 예를 들어 아티팩트 이름이 `SourceArtifact`이며 파일 이름이 `template.yaml`인 소스 단계는 다음 예제에 표시된 대로 `TemplatePath` 이름을 생성합니다.  

```
"TemplatePath": "SourceArtifact::template.yaml"
```
작업 모드 `CREATE_UPDATE`, `REPLACE_ON_FAILURE` 및 `CHANGE_SET_REPLACE`의 경우 이 속성은 필수입니다. 기타 모든 작업 모드의 경우 이 속성은 무시됩니다.

## 다음 사항도 참조하세요.
<a name="continuous-delivery-codepipeline-action-reference-see-also"></a>

이러한 파라미터를 이용할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ CodePipeline의 CloudFormation 작업 파라미터에 대한 자세한 내용은 *AWS CodePipeline 사용 설명서*의 [CloudFormation deploy action configuration reference](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-CloudFormation.html)를 참조하세요.
+ `Owner` 필드 또는 `configuration` 필드와 같은 작업 공급자별 예제 템플릿 값은 **AWS CodePipeline 사용 설명서의 [Action structure reference](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference.html)에서 확인하세요.
+ YAML 또는 JSON 형식의 예제 파이프라인 스택 템플릿을 다운로드하려면 *AWS CodePipeline 사용 설명서*의 [Tutorial: Create a pipeline with CloudFormation](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-cloudformation.html)을 참조하세요.