

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

# 작업 구조 참조
<a name="action-reference"></a>

이 단원은 작업 구성에 대한 참조일 뿐입니다. 파이프라인 구조의 개념적 개요는 [CodePipeline 파이프라인 구조 참조](reference-pipeline-structure.md) 단원을 참조하십시오.

CodePipeline의 각 작업 공급자는 파이프라인 구조에서 필수 및 옵션 구성 필드 세트를 사용합니다. 이 단원에는 다음과 같은 작업 공급자별 참조가 나와 있습니다.
+ 파이프라인 구조 작업 블록에 포함된 `ActionType` 필드의 유효한 값(예: `Owner` 및 `Provider`)
+ 파이프라인 구조 작업 섹션에 포함된 `Configuration` 파라미터(필수 및 옵션)에 대한 설명 및 기타 참조 정보
+ 유효한 예제 JSON 및 YAML 작업 필드

이 단원은 추가 작업 공급자를 포함하도록 주기적으로 업데이트됩니다. 참조 정보는 현재 다음과 같은 작업 공급자에 대해 사용할 수 있습니다.

**Topics**
+ [Amazon EC2 작업 참조](action-reference-EC2Deploy.md)
+ [Amazon ECR 소스 작업 참조](action-reference-ECR.md)
+ [`ECRBuildAndPublish` 빌드 작업 참조](action-reference-ECRBuildAndPublish.md)
+ [Amazon ECS 및 CodeDeploy 블루-그린 배포 작업 참조](action-reference-ECSbluegreen.md)
+ [Amazon Elastic Container Service(Amazon ECS) 배포 작업 참조](action-reference-ECS.md)
+ [Amazon Elastic Kubernetes Service `EKS` 배포 작업 참조](action-reference-EKS.md)
+ [AWS Lambda 배포 작업 참조](action-reference-LambdaDeploy.md)
+ [Amazon S3 배포 작업 참조](action-reference-S3Deploy.md)
+ [Amazon S3 소스 작업 참조](action-reference-S3.md)
+ [AWS AppConfig 배포 작업 참조](action-reference-AppConfig.md)
+ [CloudFormation 배포 작업 참조](action-reference-CloudFormation.md)
+ [CloudFormation StackSets](action-reference-StackSets.md)
+ [AWS CodeBuild 빌드 및 테스트 작업 참조](action-reference-CodeBuild.md)
+ [AWS CodePipeline 작업 참조 호출](action-reference-PipelineInvoke.md)
+ [AWS CodeCommit 소스 작업 참조](action-reference-CodeCommit.md)
+ [AWS CodeDeploy 배포 작업 참조](action-reference-CodeDeploy.md)
+ [Bitbucket Cloud, GitHub, GitHub Enterprise Server, GitLab.com 및 GitLab 자체 관리형 작업용 CodeStarSourceConnection](action-reference-CodestarConnectionSource.md)
+ [명령 작업 참조](action-reference-Commands.md)
+ [AWS Device Farm 테스트 작업 참조](action-reference-DeviceFarm.md)
+ [Elastic Beanstalk 배포 작업 참조](action-reference-Beanstalk.md)
+ [Amazon Inspector `InspectorScan` 간접 호출 작업 참조](action-reference-InspectorScan.md)
+ [AWS Lambda 작업 참조 호출](action-reference-Lambda.md)
+ [AWS OpsWorks 배포 작업 참조](action-reference-OpsWorks.md)
+ [AWS Service Catalog배포 작업 참조](action-reference-ServiceCatalog.md)
+ [AWS Step Functions](action-reference-StepFunctions.md)

# Amazon EC2 작업 참조
<a name="action-reference-EC2Deploy"></a>

Amazon EC2 `EC2` 작업을 사용하여 배포 플릿에 애플리케이션 코드를 배포합니다. 배포 플릿은 Amazon EC2 Linux 인스턴스 또는 Linux SSM 관리형 노드로 구성될 수 있습니다. 인스턴스에 SSM 에이전트가 설치되어 있어야 합니다.

**참고**  
이 작업은 Linux 인스턴스 유형만 지원합니다. 지원되는 최대 플릿 크기는 인스턴스 500개입니다.

작업은 지정된 최대값을 기반으로 인스턴스 수를 선택합니다. 이전 인스턴스에서 실패한 인스턴스가 먼저 선택됩니다. 이전에 작업이 실패한 경우와 같이 인스턴스가 이미 동일한 입력 아티팩트의 배포를 수신한 경우 작업은 특정 인스턴스에서 배포를 건너뜁니다.

**참고**  
이 작업은 V2 유형 파이프라인에서만 지원됩니다.

**Topics**
+ [작업 유형](#action-reference-EC2Deploy-type)
+ [구성 파라미터](#action-reference-EC2Deploy-parameters)
+ [입력 아티팩트](#action-reference-EC2Deploy-input)
+ [출력 아티팩트](#action-reference-EC2Deploy-output)
+ [EC2 배포 작업에 대한 서비스 역할 정책 권한](#action-reference-EC2Deploy-permissions-action)
+ [사양 파일 참조 배포](#action-reference-EC2Deploy-spec-reference)
+ [작업 선언](#action-reference-EC2Deploy-example)
+ [배포 사양 예제를 사용한 작업 선언](#action-reference-EC2Deploy-example-spec)
+ [다음 사항도 참조하세요.](#action-reference-EC2Deploy-links)

## 작업 유형
<a name="action-reference-EC2Deploy-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `EC2`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-EC2Deploy-parameters"></a>

**InstanceTagKey**  
필수 항목 여부: 예  
`Name`과 같이 Amazon EC2에서 생성한 인스턴스의 태그 키입니다.

**InstanceTagValue**  
필수 여부: 아니요  
`my-instances`와 같이 Amazon EC2에서 생성한 인스턴스의 태그 값입니다.  
이 값을 지정하지 않으면 **InstanceTagKey**가 있는 모든 인스턴스가 일치하게 됩니다.

**InstanceType**  
필수 항목 여부: 예  
Amazon EC2에서 생성된 인스턴스 또는 SSM 노드의 유형입니다. 유효 값은 `EC2` 및 `SSM_MANAGED_NODE`입니다.  
모든 인스턴스에 SSM 에이전트를 이미 생성, 태그 지정 및 설치했어야 합니다.  
인스턴스를 생성할 때 기존 EC2 인스턴스 역할을 생성하거나 사용합니다. `Access Denied` 오류를 방지하려면 인스턴스 역할에 S3 버킷 권한을 추가하여 인스턴스에 CodePipeline 아티팩트 버킷에 대한 권한을 부여해야 합니다. 파이프라인 리전의 아티팩트 버킷으로 범위가 지정된 `s3:GetObject` 권한으로 기본 역할을 생성하거나 기존 역할을 업데이트합니다.

**TargetDirectory**  
필수: 예(스크립트가 지정된 경우)  
Amazon EC2 인스턴스에서 스크립트를 실행하는 데 사용할 디렉터리입니다.

**DeploySpec**  
필수: 예(배포 사양이 지정된 경우)  
배포 설치 및 수명 주기 이벤트를 구성하는 데 사용할 파일입니다. 배포 사양 필드 설명 및 정보는 [사양 파일 참조 배포](#action-reference-EC2Deploy-spec-reference) 섹션을 참조하세요. 배포 사양 파일이 지정된 작업 구성을 보려면 [배포 사양 예제를 사용한 작업 선언](#action-reference-EC2Deploy-example-spec)의 예제를 참조하세요.

**MaxBatch**  
필수 여부: 아니요  
병렬로 배포할 수 있는 최대 인스턴스 수입니다.

**MaxError**  
필수 여부: 아니요  
배포 중에 허용되는 최대 인스턴스 오류 수입니다.

**TargetGroupNameList**  
필수 여부: 아니요  
배포를 위한 대상 그룹 이름 목록입니다. 대상 그룹을 이미 생성했어야 합니다.  
대상 그룹은 특정 요청을 처리하기 위한 인스턴스 세트를 제공합니다. 대상 그룹을 지정하면 배포 전에 대상 그룹에서 인스턴스가 제거되고 배포 후 대상 그룹에 다시 추가됩니다.

**PreScript**  
필수 여부: 아니요  
작업 배포 단계 전에 실행할 스크립트입니다.

**PostScript**  
필수 항목 여부: 예  
작업 배포 단계 후에 실행할 스크립트입니다.

다음 이미지는 **작업 구성 사용**이 선택된 작업에 대한 **편집** 페이지의 예를 보여줍니다.

![\[EC2Deploy 작업을 사용하여 작업 구성을 지정하는 새 파이프라인의 작업 편집 페이지\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/ec2deploy-action.png)


다음 이미지는 **DeploySpec 파일 사용**이 선택된 작업에 대한 **편집** 페이지의 예를 보여줍니다.

![\[사양 파일을 사용하기 위한 EC2Deploy 작업 옵션이 있는 새 파이프라인의 작업 편집 페이지\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/ec2deploy-action-spec.png)


## 입력 아티팩트
<a name="action-reference-EC2Deploy-input"></a>
+ **아티팩트 수:** `1`
+ **설명:** 배포 중에 스크립트 작업을 지원하기 위해 제공된 파일입니다.

## 출력 아티팩트
<a name="action-reference-EC2Deploy-output"></a>
+ **아티팩트 수:** `0` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

## EC2 배포 작업에 대한 서비스 역할 정책 권한
<a name="action-reference-EC2Deploy-permissions-action"></a>

CodePipeline이 작업을 실행할 때 CodePipeline 서비스 역할에는 최소 권한으로 액세스할 수 있도록 범위가 적절하게 축소된 다음 최소 권한이 필요합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "StatementWithAllResource",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "elasticloadbalancing:DescribeTargetGroupAttributes",
                "elasticloadbalancing:DescribeTargetGroups",
                "elasticloadbalancing:DescribeTargetHealth",
                "ssm:CancelCommand",
                "ssm:DescribeInstanceInformation",
                "ssm:ListCommandInvocations"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "StatementForLogs",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:111122223333:log-group:/aws/codepipeline/{{pipelineName}}:*"
            ]
        },
        {
            "Sid": "StatementForElasticloadbalancing",
            "Effect": "Allow",
            "Action": [
                "elasticloadbalancing:DeregisterTargets",
                "elasticloadbalancing:RegisterTargets"
            ],
            "Resource": [
                "arn:aws:elasticloadbalancing:us-east-1:111122223333:targetgroup/[[targetGroupName]]/*"
            ]
        },
        {
            "Sid": "StatementForSsmOnTaggedInstances",
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/{{tagKey}}": "{{tagValue}}"
                }
            }
        },
        {
            "Sid": "StatementForSsmApprovedDocuments",
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1::document/AWS-RunPowerShellScript",
                "arn:aws:ssm:us-east-1::document/AWS-RunShellScript"
            ]
        }
    ]
}
```

------

### CloudWatch 로그의 파이프라인에 대한 로그 그룹
<a name="action-reference-EC2Deploy-logs"></a>

CodePipeline이 작업을 실행하면 CodePipeline은 다음과 같이 파이프라인 이름을 사용하여 로그 그룹을 생성합니다. 이렇게 하면 파이프라인 이름을 사용하여 리소스를 로깅할 수 있는 권한을 범위 아래로 지정할 수 있습니다.

```
/aws/codepipeline/MyPipelineName
```

로깅에 대한 다음 권한은 서비스 역할에 대한 위 업데이트에 포함됩니다.
+ logs:CreateLogGroup
+ logs:CreateLogStream
+ logs:PutLogEvents

작업 세부 정보 대화 상자를 사용하여 콘솔에서 로그를 보려면 로그를 볼 수 있는 권한을 콘솔 역할에 추가해야 합니다. 자세한 내용은 [콘솔에서 컴퓨팅 로그를 보는 데 필요한 권한](security-iam-permissions-console-logs.md)에서 콘솔 권한 정책 예제를 참조하세요.

### CloudWatch 로그에 대한 서비스 역할 정책 권한
<a name="w2aac56c13c21c11"></a>

CodePipeline이 작업을 실행하면 CodePipeline은 다음과 같이 파이프라인 이름을 사용하여 로그 그룹을 생성합니다. 이렇게 하면 파이프라인 이름을 사용하여 리소스를 로깅할 수 있는 권한을 범위 아래로 지정할 수 있습니다.

```
/aws/codepipeline/MyPipelineName
```

작업 세부 정보 대화 상자를 사용하여 콘솔에서 로그를 보려면 로그를 볼 수 있는 권한을 콘솔 역할에 추가해야 합니다. 자세한 내용은 [콘솔에서 컴퓨팅 로그를 보는 데 필요한 권한](security-iam-permissions-console-logs.md)에서 콘솔 권한 정책 예제를 참조하세요.

## 사양 파일 참조 배포
<a name="action-reference-EC2Deploy-spec-reference"></a>

CodePipeline에서 작업을 실행할 때 사양 파일을 지정하여 인스턴스에 대한 배포를 구성할 수 있습니다. 배포 사양 파일은 설치 대상과 배포 수명 주기 이벤트에 대한 응답으로 실행할 수명 주기 이벤트 후크를 지정합니다. 배포 사양 파일은 항상 YAML 형식입니다. 배포 사양 파일은 다음을 수행하는 데 사용됩니다.
+ 애플리케이션 개정의 소스 파일을 인스턴스의 대상으로 매핑합니다.
+ 배포된 파일에 대한 사용자 지정 권한을 지정합니다.
+ 배포 프로세스의 다양한 단계에서 각 인스턴스에 실행할 스크립트를 지정합니다.

배포 사양 파일은 AppSpec 파일과 함께 CodeDeploy에서 지원하는 특정 배포 구성 파라미터를 지원합니다. 기존 AppSpec 파일을 직접 사용할 수 있으며 지원되지 않는 파라미터는 무시됩니다. CodeDeploy의 AppSpec 파일에 대한 자세한 내용은 *[CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html) 사용 설명서*의 애플리케이션 사양 파일 참조 항목을 참조하세요.

파일 배포 파라미터는 다음과 같이 지정됩니다.
+ `files` - 배포 사양 파일은 배포 파일의 `source:` 및 `destination:`을 지정합니다.
+ `scripts` - 배포에 대해 스크립팅된 이벤트입니다. `BeforeDeploy` 및 `AfterDeploy`라는 두 가지 이벤트가 지원됩니다.
+ `hooks` - 이벤트의 수명 주기 후크입니다. `ApplicationStop`, `BeforeInstall`, `AfterInstall`, `ApplicationStart` 및 `ValidateService` 후크가 지원됩니다.
**참고**  
후크 파라미터는 CodeDeploy와의 AppSpec 호환성에 사용할 수 있으며 버전 0.0(AppSpec 형식)에서만 사용할 수 있습니다. 이 형식의 경우 CodePipeline은 이벤트에 대한 최선의 매핑을 수행합니다.

사양 파일에 올바른 YAML 간격을 사용해야 합니다. 그렇지 않으면 배포 사양 파일의 위치와 공백 수가 올바르지 않은 경우 오류가 발생합니다. 간격 지정에 대한 자세한 내용은 [YAML](http://www.yaml.org/) 사양을 참조하세요.

배포 사양 파일의 예는 다음과 같습니다.

```
version: 0.1
files:
  - source: /index.html
    destination: /var/www/html/
scripts:
  BeforeDeploy:
    - location: scripts/install_dependencies
      timeout: 300
      runas: myuser
  AfterDeploy:
    - location: scripts/start_server
      timeout: 300
      runas: myuser
```

배포 사양 파일이 지정된 작업 구성을 보려면 [배포 사양 예제를 사용한 작업 선언](#action-reference-EC2Deploy-example-spec)의 예제를 참조하세요.

## 작업 선언
<a name="action-reference-EC2Deploy-example"></a>

------
#### [ YAML ]

```
name: DeployEC2
actions:
- name: EC2
  actionTypeId:
    category: Deploy
    owner: AWS
    provider: EC2
    version: '1'
  runOrder: 1
  configuration:
    InstanceTagKey: Name
    InstanceTagValue: my-instances
    InstanceType: EC2
    PostScript: "test/script.sh",
    TargetDirectory: "/home/ec2-user/deploy"
  outputArtifacts: []
  inputArtifacts:
  - name: SourceArtifact
  region: us-east-1
```

------
#### [ JSON ]

```
{
    "name": "DeployEC2",
    "actions": [
        {
            "name": "EC2Deploy",
            "actionTypeId": {
                "category": "Deploy",
                "owner": "AWS",
                "provider": "EC2",
                "version": "1"
            },
            "runOrder": 1,
            "configuration": {
                "InstanceTagKey": "Name",
                "InstanceTagValue": "my-instances",
                "InstanceType": "EC2",
                "PostScript": "test/script.sh",
                "TargetDirectory": "/home/ec2-user/deploy"
            },
            "outputArtifacts": [],
            "inputArtifacts": [
                {
                    "name": "SourceArtifact"
                }
            ],
            "region": "us-east-1"
        }
    ]
},
```

------

## 배포 사양 예제를 사용한 작업 선언
<a name="action-reference-EC2Deploy-example-spec"></a>

------
#### [ YAML ]

```
name: DeployEC2
actions:
- name: EC2
  actionTypeId:
    category: Deploy
    owner: AWS
    provider: EC2
    version: '1'
  runOrder: 1
  configuration:
    DeploySpec: "deployspec.yaml"
    InstanceTagKey: Name
    InstanceTagValue: my-instances
    InstanceType: EC2
  outputArtifacts: []
  inputArtifacts:
  - name: SourceArtifact
  region: us-east-1
```

------
#### [ JSON ]

```
{
    "name": "DeployEC2",
    "actions": [
        {
            "name": "EC2Deploy",
            "actionTypeId": {
                "category": "Deploy",
                "owner": "AWS",
                "provider": "EC2",
                "version": "1"
            },
            "runOrder": 1,
            "configuration": {
                "DeploySpec": "deployspec.yaml",
                "InstanceTagKey": "Name",
                "InstanceTagValue": "my-instances",
                "InstanceType": "EC2"
            },
            "outputArtifacts": [],
            "inputArtifacts": [
                {
                    "name": "SourceArtifact"
                }
            ],
            "region": "us-east-1"
        }
    ]
},
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-EC2Deploy-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+  [자습서: CodePipeline을 사용하여 Amazon EC2 인스턴스에 배포](tutorials-ec2-deploy.md) - 이 자습서에서는 EC2 작업을 사용한 파이프라인 생성과 함께 스크립트 파일을 배포할 EC2 인스턴스 생성을 안내합니다.
+ [오류 메시지와 함께 EC2 배포 작업이 실패함 `No such file`](troubleshooting.md#troubleshooting-ec2-deploy) - 이 주제에서는 EC2 작업에서 찾을 수 없는 파일 오류에 대한 문제 해결에 대해 설명합니다.

# Amazon ECR 소스 작업 참조
<a name="action-reference-ECR"></a>

새 이미지가 Amazon ECR 리포지토리로 푸시될 때 파이프라인을 트리거합니다. 이 작업은 Amazon ECR에 푸시된 이미지의 URI를 참조하는 이미지 정의 파일을 제공합니다. 이 소스 작업은 다른 모든 소스 아티팩트에 대한 소스 위치를 허용하기 위해 CodeCommit 같은 다른 소스 작업과 함께 사용되는 경우가 많습니다. 자세한 내용은 [자습서: Amazon ECR 소스 및 ECS-to-CodeDeploy 배포를 사용하여 파이프라인 생성](tutorials-ecs-ecr-codedeploy.md) 단원을 참조하십시오.

콘솔을 사용하여 파이프라인을 생성 또는 편집하면 CodePipeline에서 리포지토리에서 변경이 발생할 때 파이프라인을 시작하는 EventBridge 규칙이 생성됩니다.

**참고**  
Amazon ECR, Amazon S3 또는 CodeCommit 소스의 경우 입력 변환 항목을 사용하여 소스 재정의를 생성하여 파이프라인 이벤트에 EventBridge의 `revisionValue`를 사용할 수도 있습니다. 여기서 `revisionValue`는 객체 키, 커밋 또는 이미지 ID의 소스 이벤트 변수에서 파생됩니다. 자세한 내용은 [Amazon ECR 소스 작업 및 EventBridge 리소스](create-cwe-ecr-source.md), [이벤트에 대해 활성화된 소스를 사용하여 Amazon S3 소스 작업에 연결](create-S3-source-events.md), 또는 [CodeCommit 소스 작업 및 EventBridge](triggering.md)의 절차에 포함된 입력 변환 항목의 선택적 단계를 참조하세요.

Amazon ECR 작업을 통해 파이프라인을 연결하기 전에 이미 Amazon ECR 리포지토리를 생성하고 이미지를 푸시해야 합니다.

**Topics**
+ [작업 유형](#action-reference-ECR-type)
+ [구성 파라미터](#action-reference-ECR-config)
+ [입력 아티팩트](#action-reference-ECR-input)
+ [출력 아티팩트](#action-reference-ECR-output)
+ [출력 변수](#action-reference-ECR-variables)
+ [서비스 역할 권한: Amazon ECR 작업](#edit-role-ecr)
+ [작업 선언(Amazon ECR 예제)](#action-reference-ECR-example)
+ [다음 사항도 참조하세요.](#action-reference-ECR-links)

## 작업 유형
<a name="action-reference-ECR-type"></a>
+ 범주: `Source`
+ 소유자: `AWS`
+ 공급자: `ECR`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-ECR-config"></a>

**RepositoryName**  
필수 항목 여부: 예  
이미지가 푸시된 Amazon ECR 리포지토리의 이름입니다.

**ImageTag**  
필수 여부: 아니요  
이미지에 사용되는 태그입니다.  
`ImageTag`의 값을 지정하지 않는 경우, 기본값은 `latest`입니다.

## 입력 아티팩트
<a name="action-reference-ECR-input"></a>
+ **아티팩트 수:** `0`
+ **설명:** 이 작업 유형에는 입력 아티팩트가 적용되지 않습니다.

## 출력 아티팩트
<a name="action-reference-ECR-output"></a>
+ **아티팩트 수:** `1` 
+ **설명:** 이 작업은 파이프라인 실행을 트리거한 이미지의 URI를 포함하는 `imageDetail.json` 파일을 포함하는 아티팩트를 생성합니다. `imageDetail.json` 파일에 대한 자세한 내용은 [Amazon ECS 블루/그린 배포 작업을 위한 imageDetail.json 파일](file-reference.md#file-reference-ecs-bluegreen) 단원을 참조하십시오.

## 출력 변수
<a name="action-reference-ECR-variables"></a>

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

자세한 내용은 [변수 참조](reference-variables.md) 단원을 참조하십시오.

**RegistryId**  
리포지토리가 포함된 레지스트리와 연결된 AWS 계정 ID입니다.

**RepositoryName**  
이미지가 푸시된 Amazon ECR 리포지토리의 이름입니다.

**ImageTag**  
이미지에 사용되는 태그입니다.  
소스 개정이 재정의되면 `ImageTag` 출력 변수가 출력되지 않습니다.

**ImageDigest**  
이미지 매니페스트의 `sha256` 다이제스트입니다.

**imageURI**  
이미지의 URI입니다.

## 서비스 역할 권한: Amazon ECR 작업
<a name="edit-role-ecr"></a>

Amazon ECR 지원의 경우 다음을 정책 설명에 추가합니다.

```
{
    "Effect": "Allow",
    "Action": [
        "ecr:DescribeImages"
    ],
    "Resource": "resource_ARN"
},
```

이 작업에 대한 자세한 내용은 [Amazon ECR 소스 작업 참조](#action-reference-ECR) 섹션을 참조하세요.

## 작업 선언(Amazon ECR 예제)
<a name="action-reference-ECR-example"></a>

------
#### [ YAML ]

```
Name: Source
Actions:
  - InputArtifacts: []
    ActionTypeId:
      Version: '1'
      Owner: AWS
      Category: Source
      Provider: ECR
    OutputArtifacts:
      - Name: SourceArtifact
    RunOrder: 1
    Configuration:
      ImageTag: latest
      RepositoryName: my-image-repo

    Name: ImageSource
```

------
#### [ JSON ]

```
{
    "Name": "Source",
    "Actions": [
        {
            "InputArtifacts": [],
            "ActionTypeId": {
                "Version": "1",
                "Owner": "AWS",
                "Category": "Source",
                "Provider": "ECR"
            },
            "OutputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "RunOrder": 1,
            "Configuration": {
                "ImageTag": "latest",
                "RepositoryName": "my-image-repo"
            },
            "Name": "ImageSource"
        }
    ]
},
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-ECR-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [자습서: Amazon ECR 소스 및 ECS-to-CodeDeploy 배포를 사용하여 파이프라인 생성](tutorials-ecs-ecr-codedeploy.md) - 이 자습서에서는 Amazon ECS 인스턴스에 배포하는 CodeCommit 및 Amazon ECR 소스가 있는 파이프라인을 생성할 수 있는 샘플 앱 사양 파일과 샘플 CodeDeploy 애플리케이션 및 배포 그룹을 제공합니다.

# `ECRBuildAndPublish` 빌드 작업 참조
<a name="action-reference-ECRBuildAndPublish"></a>

이 빌드 작업을 사용하면 소스에서 변경 사항이 발생할 때 새 이미지 빌드 및 푸시를 자동화할 수 있습니다. 이 작업은 지정된 Docker 파일 위치를 기반으로 빌드되고 이미지를 푸시합니다. 이 빌드 작업은 Amazon ECR 소스 리포지토리에서 변경이 발생할 때 파이프라인을 트리거하는 CodePipeline의 Amazon ECR 소스 작업과 동일하지 않습니다. 해당 작업에 대한 자세한 내용은 [Amazon ECR 소스 작업 참조](action-reference-ECR.md) 섹션을 참조하세요.

이는 파이프라인을 트리거하는 소스 작업이 아닙니다. 이 작업은 이미지를 빌드하고 Amazon ECR 이미지 리포지토리로 푸시합니다.

파이프라인에 작업을 추가하기 전에 Amazon ECR 리포지토리를 이미 생성하고 GitHub와 같은 소스 코드 리포지토리에 Dockerfile을 추가해야 합니다.

**중요**  
이 작업은 CodePipeline 관리형 CodeBuild 컴퓨팅을 사용하여 빌드 환경에서 명령을 실행합니다. 명령 작업을 실행하면 AWS CodeBuild에서 별도의 요금이 발생합니다.

**참고**  
이 작업은 V2 유형 파이프라인에서만 사용할 수 있습니다.

**Topics**
+ [작업 유형](#action-reference-ECRBuildAndPublish-type)
+ [구성 파라미터](#action-reference-ECRBuildAndPublish-config)
+ [입력 아티팩트](#action-reference-ECRBuildAndPublish-input)
+ [출력 아티팩트](#action-reference-ECRBuildAndPublish-output)
+ [출력 변수](#action-reference-ECRBuildAndPublish-output-variables)
+ [서비스 역할 권한: `ECRBuildAndPublish` 작업](#edit-role-ECRBuildAndPublish)
+ [작업 선언](#action-reference-ECRBuildAndPublish-example)
+ [다음 사항도 참조하세요.](#action-reference-ECRBuildAndPublish-links)

## 작업 유형
<a name="action-reference-ECRBuildAndPublish-type"></a>
+ 범주: `Build`
+ 소유자: `AWS`
+ 공급자: `ECRBuildAndPublish`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-ECRBuildAndPublish-config"></a>

**ECRRepositoryName**  
필수 항목 여부: 예  
이미지가 푸시된 Amazon ECR 리포지토리의 이름입니다.

**DockerFilePath**  
필수 여부: 아니요  
이미지를 빌드하는 데 사용되는 Docker 파일의 위치입니다. 선택적으로 루트 수준이 아닌 경우 대체 Docker 파일 위치를 제공할 수 있습니다.  
`DockerFilePath`의 값을 지정하지 않으면 값이 기본적으로 소스 리포지토리 루트 수준으로 설정됩니다.

**ImageTags**  
필수 여부: 아니요  
이미지에 사용되는 태그입니다. 여러 태그를 쉼표로 구분된 문자열 목록으로 입력할 수 있습니다.  
`ImageTags`의 값을 지정하지 않는 경우, 기본값은 `latest`입니다.

**RegistryType**  
필수 여부: 아니요  
리포지토리가 퍼블릭인지 프라이빗인지 지정합니다. 유효한 값은 `private | public`입니다.  
`RegistryType`의 값을 지정하지 않는 경우, 기본값은 `private`입니다.

## 입력 아티팩트
<a name="action-reference-ECRBuildAndPublish-input"></a>
+ **아티팩트 수:** `1`
+ **설명:** 이미지를 빌드하는 데 필요한 Dockerfile이 포함된 소스 작업에서 생성된 아티팩트입니다.

## 출력 아티팩트
<a name="action-reference-ECRBuildAndPublish-output"></a>
+ **아티팩트 수:** `0` 

## 출력 변수
<a name="action-reference-ECRBuildAndPublish-output-variables"></a>

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

자세한 내용은 [변수 참조](reference-variables.md) 단원을 참조하십시오.

**ECRImageDigestId **  
이미지 매니페스트의 `sha256` 다이제스트입니다.

**ECRRepositoryName **  
이미지가 푸시된 Amazon ECR 리포지토리의 이름입니다.

## 서비스 역할 권한: `ECRBuildAndPublish` 작업
<a name="edit-role-ECRBuildAndPublish"></a>

`ECRBuildAndPublish` 작업 지원의 경우 다음을 정책 설명에 추가합니다.

```
{
    "Statement": [
         {
            "Sid": "ECRRepositoryAllResourcePolicy",
            "Effect": "Allow",
            "Action": [
                "ecr:DescribeRepositories",
                "ecr:GetAuthorizationToken",
                "ecr-public:DescribeRepositories",
                "ecr-public:GetAuthorizationToken"
            ],
        "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
                "ecr:InitiateLayerUpload",
                "ecr:UploadLayerPart",
                "ecr:CompleteLayerUpload",
                "ecr:PutImage",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchCheckLayerAvailability"
            ],
            "Resource": "PrivateECR_Resource_ARN"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr-public:GetAuthorizationToken",
                "ecr-public:DescribeRepositories",
                "ecr-public:InitiateLayerUpload",
                "ecr-public:UploadLayerPart",
                "ecr-public:CompleteLayerUpload",
                "ecr-public:PutImage",
                "ecr-public:BatchCheckLayerAvailability",
                "sts:GetServiceBearerToken"
            ],
            "Resource": "PublicECR_Resource_ARN"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sts:GetServiceBearerToken"
            ],
            "Resource": "*"
        }
    ]
}
```

또한 `Commands` 작업에 아직 추가되지 않은 경우 서비스 역할에 다음 권한을 추가하여 CloudWatch 로그를 확인합니다.

```
{
    "Effect": "Allow",
    "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream", 
        "logs:PutLogEvents"
    ],
    "Resource": "resource_ARN"
},
```

**참고**  
서비스 역할 정책 문의 리소스 기반 권한을 사용하여 파이프라인 리소스 수준으로 권한 범위를 좁힙니다.

이 작업에 대한 자세한 내용은 [`ECRBuildAndPublish` 빌드 작업 참조](#action-reference-ECRBuildAndPublish) 섹션을 참조하세요.

## 작업 선언
<a name="action-reference-ECRBuildAndPublish-example"></a>

------
#### [ YAML ]

```
name: ECRBuild
actionTypeId:
  category: Build
  owner: AWS
  provider: ECRBuildAndPublish
  version: '1'
runOrder: 1
configuration:
  ECRRepositoryName: actions/my-imagerepo
outputArtifacts: []
inputArtifacts:
- name: SourceArtifact
region: us-east-1
namespace: BuildVariables
```

------
#### [ JSON ]

```
{
    "name": "ECRBuild",
    "actionTypeId": {
        "category": "Build",
        "owner": "AWS",
        "provider": "ECRBuildAndPublish",
        "version": "1"
    },
    "runOrder": 1,
    "configuration": {
        "ECRRepositoryName": "actions/my-imagerepo"
    },
    "outputArtifacts": [],
    "inputArtifacts": [
        {
            "name": "SourceArtifact"
        }
    ],
    "region": "us-east-1",
    "namespace": "BuildVariables"
},
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-ECRBuildAndPublish-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [자습서: CodePipeline을 사용하여 Docker 이미지를 빌드하고 Amazon ECR에 푸시(V2 유형)](tutorials-ecr-build-publish.md) - 이 자습서에서는 샘플 Dockerfile과 소스 리포지토리 변경 시 이미지를 ECR에 푸시한 다음 Amazon ECS에 배포하는 파이프라인을 생성하는 지침을 제공합니다.

# Amazon Elastic Container Service(Amazon ECS) 및 CodeDeploy 블루-그린 배포 작업 참조
<a name="action-reference-ECSbluegreen"></a>

블루/그린 배포를 사용하여 컨테이너 애플리케이션을 배포 AWS CodePipeline 하는 파이프라인을에서 구성할 수 있습니다. 블루/그린 배포에서는 트래픽을 다시 라우팅하기 전에 이전 버전과 함께 새 버전의 애플리케이션을 시작하고 새 버전을 테스트할 수 있습니다. 또한 배포 프로세스를 모니터링하고 문제가 발생할 경우 신속하게 롤백할 수 있습니다.

완료된 파이프라인은 이미지 또는 작업 정의 파일의 변경 사항을 감지하고 CodeDeploy를 사용하여 트래픽을 Amazon ECS 클러스터 및 로드 밸런서로 라우팅하고 배포합니다. CodeDeploy는 로드 밸런서에 새 리스너를 생성하여 특수 포트를 통해 새 작업을 대상으로 지정할 수 있습니다. Amazon ECS 작업 정의가 저장되는 CodeCommit 리포지토리와 같은 소스 위치를 사용하도록 파이프라인을 구성할 수도 있습니다.

파이프라인을 생성하기 전에 Amazon ECS 리소스, CodeDeploy 리소스, 로드 밸런서 및 대상 그룹을 이미 생성해야 합니다. 이미지 리포지토리에 이미 이미지에 태그를 지정하여 저장하고 작업 정의와 AppSpec 파일을 파일 리포지토리에 업로드했어야 합니다.

**참고**  
이 주제에서는 CodePipeline인의 Amazon ECS에서 CodeDeploy로의 블루/그린 배포 작업에 대해 설명합니다. CodePipeline에서의 Amazon ECS 표준 배포 작업에 대한 참조 정보는 [Amazon Elastic Container Service(Amazon ECS) 배포 작업 참조](action-reference-ECS.md)을 참조하세요.

**Topics**
+ [작업 유형](#action-reference-ECSbluegreen-type)
+ [구성 파라미터](#action-reference-ECSbluegreen-config)
+ [입력 아티팩트](#action-reference-ECSbluegreen-input)
+ [출력 아티팩트](#action-reference-ECSbluegreen-output)
+ [서비스 역할 권한: `CodeDeployToECS` 작업](#edit-role-codedeploy-ecs)
+ [작업 선언](#action-reference-ECSbluegreen-example)
+ [다음 사항도 참조하세요.](#action-reference-ECSbluegreen-links)

## 작업 유형
<a name="action-reference-ECSbluegreen-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `CodeDeployToECS`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-ECSbluegreen-config"></a>

**ApplicationName**  
필수 항목 여부: 예  
CodeDeploy의 애플리케이션 이름. 파이프라인을 생성하기 전에 CodeDeploy에 애플리케이션이 이미 생성되어 있어야 합니다.

**DeploymentGroupName**  
필수 항목 여부: 예  
CodeDeploy 애플리케이션용으로 생성한 Amazon ECS 작업 세트에 대해 지정된 배포 그룹입니다. 파이프라인을 생성하기 전에 CodeDeploy에 배포 그룹이 이미 생성되어 있어야 합니다.

**TaskDefinitionTemplateArtifact**  
필수 항목 여부: 예  
배포 작업에 작업 정의 파일을 제공하는 입력 아티팩트의 이름입니다. 일반적으로 소스 작업의 출력 아티팩트 이름입니다. 콘솔을 사용하는 경우 소스 작업 출력 아티팩트의 기본 이름은 `SourceArtifact`입니다.

**AppSpecTemplateArtifact**  
필수 항목 여부: 예  
배포 작업에 AppSpec 파일을 제공하는 입력 아티팩트의 이름입니다. 파이프라인이 실행되면 이 값이 업데이트됩니다. 일반적으로 소스 작업의 출력 아티팩트 이름입니다. 콘솔을 사용하는 경우 소스 작업 출력 아티팩트의 기본 이름은 `SourceArtifact`입니다. AppSpec 파일에서 `TaskDefinition`의 경우 [여기](tutorials-ecs-ecr-codedeploy.md#tutorials-ecs-ecr-codedeploy-taskdefinition)에 나온 것처럼 `<TASK_DEFINITION>` 자리표시자 텍스트를 유지할 수 있습니다.

**AppSpecTemplatePath**  
필수 여부: 아니요  
파이프라인의 CodeCommit 리포지토리와 같은 파이프라인 소스 파일 위치에 저장된 AppSpec 파일의 파일 이름입니다. 기본적인 파일 이름은 `appspec.yaml`입니다. AppSpec 파일의 이름이 같고 파일 리포지토리의 루트 수준에 저장되어 있는 경우 파일 이름을 제공할 필요가 없습니다. 경로가 기본 경로가 아닌 경우 경로와 파일 이름을 입력합니다.

**TaskDefinitionTemplatePath**  
필수 여부: 아니요  
파이프라인의 CodeCommit 리포지토리와 같은 파이프라인 파일 소스 위치에 저장된 작업 정의의 파일 이름입니다. 기본적인 파일 이름은 `taskdef.json`입니다. 작업 정의 파일의 이름이 같고 파일 리포지토리의 루트 수준에 저장되어 있는 경우 파일 이름을 제공할 필요가 없습니다. 경로가 기본 경로가 아닌 경우 경로와 파일 이름을 입력합니다.

**Image<Number>ArtifactName**  
필수 여부: 아니요  
배포 작업에 이미지를 제공하는 입력 아티팩트의 이름입니다. 이는 일반적으로 이미지 리포지토리의 출력 아티팩트(예: Amazon ECR 소스 작업의 출력)입니다.  
`<Number>`의 사용 가능한 값은 1\$14입니다.

**Image<Number>ContainerName**  
필수 여부: 아니요  
이미지 리포지토리(예: Amazon ECR 소스 리포지토리)에서 사용할 수 있는 이미지의 이름입니다.  
`<Number>`의 사용 가능한 값은 1\$14입니다.

## 입력 아티팩트
<a name="action-reference-ECSbluegreen-input"></a>
+ **아티팩트 수:** `1 to 5`
+ **설명:** `CodeDeployToECS` 작업은 먼저 소스 파일 리포지토리에서 작업 정의 파일과 AppSpec 파일을 찾은 다음 이미지 리포지토리에서 이미지를 찾은 다음 동적으로 작업 정의의 새 버전을 생성하고 마지막으로 AppSpec 명령을 실행하여 작업 세트와 컨테이너를 클러스터에 배포합니다.

  `CodeDeployToECS` 작업은 이미지 URI를 이미지에 매핑하는 `imageDetail.json` 파일을 찾습니다. Amazon ECR 이미지 리포지토리에 변경을 커밋하면 파이프라인 ECR 소스 작업이 해당 커밋에 대한 `imageDetail.json` 파일을 생성합니다. 작업이 자동화되지 않은 파이프라인용 `imageDetail.json` 파일을 수동으로 추가할 수도 있습니다. `imageDetail.json` 파일에 대한 자세한 내용은 [Amazon ECS 블루/그린 배포 작업을 위한 imageDetail.json 파일](file-reference.md#file-reference-ecs-bluegreen) 단원을 참조하십시오.

  `CodeDeployToECS` 작업을 수행하면 작업 정의의 새 개정이 동적으로 생성됩니다. 이 단계에서 이 작업은 작업 정의 파일의 자리 표시자를 imageDetail.json 파일에서 검색된 이미지 URI로 바꿉니다. 예를 들어 IMAGE1\$1NAME을 Image1ContainerName 파라미터로 설정하는 경우 자리 표시자 <IMAGE1\$1NAME>을 작업 정의 파일의 이미지 필드 값으로 지정해야 합니다.**** 이 경우 CodeDeploytoECS 작업은 Image1ArtifactName으로 지정한 아티팩트의 imageDetail.json에서 검색된 실제 이미지 URI로 자리 표시자 <IMAGE1\$1NAME>을 대체합니다.**

  작업 정의 업데이트의 경우 CodeDeploy `AppSpec.yaml` 파일에 `TaskDefinition`속성이 포함되어 있습니다.

  ```
  TaskDefinition: <TASK_DEFINITION>
  ```

  이 속성은 새 작업 정의가 생성된 후 `CodeDeployToECS` 작업에 의해 업데이트됩니다.

  `TaskDefinition` 필드 값의 경우 자리 표시자 텍스트는 <TASK\$1DEFINITION>이어야 합니다. `CodeDeployToECS` 작업은 이 자리 표시자를 동적으로 생성된 작업 정의의 실제 ARN으로 대체합니다.

## 출력 아티팩트
<a name="action-reference-ECSbluegreen-output"></a>
+ **아티팩트 수:** `0` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

## 서비스 역할 권한: `CodeDeployToECS` 작업
<a name="edit-role-codedeploy-ecs"></a>

`CodeDeployToECS` 작업(블루/그린 배포)의 경우, CodeDeploy를 사용하여 Amazon ECS 블루/그린 배포 작업을 위한 파이프라인을 만드는 데 필요한 최소 권한은 다음과 같습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCodeDeployDeploymentActions",
            "Action": [
                "codedeploy:CreateDeployment",
                "codedeploy:GetDeployment"
            ],
            "Resource": [
                "arn:aws:codedeploy:*:111122223333:deploymentgroup:[[ApplicationName]]/*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "AllowCodeDeployApplicationActions",
            "Action": [
                "codedeploy:GetApplication",
                "codedeploy:GetApplicationRevision",
                "codedeploy:RegisterApplicationRevision"
            ],
            "Resource": [
                "arn:aws:codedeploy:*:111122223333:application:[[ApplicationName]]",
                "arn:aws:codedeploy:*:111122223333:application:[[ApplicationName]]/*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "AllowCodeDeployDeploymentConfigAccess",
            "Action": [
                "codedeploy:GetDeploymentConfig"
            ],
            "Resource": [
                "arn:aws:codedeploy:*:111122223333:deploymentconfig:*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "AllowECSRegisterTaskDefinition",
            "Action": [
                "ecs:RegisterTaskDefinition"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "AllowPassRoleToECS",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::111122223333:role/[[PassRoles]]"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "ecs.amazonaws.com",
                        "ecs-tasks.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

Amazon ECS에서 태그 지정 권한 부여 사용으로 옵트인할 수 있습니다. 옵트인을 통해 다음 권한: `ecs:TagResource`를 부여해야 합니다. 옵트인하는 방법과 권한 필요 여부 및 태그 권한 부여 적용 여부에 대한 자세한 내용은 Amazon Elastic Container Service 개발자 안내서의 [태그 지정 권한 부여 타임라인](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#tag-resources-timeline)을 참조하세요.

또한 작업에 IAM 역할을 사용하려면 `iam:PassRole` 권한을 추가해야 합니다. 자세한 내용은 [Amazon ECS 태스크 실행 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html)과 [태스크에 대한 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)을 참조하세요.

위 예제와 같이 `iam:PassedToService` 조건에 따라 서비스 목록에 `ecs-tasks.amazonaws.com`을 추가할 수도 있습니다.

## 작업 선언
<a name="action-reference-ECSbluegreen-example"></a>

------
#### [ YAML ]

```
Name: Deploy
Actions:
  - Name: Deploy
    ActionTypeId:
      Category: Deploy
      Owner: AWS
      Provider: CodeDeployToECS
      Version: '1'
    RunOrder: 1
    Configuration:
      AppSpecTemplateArtifact: SourceArtifact
      ApplicationName: ecs-cd-application
      DeploymentGroupName: ecs-deployment-group
      Image1ArtifactName: MyImage
      Image1ContainerName: IMAGE1_NAME
      TaskDefinitionTemplatePath: taskdef.json
      AppSpecTemplatePath: appspec.yaml
      TaskDefinitionTemplateArtifact: SourceArtifact
    OutputArtifacts: []
    InputArtifacts:
      - Name: SourceArtifact
      - Name: MyImage
    Region: us-west-2
    Namespace: DeployVariables
```

------
#### [ JSON ]

```
{
    "Name": "Deploy",
    "Actions": [
        {
            "Name": "Deploy",
            "ActionTypeId": {
                "Category": "Deploy",
                "Owner": "AWS",
                "Provider": "CodeDeployToECS",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "AppSpecTemplateArtifact": "SourceArtifact",
                "ApplicationName": "ecs-cd-application",
                "DeploymentGroupName": "ecs-deployment-group",
                "Image1ArtifactName": "MyImage",
                "Image1ContainerName": "IMAGE1_NAME",
                "TaskDefinitionTemplatePath": "taskdef.json",
                "AppSpecTemplatePath": "appspec.yaml",
                "TaskDefinitionTemplateArtifact": "SourceArtifact"
            },
            "OutputArtifacts": [],
            "InputArtifacts": [
                {
                    "Name": "SourceArtifact"
                },
                {
                    "Name": "MyImage"
                }
            ],
            "Region": "us-west-2",
            "Namespace": "DeployVariables"
        }
    ]
}
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-ECSbluegreen-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [자습서: Amazon ECR 소스 및 ECS-to-CodeDeploy 배포를 사용하여 파이프라인 생성](tutorials-ecs-ecr-codedeploy.md) – 이 자습서에서는 블루/그린 배포에 필요한 CodeDeploy 및 Amazon ECS 리소스를 생성하는 방법을 안내합니다. 이 자습서에서는 도커 이미지를 Amazon ECR로 푸시하고 도커 이미지 이름, 컨테이너 이름, Amazon ECS 서비스 이름 및 로드 밸런서 구성을 나열하는 Amazon ECS 작업 정의를 생성하는 방법을 보여줍니다. 그런 다음 자습서에서는 배포를 위한 AppSpec 파일 및 파이프라인을 생성하는 과정을 안내합니다.
**참고**  
이 주제 및 자습서에서는 CodePipeline인의 CodeDeploy/ECS 블루/그린 작업에 대해 설명합니다. CodePipeline의 ECS 표준 작업에 대한 자세한 내용은 [자습서: CodePipeline을 사용한 지속적 배포](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-cd-pipeline.html)를 참조하세요.
+ *AWS CodeDeploy 사용 설명서* - 블루/그린 배포에서 로드 밸런서, 프로덕션 리스너, 대상 그룹 및 Amazon ECS 애플리케이션을 사용하는 방법에 대한 자세한 내용은 [자습서: Amazon ECS 서비스 배포를](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorial-ecs-deployment.html) 참조하세요. *AWS CodeDeploy 사용 설명서*의이 참조 정보는 Amazon ECS 및를 사용한 블루/그린 배포에 대한 개요를 제공합니다 AWS CodeDeploy.
+ *Amazon Elastic Container Service 개발자 안내서* - 도커 이미지 및 컨테이너, ECS 서비스 및 클러스터, ECS 작업 세트 사용에 대한 자세한 내용은 [Amazon ECS란 무엇입니까?](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/)를 참조하세요.

# Amazon Elastic Container Service(Amazon ECS) 배포 작업 참조
<a name="action-reference-ECS"></a>

Amazon ECS 작업을 사용하여 Amazon ECS 서비스 및 작업 세트를 배포할 수 있습니다. Amazon ECS 서비스는 Amazon ECS 클러스터에 배포되는 컨테이너 애플리케이션입니다. Amazon ECS 클러스터는 클라우드에서 컨테이너 애플리케이션을 호스팅하는 인스턴스 모음입니다. 배포에는 Amazon ECS에서 생성한 작업 정의와 CodePipeline이 이미지를 배포하는 데 사용하는 이미지 정의 파일이 필요합니다.

**중요**  
CodePipeline의 Amazon ECS 표준 배포 작업은 Amazon ECS 서비스에서 사용하는 수정 버전을 기반으로 작업 정의의 자체 수정 버전을 생성합니다. Amazon ECS 서비스를 업데이트하지 않고 작업 정의에 대한 새 수정 사항을 생성하면 배포 작업에서 해당 수정 사항을 무시합니다.

파이프라인을 생성하기 전에 이미 Amazon ECS 리소스를 생성하고 이미지에 태그를 지정하여 이미지 리포지토리에 저장한 다음 BuildSpec 파일을 파일 리포지토리에 업로드해야 합니다.

**참고**  
이 참조 항목에서는 CodePipeline의 Amazon ECS 표준 배포 작업에 대해 설명합니다. CodePipeline에서의 CodeDeploy 블루/그린 배포 작업에 대한 Amazon ECS에 대한 참조 정보는 [Amazon Elastic Container Service(Amazon ECS) 및 CodeDeploy 블루-그린 배포 작업 참조](action-reference-ECSbluegreen.md)을 참조하세요.

**Topics**
+ [작업 유형](#action-reference-ECS-type)
+ [구성 파라미터](#action-reference-ECS-config)
+ [입력 아티팩트](#action-reference-ECS-input)
+ [출력 아티팩트](#action-reference-ECS-output)
+ [서비스 역할 권한: Amazon ECS 표준 작업](#edit-role-ecs)
+ [작업 선언](#action-reference-ECS-example)
+ [다음 사항도 참조하세요.](#action-reference-ECS-links)

## 작업 유형
<a name="action-reference-ECS-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `ECS`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-ECS-config"></a>

**ClusterName**  
필수 항목 여부: 예  
Amazon ECS의 Amazon ECS 클러스터.

**ServiceName**  
필수 항목 여부: 예  
Amazon ECS에서 생성한 Amazon ECS 서비스.

**FileName**  
필수 여부: 아니요  
서비스의 컨테이너 이름과 이미지 및 태그를 설명하는 JSON 파일, 이미지 정의 파일의 이름입니다. 이 파일은 ECS 표준 배포에 사용합니다. 자세한 내용은 [입력 아티팩트](#action-reference-ECS-input) 및 [Amazon ECS 표준 배포 작업을 위한 imagedefinitions.json 파일](file-reference.md#pipelines-create-image-definitions) 섹션을 참조하세요.

**DeploymentTimeout**  
필수 여부: 아니요  
Amazon ECS 배포 작업 제한 시간(분). 제한 시간은 이 작업에 대한 최대 기본 제한 시간까지 구성할 수 있습니다. 예제:   

```
"DeploymentTimeout": "15"
```

## 입력 아티팩트
<a name="action-reference-ECS-input"></a>
+ **아티팩트 수:** `1`
+ **설명:** 작업은 파이프라인의 소스 파일 리포지토리에서 `imagedefinitions.json` 파일을 찾습니다. 이미지 정의 문서는 Amazon ECS 컨테이너 이름과 이미지 및 태그를 설명하는 JSON 파일입니다. CodePipeline은 Amazon ECR과 같은 이미지 리포지토리에서 파일을 사용하여 이미지를 검색합니다. 작업이 자동화되지 않은 파이프라인용 `imagedefinitions.json` 파일을 수동으로 추가할 수 있습니다. `imagedefinitions.json` 파일에 대한 자세한 내용은 [Amazon ECS 표준 배포 작업을 위한 imagedefinitions.json 파일](file-reference.md#pipelines-create-image-definitions) 단원을 참조하십시오.

  작업을 수행하려면 이미지 리포지토리에 이미 푸시된 기존 이미지가 필요합니다. 이미지 매핑은 `imagedefinitions.json` 파일에서 제공되므로 Amazon ECR 소스를 파이프라인의 소스 작업으로 포함할 필요는 없습니다.

## 출력 아티팩트
<a name="action-reference-ECS-output"></a>
+ **아티팩트 수:** `0` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

## 서비스 역할 권한: Amazon ECS 표준 작업
<a name="edit-role-ecs"></a>

Amazon ECS의 경우 Amazon ECS 배포 작업을 통해 파이프라인을 만드는 데 필요한 최소 권한은 다음과 같습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "TaskDefinitionPermissions",
            "Effect": "Allow",
            "Action": [
                "ecs:DescribeTaskDefinition",
                "ecs:RegisterTaskDefinition"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "ECSServicePermissions",
            "Effect": "Allow",
            "Action": [
                "ecs:DescribeServices",
                "ecs:UpdateService"
            ],
            "Resource": [
                "arn:aws:ecs:*:111122223333:service/[[clusters]]/*"
            ]
        },
        {
            "Sid": "ECSTagResource",
            "Effect": "Allow",
            "Action": [
                "ecs:TagResource"
            ],
            "Resource": [
                "arn:aws:ecs:*:111122223333:task-definition/[[taskDefinitions]]:*"
            ],
            "Condition": {
                "StringEquals": {
                    "ecs:CreateAction": [
                        "RegisterTaskDefinition"
                    ]
                }
            }
        },
        {
            "Sid": "IamPassRolePermissions",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::111122223333:role/[[passRoles]]"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "ecs.amazonaws.com",
                        "ecs-tasks.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

Amazon ECS에서 태그 지정 권한 부여 사용으로 옵트인할 수 있습니다. 옵트인을 통해 다음 권한: `ecs:TagResource`를 부여해야 합니다. 옵트인하는 방법과 권한 필요 여부 및 태그 권한 부여 적용 여부에 대한 자세한 내용은 Amazon Elastic Container Service 개발자 안내서의 [태그 지정 권한 부여 타임라인](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#tag-resources-timeline)을 참조하세요.

작업에 IAM 역할을 사용하려면 `iam:PassRole` 권한을 추가해야 합니다. 자세한 내용은 [Amazon ECS 태스크 실행 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html)과 [태스크에 대한 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)을 참조하세요. 다음 정책 텍스트를 사용합니다.

## 작업 선언
<a name="action-reference-ECS-example"></a>

------
#### [ YAML ]

```
Name: DeployECS
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: ECS
  Version: '1'
RunOrder: 2
Configuration:
  ClusterName: my-ecs-cluster
  ServiceName: sample-app-service
  FileName: imagedefinitions.json
  DeploymentTimeout: '15'
OutputArtifacts: []
InputArtifacts:
  - Name: my-image
```

------
#### [ JSON ]

```
{
    "Name": "DeployECS",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "ECS",
        "Version": "1"
    },
    "RunOrder": 2,
    "Configuration": {
        "ClusterName": "my-ecs-cluster",
        "ServiceName": "sample-app-service",
        "FileName": "imagedefinitions.json",
        "DeploymentTimeout": "15"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "my-image"
        }
    ]
},
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-ECS-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ ECRBuildandPublish 작업을 사용하여 이미지를 푸시한 다음 ECS 표준 작업을 사용하여 Amazon ECS에 배포하는 방법을 보여주는 자습서는 [자습서: CodePipeline을 사용하여 Docker 이미지를 빌드하고 Amazon ECR에 푸시(V2 유형)](tutorials-ecr-build-publish.md) 섹션을 참조하세요.
+ [자습서: CodePipeline을 사용한 지속적 배포](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-cd-pipeline.html) - 이 자습서에서는 CodeCommit과 같은 소스 파일 리포지토리에 저장하는 Dockerfile을 만드는 방법을 보여줍니다. 다음으로 자습서에서는 도커 이미지를 빌드하여 Amazon ECR로 푸시하고 imagedefinitions.json 파일을 생성하는 CodeBuild BuildSpec 파일을 통합하는 방법을 보여줍니다. 마지막으로 Amazon ECS 서비스와 작업 정의를 생성한 다음 Amazon ECS 배포 작업을 사용하여 파이프라인을 생성합니다.
**참고**  
이 주제 및 자습서에서는 CodePipeline의 Amazon ECS 표준 배포 작업에 대해 설명합니다. CodePipeline에서의 CodeDeploy 블루/그린 배포 작업에 대한 Amazon ECS에 대한 정보는 [자습서: Amazon ECR 소스 및 ECS-to-CodeDeploy 배포를 사용하여 파이프라인 생성](tutorials-ecs-ecr-codedeploy.md)을 참조하세요.
+ *Amazon Elastic Container Service 개발자 안내서* - 도커 이미지 및 컨테이너, Amazon ECS 서비스 및 클러스터, Amazon ECS 작업 세트 사용에 대한 자세한 내용은 [Amazon ECS란 무엇입니까?](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/)를 참조하세요.

# Amazon Elastic Kubernetes Service `EKS` 배포 작업 참조
<a name="action-reference-EKS"></a>

`EKSDeploy` 작업을 사용하여 Amazon EKS 서비스를 배포할 수 있습니다. 배포에는 CodePipeline이 이미지를 배포하는 데 사용하는 Kubernetes 매니페스트 파일이 필요합니다.

파이프라인을 생성하기 전에, Amazon EKS 리소스를 미리 생성하고 이미지를 이미지 리포지토리에 저장해 두어야 합니다. 선택적으로 클러스터에 대한 VPC 정보를 제공할 수 있습니다.

**중요**  
이 작업은 CodePipeline 관리형 CodeBuild 컴퓨팅을 사용하여 빌드 환경에서 명령을 실행합니다. 명령 작업을 실행하면 AWS CodeBuild에서 별도의 요금이 발생합니다.

**참고**  
`EKS` 배포 작업은 V2 유형 파이프라인에서만 사용할 수 있습니다.

EKS 작업은 퍼블릭 및 프라이빗 EKS 클러스터를 모두 지원합니다. 프라이빗 클러스터는 EKS에서 권장하는 유형이지만 두 유형 모두 지원됩니다.

EKS 작업은 교차 계정 작업에 대해 지원됩니다. 교차 계정 EKS 작업을 추가하려면 작업 선언의 대상 계정에서 `actionRoleArn`을 추가합니다.

**Topics**
+ [작업 유형](#action-reference-EKS-type)
+ [구성 파라미터](#action-reference-EKS-config)
+ [입력 아티팩트](#action-reference-EKS-input)
+ [출력 아티팩트](#action-reference-EKS-output)
+ [환경 변수](#action-reference-EKS-env-variables)
+ [출력 변수](#action-reference-EKS-output-vars)
+ [서비스 역할 정책 권한](#action-reference-EKS-service-role)
+ [작업 선언](#action-reference-EKS-example)
+ [다음 사항도 참조하세요.](#action-reference-EKS-links)

## 작업 유형
<a name="action-reference-EKS-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `EKS`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-EKS-config"></a>

**ClusterName**  
필수 항목 여부: 예  
Amazon EKS의 Amazon EKS 클러스터입니다.

**헬름 아래의 옵션**  
다음은 **헬름**이 선택한 배포 도구일 때 사용할 수 있는 옵션입니다.    
**HelmReleaseName **  
필수: 예(**헬름** 유형에만 필수)  
배포의 릴리스 이름입니다.  
**HelmChartLocation **  
필수: 예(**헬름** 유형에만 필수)  
배포의 차트 위치입니다.  
**HelmValuesFiles **  
필수: 아니요(**헬름** 유형의 경우에만 선택 사항)  
헬름 값 파일에 대해 재정의하려면 헬름 차트 위치에 쉼표로 구분된 헬름 차트 값 파일을 입력합니다.

**Kubectl의 옵션**  
다음은 **Kubectl**이 선택한 배포 도구일 때 사용할 수 있는 옵션입니다.    
**ManifestFiles**  
필수: 예(**Kubectl** 유형에만 필수)  
서비스의 컨테이너 이름과 이미지 및 태그를 설명하는 텍스트 파일, 매니페스트 파일의 이름입니다. 이 파일을 사용하여 이미지 URI 및 기타 정보를 파라미터화합니다. 이 용도로 환경 변수를 사용할 수 있습니다.  
 이 파일을 파이프라인의 소스 리포지토리에 저장합니다.

**네임스페이스**  
필수 여부: 아니요  
`kubectl` 또는 `helm` 명령에 사용할 kubernetes 네임스페이스입니다.

**서브넷**  
필수 여부: 아니요  
클러스터의 VPC에 대한 서브넷입니다. 이는 클러스터에 연결된 동일한 VPC의 일부입니다. 클러스터에 아직 연결되지 않은 서브넷을 제공하고 여기에 지정할 수도 있습니다.

**SecurityGroupIds**  
필수 여부: 아니요  
클러스터의 VPC에 대한 보안 그룹입니다. 이는 클러스터에 연결된 동일한 VPC의 일부입니다. 클러스터에 아직 연결되지 않은 보안 그룹을 제공하고 여기에 지정할 수도 있습니다.

## 입력 아티팩트
<a name="action-reference-EKS-input"></a>
+ **아티팩트 수:** `1`
+ **설명:** 이 작업은 파이프라인의 소스 파일 리포지토리에서 Kubernetes 매니페스트 파일 또는 헬름 차트를 찾습니다. S3 버킷에 저장된 .tgz 형식의 헬름 차트를 사용하려면 S3 버킷/키를 소스 작업으로 구성하면 됩니다. 예를 들어 제공된 객체 키는 `my-chart-0.1.0.tgz`입니다.

## 출력 아티팩트
<a name="action-reference-EKS-output"></a>
+ **아티팩트 수:** `0` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

## 환경 변수
<a name="action-reference-EKS-env-variables"></a>

매니페스트 파일 또는 헬름 차트 값 파일의 이미지 리포지토리 또는 이미지 태그와 같은 변수를 대체하는 데 사용됩니다.

**Key(키)**  
`$IMAGE_TAG`과 같은 키-값 환경 변수 페어의 키입니다.

**값**  
`v1.0`과 같은 키-값 페어의 값입니다. 파이프라인 작업 또는 파이프라인 변수의 출력 변수를 사용하여 값을 파라미터화할 수 있습니다. 예를 들어 파이프라인에는 `${codepipeline.PipelineExecutionId}`를 사용하여 ECR 이미지를 생성하는 ECRBuildAndPublish 작업이 있을 수 있으며, EKS 작업은 `${codepipeline.PipelineExecutionId}`를 환경 변수의 값으로 사용하여 이 이미지를 사용할 수 있습니다.

## 출력 변수
<a name="action-reference-EKS-output-vars"></a>

**EKSClusterName**  
Amazon EKS의 Amazon EKS 클러스터입니다.

## 서비스 역할 정책 권한
<a name="action-reference-EKS-service-role"></a>

이 작업을 실행하려면 파이프라인의 서비스 역할 정책에서 다음 권한을 사용할 수 있어야 합니다.
+ **EC2 작업:** CodePipeline이 실행되면 EC2 인스턴스 권한이 필요합니다. 이는 EKS 클러스터를 생성할 때 필요한 EC2 인스턴스 역할과 동일하지 않습니다.

  기존 서비스 역할을 사용하는 경우 이 작업을 사용하려면 서비스 역할에 대해 다음 권한을 추가해야 합니다.
  + ec2:CreateNetworkInterface
  + ec2:DescribeDhcpOptions
  + ec2:DescribeNetworkInterfaces
  + ec2:DeleteNetworkInterface
  + ec2:DescribeSubnets
  + ec2:DescribeSecurityGroups
  + ec2:DescribeVpcs
+ **EKS 작업:** CodePipeline이 작업을 실행할 때 EKS 클러스터 권한이 필요합니다. 이는 EKS 클러스터를 생성할 때 필요한 IAM EKS 클러스터 역할과 동일하지 않습니다.

  기존 서비스 역할을 사용하는 경우 이 작업을 사용하려면 서비스 역할에 대해 다음 권한을 추가해야 합니다.
  + eks:DescribeCluster
+ **로그 스트림 작업:** CodePipeline이 작업을 실행하면 CodePipeline은 다음과 같이 파이프라인 이름을 사용하여 로그 그룹을 생성합니다. 이렇게 하면 파이프라인 이름을 사용하여 리소스를 로깅할 수 있는 권한을 범위 아래로 지정할 수 있습니다.

  ```
  /aws/codepipeline/MyPipelineName
  ```

  기존 서비스 역할을 사용하는 경우 이 작업을 사용하려면 서비스 역할에 대해 다음 권한을 추가해야 합니다.
  + logs:CreateLogGroup
  + logs:CreateLogStream
  + logs:PutLogEvents

서비스 역할 정책 설명에서 다음 예제와 같이 리소스 수준까지 권한의 범위를 좁힙니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster"
            ],
            "Resource": "arn:aws:eks:*:111122223333:cluster/YOUR_CLUSTER_NAME"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:CreateNetworkInterfacePermission",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeVpcs",
                "ec2:DescribeRouteTables"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:CreateLogGroup",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:*:111122223333:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME",
                "arn:aws:logs:*:111122223333:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*"
            ]
        }
    ]
}
```

------

작업 세부 정보 대화 상자를 사용하여 콘솔에서 로그를 보려면 로그를 볼 수 있는 권한을 콘솔 역할에 추가해야 합니다. 자세한 내용은 [콘솔에서 컴퓨팅 로그를 보는 데 필요한 권한](security-iam-permissions-console-logs.md)에서 콘솔 권한 정책 예제를 참조하세요.

### 서비스 역할을 클러스터의 액세스 항목으로 추가
<a name="action-reference-EKS-service-role-access"></a>

파이프라인의 서비스 역할 정책에서 권한을 사용할 수 있게 되면 CodePipeline 서비스 역할을 클러스터의 액세스 항목으로 추가하여 클러스터 권한을 구성합니다.

업데이트된 권한이 있는 작업 역할을 사용할 수도 있습니다. 자세한 정보는 [4단계: CodePipeline 서비스 역할에 대한 액세스 항목 생성](tutorials-eks-deploy.md#tutorials-eks-deploy-access-entry)의 자습서 예제를 참조하세요.

## 작업 선언
<a name="action-reference-EKS-example"></a>

------
#### [ YAML ]

```
Name: DeployEKS
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: EKS
  Version: '1'
RunOrder: 2
Configuration:
  ClusterName: my-eks-cluster
  ManifestFiles: ManifestFile.json
OutputArtifacts: []
InputArtifacts:
  - Name: SourceArtifact
```

------
#### [ JSON ]

```
{
    "Name": "DeployECS",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "EKS",
        "Version": "1"
    },
    "RunOrder": 2,
    "Configuration": {
        "ClusterName": "my-eks-cluster",
        "ManifestFiles": "ManifestFile.json"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "SourceArtifact"
        }
    ]
},
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-EKS-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ EKS 클러스터 및 Kubernetes 매니페스트 파일을 생성하여 파이프라인에 작업을 추가하는 방법을 보여주는 자습서는 [자습서: CodePipeline을 사용하여 Amazon EKS에 배포](tutorials-eks-deploy.md) 섹션을 참조하세요.

# AWS Lambda 배포 작업 참조
<a name="action-reference-LambdaDeploy"></a>

 AWS Lambda 배포 작업을 사용하여 서버리스 배포를 위한 애플리케이션 코드 배포를 관리합니다. 다음과 같이 함수를 배포하고 트래픽 배포에 배포 전략을 사용할 수 있습니다.
+ 트래픽 시프팅을 위한 카나리 및 선형 배포
+ 한 번에 모두 배포

**참고**  
이 작업은 V2 유형 파이프라인에서만 지원됩니다.

**Topics**
+ [작업 유형](#action-reference-LambdaDeploy-type)
+ [구성 파라미터](#action-reference-LambdaDeploy-parameters)
+ [입력 아티팩트](#action-reference-LambdaDeploy-input)
+ [출력 아티팩트](#action-reference-LambdaDeploy-output)
+ [출력 변수](#action-reference-LambdaDeploy-output-variables)
+ [Lambda 배포 작업에 대한 서비스 역할 정책 권한](#action-reference-LambdaDeploy-permissions-action)
+ [작업 선언](#action-reference-LambdaDeploy-example)
+ [다음 사항도 참조하세요.](#action-reference-LambdaDeploy-links)

## 작업 유형
<a name="action-reference-LambdaDeploy-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `Lambda`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-LambdaDeploy-parameters"></a>

**FunctionName**  
필수 항목 여부: 예  
`MyLambdaFunction`과 같이 Lambda에서 생성한 함수의 이름입니다.  
이미 버전이 생성되어 있어야 합니다.

**FunctionAlias**  
필수 여부: 아니요  
Lambda에서 생성한 함수의 별칭이며 `live`와 같이 배포할 함수입니다. 별칭이 있어야 하며 작업 실행이 시작될 때 별칭 뒤에 하나의 버전이 있어야 합니다. (롤백 대상 버전이 됩니다.)  
제공되지 않은 경우 작업은 소스 아티팩트를 `$LATEST`에 배포하고 새 버전을 생성합니다. 이 사용 사례에서는 배포 전략 및 대상 버전 옵션을 사용할 수 없습니다.

**PublishedTargetVersion**  
필수 여부: 아니요  
FunctionAlias에 배포할 원하는 Lambda 함수 버전입니다. `#{variables.lambdaTargetVersion}`과 같은 파이프라인 또는 작업 수준 변수일 수 있습니다. 작업 실행이 시작될 때 버전을 게시해야 합니다.  
입력 아티팩트가 제공되지 않은 경우 필요합니다.

**DeployStrategy**  
필수: 아니요(기본값은 `AllAtOnce`)  
  
Lambda 배포 작업이 Lambda 함수의 원래 버전에서 **FunctionAlias**의 새 버전으로 트래픽을 이동하기 위해 채택하는 속도를 결정합니다. 사용 가능한 배포 전략은 카나리 또는 선형입니다. 허용되는 형식:  
+ `AllAtOnce` - 

  업데이트된 Lambda 함수로 모든 트래픽을 한번에 전환합니다.

   지정하지 않은 경우 기본값은 `AllAtOnce`입니다.
+ `Canary10Percent5Minutes` - 첫 번째 증분에 트래픽의 10%가 전환됩니다. 나머지 90%는 5분 이후 배포됩니다.

  백분율과 분 값을 모두 변경할 수 있습니다.
+ `Linear10PercentEvery1Minute` - 모든 트래픽이 전환될 때까지 트래픽의 10%가 매분마다 전환됩니다.

  백분율과 분 값을 모두 변경할 수 있습니다.
이 필드에는 다음 고려이 적용됩니다.  
+ 최대 총 대기 시간은 2일입니다.
+ **FunctionAlias**가 제공된 경우에만 사용할 수 있습니다.


**경보**  
필수 여부: 아니요  
Lambda 배포에 대해 구성된 경보 이름의 쉼표로 구분된 목록입니다. 최대 10개의 알람을 추가할 수 있습니다. 모니터링된 경보가 ALARM 상태가 되면 작업이 실패합니다.

다음 이미지는 해당 작업의 편집 페이지 예를 보여줍니다.

![\[Lamda 배포 작업이 있는 새 파이프라인에 대한 작업 편집 페이지\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/lambdadeploy-edit-screen.png)


## 입력 아티팩트
<a name="action-reference-LambdaDeploy-input"></a>
+ **아티팩트 수:** `1`
+ **설명:** 배포 중에 스크립트 작업을 지원하기 위해 제공된 파일입니다.

## 출력 아티팩트
<a name="action-reference-LambdaDeploy-output"></a>
+ **아티팩트 수:** `0` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

## 출력 변수
<a name="action-reference-LambdaDeploy-output-variables"></a>

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

자세한 내용은 [변수 참조](reference-variables.md) 단원을 참조하십시오.

**FunctionVersion**  
배포된 새 Lambda 함수 버전입니다.

## Lambda 배포 작업에 대한 서비스 역할 정책 권한
<a name="action-reference-LambdaDeploy-permissions-action"></a>

CodePipeline이 작업을 실행할 때 CodePipeline 서비스 역할에는 최소 권한으로 액세스할 수 있도록 범위가 적절하게 축소된 다음 최소 권한이 필요합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "StatementForLambda",
            "Effect": "Allow",
            "Action": [
                "lambda:GetAlias",
                "lambda:GetFunctionConfiguration",
                "lambda:GetProvisionedConcurrencyConfig",
                "lambda:PublishVersion",
                "lambda:UpdateAlias",
                "lambda:UpdateFunctionCode"
            ],
            "Resource": [
                "arn:aws:lambda:us-east-1:111122223333:function:{{FunctionName}}",
                "arn:aws:lambda:us-east-1:111122223333:function:{{FunctionName}}:*"
            ]
        },
        {
            "Sid": "StatementForCloudWatch",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:DescribeAlarms"
            ],
            "Resource": [
                "arn:aws:cloudwatch:us-east-1:111122223333:alarm:{{AlarmNames}}"
            ]
        },
        {
            "Sid": "StatementForLogs1",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:111122223333:log-group:/us-east-1/codepipeline/{{pipelineName}}",
                "arn:aws:logs:us-east-1:111122223333:log-group:/us-east-1/codepipeline/{{pipelineName}}:*"
            ]
        },
        {
            "Sid": "StatementForLogs2",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:111122223333:log-group:/us-east-1/codepipeline/{{pipelineName}}:log-stream:*"
            ]
        }
    ]
}
```

------

## 작업 선언
<a name="action-reference-LambdaDeploy-example"></a>

------
#### [ YAML ]

```
name: Deploy
actionTypeId:
  category: Deploy
  owner: AWS
  provider: Lambda
  version: '1'
runOrder: 1
configuration:
  DeployStrategy: Canary10Percent5Minutes
  FunctionAlias: aliasV1
  FunctionName: MyLambdaFunction
outputArtifacts: []
inputArtifacts:
- name: SourceArtifact
region: us-east-1
namespace: DeployVariables
```

------
#### [ JSON ]

```
{
    "name": "Deploy",
    "actionTypeId": {
        "category": "Deploy",
        "owner": "AWS",
        "provider": "Lambda",
        "version": "1"
    },
    "runOrder": 1,
    "configuration": {
        "DeployStrategy": "Canary10Percent5Minutes",
        "FunctionAlias": "aliasV1",
        "FunctionName": "MyLambdaFunction"
    },
    "outputArtifacts": [],
    "inputArtifacts": [
        {
            "name": "SourceArtifact"
        }
    ],
    "region": "us-east-1",
    "namespace": "DeployVariables"
},
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-LambdaDeploy-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+  [자습서: CodePipeline을 사용한 Lambda 함수 배포](tutorials-lambda-deploy.md) - 이 자습서에서는 별칭 및 버전을 생성하고, 소스 위치에 압축된 Lambda 함수를 추가하고, 파이프라인에서 Lambda 작업을 실행할 샘플 Lambda 함수를 생성하는 방법을 안내합니다.

# Amazon S3 배포 작업 참조
<a name="action-reference-S3Deploy"></a>

Amazon S3 배포 작업을 사용하여 정적 웹 사이트 호스팅 또는 보관을 위해 Amazon S3 버킷에 파일을 배포합니다. 버킷에 업로드하기 전에 배포 파일을 추출할지 여부를 지정할 수 있습니다.

**참고**  
이 참조 주제에서는 CodePipeline의 Amazon S3 배포 작업에 대해 설명합니다. 여기서 배포 플랫폼은 호스팅용으로 구성된 Amazon S3 버킷입니다. CodePipeline에서의 Amazon S3 소스 작업에 대한 참조 정보는 [Amazon S3 소스 작업 참조](action-reference-S3.md)을 참조하세요.

**Topics**
+ [작업 유형](#action-reference-S3Deploy-type)
+ [구성 파라미터](#action-reference-S3Deploy-config)
+ [입력 아티팩트](#action-reference-S3Deploy-input)
+ [출력 아티팩트](#action-reference-S3Deploy-output)
+ [서비스 역할 권한: S3 배포 작업](#edit-role-s3deploy)
+ [예제 작업 구성](#action-reference-S3Deploy-example)
+ [다음 사항도 참조하세요.](#action-reference-S3Deploy-links)

## 작업 유형
<a name="action-reference-S3Deploy-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `S3`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-S3Deploy-config"></a>

**BucketName**  
필수 항목 여부: 예  
파일을 배포할 Amazon S3 버킷 이름입니다.

**Extract**  
필수 항목 여부: 예  
true인 경우 업로드 전에 파일을 추출하도록 지정합니다. 그렇지 않으면 호스팅된 정적 웹 사이트의 경우처럼 애플리케이션 파일은 업로드를 위해 압축된 상태로 유지됩니다. false인 경우 `ObjectKey`는 필수 항목입니다.

**ObjectKey**  
조건부. `Extract` = false인 경우 필수  
S3 버킷의 객체를 고유하게 식별하는 Amazon S3 객체 키의 이름입니다.

**KMSEncryptionKeyARN**  
필수 여부: 아니요  
호스트 버킷에 대한 AWS KMS 암호화 키의 ARN입니다. AWS KMS key파라미터는 제공된 `KMSEncryptionKeyARN`를 사용하여 업로드된 아티팩트를 암호화합니다. KMS 키의 경우 키 ID, 키 ARN 또는 별칭 ARN을 사용할 수 있습니다.  
별칭은 KMS 키를 생성한 계정에서만 인식됩니다. 교차 계정 작업의 경우 키 ID 또는 키 ARN만 사용하여 키를 식별할 수 있습니다. 계정 간 작업에는 다른 계정(AccountB)의 역할을 사용하는 것이 포함되므로 키 ID를 지정하면 다른 계정(AccountB)의 키가 사용됩니다.
CodePipeline은 대칭 KMS 키만 지원합니다. 비대칭 KMS 키를 사용하여 S3 버킷의 데이터를 암호화하지 마십시오.

**CannedACL**  
필수 여부: 아니요  
`CannedACL` 파라미터는 Amazon S3에 배포된 객체에 지정된 [미리 준비된 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl)을 적용합니다. 이는 객체에 적용된 기존 ACL을 덮어씁니다.

**CacheControl**  
필수 여부: 아니요  
`CacheControl` 파라미터는 버킷의 객체에 대한 요청/응답의 캐싱 동작을 제어합니다. 유효한 값 목록의 경우 HTTP 작업에 대한 [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) 헤더 필드를 확인합니다. `CacheControl`에 여러 값을 입력하려면 각 값 사이에 쉼표를 사용합니다. 이 CLI용 예제와 같이 각 쉼표 뒤에 공백을 추가할 수 있습니다(선택 사항).  

```
"CacheControl": "public, max-age=0, no-transform"
```

## 입력 아티팩트
<a name="action-reference-S3Deploy-input"></a>
+ **아티팩트 수:** `1`
+ **설명:** 배포 또는 보관용 파일은 소스 리포지토리에서 가져와서 CodePipeline으로 압축하고 업로드합니다.

## 출력 아티팩트
<a name="action-reference-S3Deploy-output"></a>
+ **아티팩트 수:** `0` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

## 서비스 역할 권한: S3 배포 작업
<a name="edit-role-s3deploy"></a>

S3 배포 작업 지원의 경우 다음을 정책 설명에 추가합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:PutObjectVersionAcl",
        "s3:GetBucketVersioning",
        "s3:GetBucketAcl",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::[[s3DeployBuckets]]",
        "arn:aws:s3:::[[s3DeployBuckets]]/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

------

S3 배포 작업 지원의 경우 S3 객체에 태그가 있는 경우 정책 설명에 다음 권한도 추가해야 합니다.

```
"s3:GetObjectTagging",
"s3:GetObjectVersionTagging",
"s3:PutObjectTagging"
```

## 예제 작업 구성
<a name="action-reference-S3Deploy-example"></a>

다음은 작업 구성에 대한 예제을 보여 줍니다.

### `Extract`를 `false`로 설정한 경우의 구성 예제
<a name="action-reference-S3Deploy-extractfalse"></a>

다음 예제는 `Extract` 필드가 `false`로 설정된 상태에서 작업을 만들 때의 기본 작업 구성을 보여줍니다.

------
#### [ YAML ]

```
Name: Deploy
Actions:
  - Name: Deploy
    ActionTypeId:
      Category: Deploy
      Owner: AWS
      Provider: S3
      Version: '1'
    RunOrder: 1
    Configuration:
      BucketName: website-bucket
      Extract: 'false'
      ObjectKey: MyWebsite
    OutputArtifacts: []
    InputArtifacts:
      - Name: SourceArtifact
    Region: us-west-2
    Namespace: DeployVariables
```

------
#### [ JSON ]

```
{
    "Name": "Deploy",
    "Actions": [
        {
            "Name": "Deploy",
            "ActionTypeId": {
                "Category": "Deploy",
                "Owner": "AWS",
                "Provider": "S3",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "BucketName": "website-bucket",
                "Extract": "false",
                "ObjectKey": "MyWebsite"
                },
            "OutputArtifacts": [],
            "InputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "Region": "us-west-2",
            "Namespace": "DeployVariables"
        }
    ]
},
```

------

### `Extract`를 `true`로 설정한 경우의 구성 예제
<a name="action-reference-S3Deploy-extracttrue"></a>

다음 예제는 `Extract` 필드가 `true`로 설정된 상태에서 작업을 만들 때의 기본 작업 구성을 보여줍니다.

------
#### [ YAML ]

```
Name: Deploy
Actions:
  - Name: Deploy
    ActionTypeId:
      Category: Deploy
      Owner: AWS
      Provider: S3
      Version: '1'
    RunOrder: 1
    Configuration:
      BucketName: website-bucket
      Extract: 'true'
    OutputArtifacts: []
    InputArtifacts:
      - Name: SourceArtifact
    Region: us-west-2
    Namespace: DeployVariables
```

------
#### [ JSON ]

```
{
    "Name": "Deploy",
    "Actions": [
        {
            "Name": "Deploy",
            "ActionTypeId": {
                "Category": "Deploy",
                "Owner": "AWS",
                "Provider": "S3",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "BucketName": "website-bucket",
                "Extract": "true"
                },
            "OutputArtifacts": [],
            "InputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "Region": "us-west-2",
            "Namespace": "DeployVariables"
        }
    ]
},
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-S3Deploy-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [자습서: Amazon S3를 배포 공급자로 사용하는 파이프라인 생성](tutorials-s3deploy.md) - 이 자습서에서는 S3 배포 작업을 사용하여 파이프라인을 생성하는 두 가지 예제를 안내합니다. 샘플 파일을 다운로드하고, CodeCommit 리포지토리에 파일을 업로드하고, S3 버킷을 생성하고, 호스팅용 버킷을 구성합니다. 그런 다음 CodePipeline 콘솔을 사용하여 파이프라인을 생성하고 Amazon S3 배포 구성을 지정합니다.
+ [Amazon S3 소스 작업 참조](action-reference-S3.md) - 이 작업 참조는 CodePipeline의 Amazon S3 소스 작업에 대한 참조 정보와 예제를 제공합니다.

# Amazon S3 소스 작업 참조
<a name="action-reference-S3"></a>

구성된 버킷 및 객체 키에 새 객체가 업로드될 때 파이프라인을 트리거합니다.

**참고**  
이 참조 주제에서는 CodePipeline의 Amazon S3 소스 작업에 대해 설명합니다. 여기서 소스 위치는 버전 관리를 위해 구성된 Amazon S3 버킷입니다. CodePipeline에서의 Amazon S3 배포 작업에 대한 참조 정보는 [Amazon S3 배포 작업 참조](action-reference-S3Deploy.md)을 참조하세요.

Amazon S3 버킷을 생성하여 애플리케이션 파일의 원본 위치로 사용할 수 있습니다.

**참고**  
소스 버킷을 생성할 때는 버킷에 대한 버전 관리를 활성화해야 합니다. 기존의 Amazon S3 버킷을 사용하려면 기존 버킷에 대한 버전 관리를 활성화하기 위한 [버전 관리 사용](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html)을 참조하세요.

콘솔을 사용하여 파이프라인을 생성 또는 편집하는 경우, CodePipeline은 S3 소스 버킷에서 변경이 발생할 때 파이프라인을 시작하는 EventBridge 규칙을 생성합니다.

**참고**  
Amazon ECR, Amazon S3 또는 CodeCommit 소스의 경우 입력 변환 항목을 사용하여 소스 재정의를 생성하여 파이프라인 이벤트에 EventBridge의 `revisionValue`를 사용할 수도 있습니다. 여기서 `revisionValue`는 객체 키, 커밋 또는 이미지 ID의 소스 이벤트 변수에서 파생됩니다. 자세한 내용은 [Amazon ECR 소스 작업 및 EventBridge 리소스](create-cwe-ecr-source.md), [이벤트에 대해 활성화된 소스를 사용하여 Amazon S3 소스 작업에 연결](create-S3-source-events.md), 또는 [CodeCommit 소스 작업 및 EventBridge](triggering.md)의 절차에 포함된 입력 변환 항목의 선택적 단계를 참조하세요.

Amazon S3 작업을 통해 파이프라인을 연결하기 전에 Amazon S3 소스 버킷을 생성하고 원본 파일을 단일 ZIP 파일로 업로드해야 합니다.

**참고**  
Amazon S3가 파이프라인의 소스 공급자인 경우, 소스 파일을 .zip 하나로 압축하고 그 .zip을 소스 버킷에 업로드할 수 있습니다. 압축이 풀린 단일 파일을 업로드할 수도 있지만 .zip 파일을 예상하는 다운스트림 작업은 실패합니다.

**Topics**
+ [작업 유형](#action-reference-S3-type)
+ [구성 파라미터](#action-reference-S3-config)
+ [입력 아티팩트](#action-reference-S3-input)
+ [출력 아티팩트](#action-reference-S3-output)
+ [출력 변수](#action-reference-S3-variables)
+ [서비스 역할 권한: S3 소스 작업](#edit-role-s3source)
+ [작업 선언](#action-reference-S3-example)
+ [다음 사항도 참조하세요.](#action-reference-S3-links)

## 작업 유형
<a name="action-reference-S3-type"></a>
+ 범주: `Source`
+ 소유자: `AWS`
+ 공급자: `S3`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-S3-config"></a>

**S3Bucket**  
필수 항목 여부: 예  
소스 변경 사항이 감지되는 Amazon S3 버킷의 이름입니다.

**S3ObjectKey**  
필수 항목 여부: 예  
소스 변경 사항이 감지되는 Amazon S3 객체 키의 이름입니다.

**AllowOverrideForS3ObjectKey**  
필수 여부: 아니요  
`AllowOverrideForS3ObjectKey`는 `StartPipelineExecution`의 소스 재정의가 소스 작업에 이미 구성된 `S3ObjectKey`를 재정의할 수 있는지 여부를 제어합니다. S3 객체 키를 사용한 소스 재정의에 대한 자세한 내용은 [소스 개정 재정의로 파이프라인 시작](pipelines-trigger-source-overrides.md) 섹션을 참조하세요.  
`AllowOverrideForS3ObjectKey`를 생략하면 CodePipeline은 이 파라미터를 `false`로 설정하여 소스 작업에서 S3 ObjectKey를 재정의할 수 있는 기능을 기본값으로 설정합니다.
이 파라미터에 유효한 값은 다음과 같습니다.  
+ `true`: 설정된 경우 파이프라인 실행 중에 소스 개정 재정의로 사전 구성된 S3 객체 키를 재정의할 수 있습니다.
**참고**  
모든 CodePipeline 사용자가 새 파이프라인 실행을 시작하는 동안 사전 구성된 S3 객체 키를 재정의할 수 있도록 허용하려면 `AllowOverrideForS3ObjectKey`를 `true`로 설정해야 합니다.
+ `false`: 

  설정하면 CodePipeline은 소스 개정 재정의를 사용하여 S3 객체 키를 재정의하도록 허용하지 않습니다. 이는 이 파라미터의 기본값이기도 합니다.

**PollForSourceChanges**  
필수 여부: 아니요  
`PollForSourceChanges`은 CodePipeline이 소스 변경 사항에 대한 Amazon S3 소스 버킷을 폴링할지 여부를 제어합니다. 대신 CloudWatch Events 및 CloudTrail을 사용하여 소스 변경 사항을 감지하는 것이 좋습니다. CloudWatch Events 구성에 대한 자세한 내용은 [S3 소스 및 CloudTrail 트레일을 사용하여 폴링 파이프라인 마이그레이션(CLI)](update-change-detection.md#update-change-detection-cli-S3) 또는 [S3 소스 및 CloudTrail 추적을 사용하여 폴링 파이프라인 마이그레이션(CloudFormation 템플릿)](update-change-detection.md#update-change-detection-cfn-s3)을 참조하세요.  
CloudWatch Events를 구성하려는 경우, 중복된 파이프라인 실행이 발생하지 않도록 `PollForSourceChanges`를 `false`로 설정해야 합니다.
이 파라미터에 유효한 값은 다음과 같습니다.  
+ `true`: 이 값으로 설정된 경우 CodePipeline은 소스 변경 사항에 대해 소스 위치를 폴링합니다.
**참고**  
`PollForSourceChanges`를 생략하면 CodePipeline은 기본적으로 소스 변경 사항에 대해 소스 위치를 폴링합니다. 이러한 동작은 `PollForSourceChanges`이 포함되었고 `true`로 설정된 경우와 똑같습니다.
+ `false`: 이 값으로 설정된 경우 CodePipeline은 소스 변경 사항에 대해 소스 위치를 폴링하지 않습니다. 소스 변경 사항을 감지하도록 CloudWatch Events 규칙을 구성하려면 이 설정을 사용합니다.

## 입력 아티팩트
<a name="action-reference-S3-input"></a>
+ **아티팩트 수:** `0`
+ **설명:** 이 작업 유형에는 입력 아티팩트가 적용되지 않습니다.

## 출력 아티팩트
<a name="action-reference-S3-output"></a>
+ **아티팩트 수:** `1` 
+ **설명:** 파이프라인에 연결하도록 구성된 소스 버킷에서 사용할 수 있는 아티팩트를 제공합니다. 버킷에서 생성된 아티팩트는 Amazon S3 작업의 출력 아티팩트입니다. Amazon S3 객체 메타데이터(ETag 및 버전 ID)는 트리거된 파이프라인 실행의 소스 개정으로 CodePipeline에 표시됩니다.

## 출력 변수
<a name="action-reference-S3-variables"></a>

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

CodePipeline의 변수에 대한 자세한 내용은 [변수 참조](reference-variables.md) 단원을 참조하세요.

**BucketName**  
파이프라인을 트리거한 소스 변경과 관련된 Amazon S3 버킷의 이름입니다.

**ETag**  
파이프라인을 트리거한 소스 변경과 관련된 개체의 엔터티 태그입니다. ETag는 객체의 MD5 해시입니다. ETag는 객체의 내용에 대한 변경 사항만 반영하고 메타데이터에 대한 변경은 반영하지 않습니다.

**ObjectKey**  
파이프라인을 트리거한 소스 변경과 관련된 Amazon S3 객체 키의 이름입니다.

**VersionId**  
파이프라인을 트리거한 소스 변경과 관련된 객체 버전의 버전 ID입니다.

## 서비스 역할 권한: S3 소스 작업
<a name="edit-role-s3source"></a>

S3 소스 작업 지원의 경우 다음을 정책 설명에 추가합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:GetBucketVersioning",
        "s3:GetBucketAcl",
        "s3:GetBucketLocation",
        "s3:GetObjectTagging",
        "s3:GetObjectVersionTagging"
      ],
      "Resource": [
        "arn:aws:s3:::[[S3Bucket]]",
        "arn:aws:s3:::[[S3Bucket]]/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

------

## 작업 선언
<a name="action-reference-S3-example"></a>

------
#### [ YAML ]

```
Name: Source
Actions:
  - RunOrder: 1
    OutputArtifacts:
      - Name: SourceArtifact
    ActionTypeId:
      Provider: S3
      Owner: AWS
      Version: '1'
      Category: Source
    Region: us-west-2
    Name: Source
    Configuration:
      S3Bucket: amzn-s3-demo-source-bucket
      S3ObjectKey: my-application.zip
      PollForSourceChanges: 'false'
    InputArtifacts: []
```

------
#### [ JSON ]

```
{
    "Name": "Source",
    "Actions": [
        {
            "RunOrder": 1,
            "OutputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "ActionTypeId": {
                "Provider": "S3",
                "Owner": "AWS",
                "Version": "1",
                "Category": "Source"
            },
            "Region": "us-west-2",
            "Name": "Source",
            "Configuration": {
                "S3Bucket": "amzn-s3-demo-source-bucket",
                "S3ObjectKey": "my-application.zip",
                "PollForSourceChanges": "false"
            },
            "InputArtifacts": []
        }
    ]
},
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-S3-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [자습서: 간단한 파이프라인 생성(S3 버킷)](tutorials-simple-s3.md) - 이 자습서에서는 앱 사양 파일 샘플과 CodeDeploy 애플리케이션 및 배포 그룹 샘플을 제공합니다. 이 자습서를 사용하여 Amazon EC2 인스턴스에 배포되는 Amazon S3 소스로 파이프라인을 생성합니다.

# AWS AppConfig 배포 작업 참조
<a name="action-reference-AppConfig"></a>

AWS AppConfig는의 기능입니다 AWS Systems Manager. AppConfig는 모든 규모의 애플리케이션에 대한 제어된 배포를 지원하며 내장 유효성 검사 및 모니터링을 포함합니다. Amazon EC2 인스턴스, AWS Lambda컨테이너, 모바일 애플리케이션 또는 IoT 디바이스에서 호스팅되는 애플리케이션과 함께 AppConfig를 사용할 수 있습니다.

`AppConfig` 배포 작업은 파이프라인 소스 위치에 저장된 구성을 지정된 AppConfig *애플리케이션*, *환경* 및 *구성* 프로필에 배포하는 AWS CodePipeline 작업입니다. AppConfig 배포 전략에 정의된 기본 설정을 사용합니다.**

## 작업 유형
<a name="action-reference-AppConfig-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `AppConfig`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-AppConfig-config"></a>

**애플리케이션**  
필수 항목 여부: 예  
구성 및 배포에 대한 세부 정보가 포함된 AWS AppConfig 애플리케이션의 ID입니다.

**환경**  
필수 항목 여부: 예  
구성이 배포되는 AWS AppConfig 환경의 ID입니다.

**ConfigurationProfile**  
필수 항목 여부: 예  
배포할 AWS AppConfig 구성 프로필의 ID입니다.

**InputArtifactConfigurationPath**  
필수 항목 여부: 예  
배포할 입력 아티팩트 내 구성 데이터의 파일 경로입니다.

**DeploymentStrategy**  
필수 여부: 아니요  
배포에 사용할 AWS AppConfig 배포 전략입니다.

## 입력 아티팩트
<a name="action-reference-AppConfig-input"></a>
+ **아티팩트 수:** `1`
+ **설명**: 배포 작업을 위한 입력 아티팩트입니다.

## 출력 아티팩트
<a name="action-reference-AppConfig-output"></a>

해당 사항 없음.

## 서비스 역할 권한: `AppConfig` 작업
<a name="edit-role-appconfig"></a>

CodePipeline이 작업을 실행하면 최소 권한으로 액세스를 유지하기 위해 CodePipeline 서비스 역할 정책에 리소스 수준으로 범위가 적절하게 축소된 다음 최소 권한이 필요합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "appconfig:StartDeployment",
                "appconfig:StopDeployment",
                "appconfig:GetDeployment"
            ],
            "Resource": [
                "arn:aws:appconfig:*:111122223333:application/[[Application]]",
                "arn:aws:appconfig:*:111122223333:application/[[Application]]/*",
                "arn:aws:appconfig:*:111122223333:deploymentstrategy/*"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

## 예제 작업 구성
<a name="action-reference-AppConfig-example"></a>

------
#### [ YAML ]

```
name: Deploy
actions:
  - name: Deploy
    actionTypeId:
      category: Deploy
      owner: AWS
      provider: AppConfig
      version: '1'
    runOrder: 1
    configuration:
      Application: 2s2qv57
      ConfigurationProfile: PvjrpU
      DeploymentStrategy: frqt7ir
      Environment: 9tm27yd
      InputArtifactConfigurationPath: /
    outputArtifacts: []
    inputArtifacts:
      - name: SourceArtifact
    region: us-west-2
    namespace: DeployVariables
```

------
#### [ JSON ]

```
{
    "name": "Deploy",
    "actions": [
        {
            "name": "Deploy",
            "actionTypeId": {
                "category": "Deploy",
                "owner": "AWS",
                "provider": "AppConfig",
                "version": "1"
            },
            "runOrder": 1,
            "configuration": {
                "Application": "2s2qv57",
                "ConfigurationProfile": "PvjrpU",
                "DeploymentStrategy": "frqt7ir",
                "Environment": "9tm27yd",
                "InputArtifactConfigurationPath": "/"
            },
            "outputArtifacts": [],
            "inputArtifacts": [
                {
                    "name": "SourceArtifact"
                }
            ],
            "region": "us-west-2",
            "namespace": "DeployVariables"
        }
    ]
}
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-StepFunctions-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [AWS AppConfig](https://docs.aws.amazon.com/systems-manager/latest/userguide/appconfig.html) - AWS AppConfig 배포에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서를* 참조하세요.
+ [자습서: AWS AppConfig를 배포 공급자로 사용하는 파이프라인 생성](tutorials-AppConfig.md) -이 자습서에서는 간단한 배포 구성 파일 및 AppConfig 리소스 설정을 시작하고 콘솔을 사용하여 AWS AppConfig 배포 작업을 통해 파이프라인을 생성하는 방법을 보여줍니다.

# CloudFormation 배포 작업 참조
<a name="action-reference-CloudFormation"></a>

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

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

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

**Topics**
+ [작업 유형](#action-reference-CloudFormation-type)
+ [구성 파라미터](#action-reference-CloudFormation-config)
+ [입력 아티팩트](#action-reference-CloudFormation-input)
+ [출력 아티팩트](#action-reference-CloudFormation-output)
+ [출력 변수](#action-reference-CloudFormation-variables)
+ [서비스 역할 권한: CloudFormation 작업](#edit-role-cloudformation)
+ [작업 선언](#action-reference-CloudFormation-example)
+ [다음 사항도 참조하세요.](#action-reference-CloudFormation-links)

## 작업 유형
<a name="action-reference-CloudFormation-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `CloudFormation`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-CloudFormation-config"></a>

**ActionMode**  
필수 항목 여부: 예  
`ActionMode`는 스택 또는 변경 세트에서 CloudFormation 수행하는 작업의 이름입니다. 사용할 수 있는 작업 모드는 다음과 같습니다.  
+ `CHANGE_SET_EXECUTE`는 지정된 리소스 업데이트 세트를 기반으로 하는 리소스 스택에 대한 변경 세트를 실행합니다. 이 작업을 수행하면가 스택을 변경하기 CloudFormation 시작합니다.
+ `CHANGE_SET_REPLACE`: 변경 세트가 존재하지 않는 경우 스택 이름 및 제출하는 템플릿을 기반으로 변경 세트를 생성합니다. 변경 세트가 있는 경우 CloudFormation 는 변경 세트를 삭제한 다음 새 변경 세트를 생성합니다.
+ `CREATE_UPDATE`는 스택이 없는 경우 스택을 생성합니다. 스택이 있는 경우 스택을 CloudFormation 업데이트합니다. 이 작업을 사용하여 기존 스택을 업데이트합니다. `REPLACE_ON_FAILURE`과 달리 스택이 있으며 실패 상태인 경우 CodePipeline은 스택을 삭제하고 교체하지 않습니다.
+ `DELETE_ONLY`: 스택을 삭제합니다. 존재하지 않는 스택을 지정하면 이 작업이 스택을 삭제하지 않고 성공적으로 완료됩니다.
+ `REPLACE_ON_FAILURE`는 스택이 없는 경우 스택을 생성합니다. 스택이 존재하고 실패 상태인 경우는 스택을 CloudFormation 삭제한 다음 새 스택을 생성합니다. 스택이 실패 상태가 아닌 경우는 스택을 CloudFormation 업데이트합니다.

   CloudFormation에 다음 상태 유형 중 하나가 표시되면 스택이 실패 상태가 됩니다.
  + `ROLLBACK_FAILED`
  + `CREATE_FAILED`
  + `DELETE_FAILED`
  + `UPDATE_ROLLBACK_FAILED`

  이 작업을 사용하면 실패한 스택을 복구하거나 문제를 해결하지 않고 실패한 스택을 자동으로 대체합니다.
**중요**  
`REPLACE_ON_FAILURE`는 스택을 삭제할 수도 있으므로 테스트용으로만 사용하는 것이 좋습니다.

**StackName**  
필수 항목 여부: 예  
`StackName`은 기존 스택 또는 생성하려는 스택의 이름입니다.

**기능**  
필수 항목 여부: 조건부  
`Capabilities` 사용은 템플릿이 일부 리소스를 자체적으로 생성 및 업데이트할 수 있으며, 이러한 기능은 템플릿의 리소스 유형에 따라 결정됨을 승인합니다.  
이 속성은 스택 템플릿에 IAM 리소스가 있거나 매크로가 포함된 템플릿에서 직접 스택을 만들 경우 필수 항목입니다. 이러한 방식으로 CloudFormation 작업이 성공적으로 작동하려면 다음 기능 중 하나를 사용하여 작업을 수행할 것을 명시적으로 승인해야 합니다.  
+ `CAPABILITY_IAM` 
+ `CAPABILITY_NAMED_IAM` 
+ `CAPABILITY_AUTO_EXPAND` 
 기능 사이에 쉼표(공백 아님)를 사용하여 둘 이상의 기능을 지정할 수 있습니다. [작업 선언](#action-reference-CloudFormation-example)의 예제는 CAPABILITY\$1IAM 및 CAPABILITY\$1AUTO\$1EXPAND 속성이 모두 있는 항목을 보여줍니다.  
`Capabilities`에 대한 자세한 내용은 *AWS CloudFormation API 참조*의 [UpdateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html)에 있는 속성을 참조하세요.

**ChangeSetName**  
필수 항목 여부: 조건부  
`ChangeSetName`은 지정된 스택에 대해 생성하려는 새 변경 세트 또는 기존 변경 세트의 이름입니다.  
 이 속성은 CHANGE\$1SET\$1REPLACE 및 CHANGE\$1SET\$1EXECUTE 작업 모드의 경우 필수 항목입니다. 기타 모든 작업 모드의 경우 이 속성은 무시됩니다.

**RoleArn**  
필수 항목 여부: 조건부  
`RoleArn`은 지정된 스택의 리소스에 대해 작업을 수행할 때 CloudFormation 이 맡는 IAM 서비스 역할의 ARN입니다. 변경 세트를 실행할 때는 `RoleArn`이 적용되지 않습니다. 변경 세트를 생성하기 위해 CodePipeline을 사용하지 않는 경우 변경 세트 또는 스택에 연결된 역할이 있는지 확인해야 합니다.  
이 역할은 작업 선언 `RoleArn`에 구성된 대로 실행 중인 작업의 역할과 동일한 계정에 있어야 합니다.
이 속성은 다음 작업 모드의 경우 필수 항목입니다.  
+ CREATE\$1UPDATE
+ REPLACE\$1ON\$1FAILURE
+ DELETE\$1ONLY
+ CHANGE\$1SET\$1REPLACE
CloudFormation 에는 템플릿에 대한 S3-signed URL이 부여되므로 아티팩트 버킷에 액세스할 수 있는 권한이 필요하지 `RoleArn` 않습니다. 하지만 서명된 URL을 생성하려면 작업 `RoleArn`에 아티팩트 버킷에 대한 액세스 권한이 필요합니다.**

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

```
"TemplatePath": "SourceArtifact::template-export.json"
```
이 속성은 다음 작업 모드의 경우 필수 항목입니다.  
+ CREATE\$1UPDATE
+ REPLACE\$1ON\$1FAILURE
+ CHANGE\$1SET\$1REPLACE
기타 모든 작업 모드의 경우 이 속성은 무시됩니다.  
 CloudFormation 템플릿 본문이 포함된 템플릿 파일의 최소 길이는 1바이트이고 최대 길이는 1MB입니다. CodePipeline의 CloudFormation 배포 작업의 경우 최대 입력 아티팩트 크기는 항상 256MB입니다. 자세한 내용은 [AWS CodePipeline의 할당량](limits.md) 및 [CloudFormation 제한](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html) 단원을 참조하십시오.

**OutputFileName**  
필수 여부: 아니요  
`OutputFileName`을 사용하여 `CreateStackOutput.json`과 같은 출력 파일 이름을 지정합니다. CodePipeline은 이 이름을 이 작업의 파이프라인 출력 아티팩트에 추가합니다. JSON 파일에는 CloudFormation 스택의 `Outputs` 섹션 내용이 포함되어 있습니다.  
이름을 지정하지 않으면 CodePipeline에서는 출력 파일 또는 아티팩트를 생성하지 않습니다.

**ParameterOverrides**  
필수 여부: 아니요  
파라미터는 스택 템플릿에 정의되며, 이를 통해 스택 생성 또는 업데이트 시 값을 제공할 수 있습니다. JSON 객체를 사용하여 템플릿에서 파라미터 값을 설정할 수 있습니다. 이러한 값은 템플릿 구성 파일에 설정된 값을 재정의합니다. 파라미터 재정의 사용에 대한 자세한 내용은 [구성 속성(JSON 객체)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-action-reference.html#w4363ab1c13c13b9)을 참조하십시오.  
대부분의 파라미터 값에 템플릿 구성 파일을 사용하는 것이 좋습니다. 파라미터를 사용하면 파이프라인이 실행될 때까지 알 수 없는 값만 재정의합니다. 자세한 내용은 *AWS CloudFormation 사용 설명서*의 [CodePipeline 파이프라인에서 파라미터 재정의 함수 사용](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-parameter-override-functions.html)을 참조하세요.  
스택 템플릿에는 모든 파라미터 이름이 존재해야 합니다.

**TemplateConfiguration**  
필수 여부: 아니요  
`TemplateConfiguration`은 템플릿 구성 파일입니다. 이 작업의 입력 아티팩트에 파일을 포함합니다. 여기에는 템플릿 파라미터 값과 스택 정책이 포함될 수 있습니다. 템플릿 구성 파일 형식에 대한 자세한 내용은 [AWS CloudFormation 아티팩트](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-cfn-artifacts.html)를 참조하세요.  
템플릿 구성 파일 이름은 다음 형식을 따릅니다.  
`Artifactname::TemplateConfigurationFileName`  
`Artifactname`은 CodePipeline에 표시될 때 입력 아티팩트 이름입니다. 예를 들어, 아티팩트 이름이 `SourceArtifact`이며 파일 이름이 `test-configuration.json`인 소스 단계는 다음 예제에 표시된 대로 `TemplateConfiguration` 이름을 생성합니다.  

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

## 입력 아티팩트
<a name="action-reference-CloudFormation-input"></a>
+ **아티팩트 수:** `0 to 10`
+ **설명:** 입력으로 CloudFormation 작업은 다음과 같은 목적으로 선택적으로 아티팩트를 수락합니다.
  + 실행할 스택 템플릿 파일을 제공하기 위해. `TemplatePath` 파라미터를 참조하십시오.
  + 사용할 템플릿 구성 파일을 제공하기 위해. `TemplateConfiguration` 파라미터를 참조하십시오. 템플릿 구성 파일 형식에 대한 자세한 내용은 [AWS CloudFormation 아티팩트](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-cfn-artifacts.html)를 참조하세요.
  +  CloudFormation 스택의 일부로 배포할 Lambda 함수에 대한 아티팩트를 제공합니다.

## 출력 아티팩트
<a name="action-reference-CloudFormation-output"></a>
+ **아티팩트 수:** `0 to 1` 
+ **설명:** `OutputFileName` 파라미터를 지정하면 이 작업에 의해 지정된 이름의 JSON 파일이 포함되어 있는 출력 아티팩트가 생성됩니다. JSON 파일에는 CloudFormation 스택에 있는 출력 섹션의 콘텐츠가 포함됩니다.

   CloudFormation 작업에 대해 생성할 수 있는 출력 섹션에 대한 자세한 내용은 [출력](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html)을 참조하십시오.

## 출력 변수
<a name="action-reference-CloudFormation-variables"></a>

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

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

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

## 서비스 역할 권한: CloudFormation 작업
<a name="edit-role-cloudformation"></a>

CodePipeline이 작업을 실행하면 최소 권한으로 액세스를 유지하기 위해 CodePipeline 서비스 역할 정책에 파이프라인 리소스 ARN으로 범위가 적절하게 축소된 다음 최소 권한이 필요합니다. 예를 들어 다음을 정책 설명에 추가합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCFNStackAccess",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:UpdateStack",
                "cloudformation:DeleteStack",
                "cloudformation:DescribeStacks",
                "cloudformation:DescribeStackResources",
                "cloudformation:DescribeStackEvents",
                "cloudformation:GetTemplate",
                "cloudformation:DescribeChangeSet",
                "cloudformation:CreateChangeSet",
                "cloudformation:DeleteChangeSet",
                "cloudformation:ExecuteChangeSet"
            ],
            "Resource": [
                "arn:aws:cloudformation:*:111122223333:stack/[[cfnDeployStackNames]]/*"
            ]
        },
        {
            "Sid": "ValidateTemplate",
            "Effect": "Allow",
            "Action": [
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowIAMPassRole",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::111122223333:role/[[cfnExecutionRoles]]"
            ],
            "Condition": {
                "StringEqualsIfExists": {
                    "iam:PassedToService": [
                        "cloudformation.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

단, `cloudformation:DescribeStackEvents` 권한은 선택 사항이라는 점에 유의하십시오. 작업을 통해 보다 자세한 오류 메시지를 CloudFormation 표시할 수 있습니다. 파이프라인 오류 메시지에 리소스 세부 정보가 표시되지 않도록 하려면 IAM 역할에서 이 권한을 취소할 수 있습니다.

## 작업 선언
<a name="action-reference-CloudFormation-example"></a>

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

------

## 다음 사항도 참조하세요.
<a name="action-reference-CloudFormation-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [구성 속성 참조](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-action-reference.html) - *AWS CloudFormation 사용 설명서*의 이 참조 장에는 이러한 CodePipeline 파라미터에 대한 추가 설명과 예제가 나와 있습니다.
+ [AWS CloudFormation API 참조](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/) - *AWS CloudFormation API 참조*의 [CreateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html) 파라미터는 템플릿의 CloudFormation 스택 파라미터를 설명합니다.

# CloudFormation StackSets 배포 작업 참조
<a name="action-reference-StackSets"></a>

CodePipeline은 CI/CD 프로세스의 일부로 CloudFormation StackSets 작업을 수행할 수 있는 기능을 제공합니다. 스택 세트를 사용하여 단일 CloudFormation 템플릿을 사용하여 AWS 여러 리전의 AWS 계정에 스택을 생성합니다. 각 스택에 포함된 모든 리소스는 스택 세트의 CloudFormation 템플릿에 의해 정의됩니다. 스택 세트를 생성할 때 사용할 템플릿과 템플릿에 필요한 파라미터 및 기능을 지정합니다.

 CloudFormation StackSets 개념에 대한 자세한 내용은 *AWS CloudFormation 사용 설명서*의 [StackSets 개념](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html)을 참조하세요.

파이프라인을 함께 사용하는 두 가지 작업 유형을 통해 CloudFormation StackSets와 통합합니다.
+ `CloudFormationStackSet` 작업은 파이프라인 소스 위치에 저장된 템플릿에서 스택 세트 또는 스택 인스턴스를 생성하거나 업데이트합니다. 스택 세트를 생성하거나 업데이트할 때마다 해당 변경 내용을 지정된 인스턴스에 배포하기 시작합니다. 콘솔에서 파이프라인을 생성하거나 편집할 때 **CloudFormation 스택 세트** 작업 공급자를 선택할 수 있습니다.
+ `CloudFormationStackInstances` 작업은 `CloudFormationStackSet` 작업의 변경 내용을 지정된 인스턴스에 배포하고, 새 스택 인스턴스를 만들고, 지정된 인스턴스에 대한 파라미터 재정의를 정의합니다. 콘솔에서 파이프라인을 생성하거나 편집할 때 **CloudFormation Stack Instances** 작업 공급자를 선택할 수 있습니다.

이러한 작업을 사용하여 대상 AWS 계정 또는 대상 AWS Organizations 조직 단위 IDs.

**참고**  
대상 AWS Organizations 계정 또는 조직 단위 IDs에 배포하고 서비스 관리형 권한 모델을 사용하려면 AWS CloudFormation StackSets와 AWS Organizations 간에 신뢰할 수 있는 액세스를 활성화해야 합니다. 자세한 내용은 [AWS CloudFormation Stacksets를 사용하여 신뢰할 수 있는 액세스 활성화를 참조하세요](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-cloudformation.html#integrate-enable-ta-cloudformation).

**Topics**
+ [CloudFormation StackSets 작업 작동 방식](#action-reference-StackSets-concepts)
+ [파이프라인에서 StackSets 작업을 구성하는 방법](#action-reference-StackSets-bestpractices)
+ [`CloudFormationStackSet` 작업](#action-reference-StackSet)
+ [CloudFormationStackInstances 작업](#action-reference-StackInstances)
+ [서비스 역할 권한: `CloudFormationStackSet` 작업](#edit-role-cfn-stackset)
+ [서비스 역할 권한: `CloudFormationStackInstances` 작업](#edit-role-cfn-stackinstances)
+ [스택 세트 작업에 대한 권한 모델](#action-reference-StackSets-permissions)
+ [템플릿 파라미터 데이터 유형](#action-reference-StackSets-datatypes)
+ [다음 사항도 참조하세요.](#action-reference-CloudFormation-links)

## CloudFormation StackSets 작업 작동 방식
<a name="action-reference-StackSets-concepts"></a>

`CloudFormationStackSet` 작업은 작업이 처음 실행되는지 여부에 따라 리소스를 생성하거나 업데이트합니다.

`CloudFormationStackSet` 작업은 스택 세트를 생성하거나 업데이트하고 해당 변경 내용을 지정된 인스턴스에 배포합니다.****

**참고**  
이 작업을 사용하여 스택 인스턴스 추가를 포함하는 업데이트를 수행하면 새 인스턴스가 먼저 배포되고 업데이트가 마지막으로 완료됩니다. 새 인스턴스는 먼저 이전 버전을 받은 다음 모든 인스턴스에 업데이트가 적용됩니다.
+ 생성: 지정된 인스턴스가 없고 스택 세트가 존재하지 않는 경우 **CloudFormationStackSet** 작업을 수행하면 인스턴스를 생성하지 않고 스택 세트를 생성합니다.**
+ 업데이트: 이미 생성된 스택 세트에 대해 **CloudFormationStackSet** 작업을 실행하면 해당 작업이 스택 세트를 업데이트합니다.** 지정된 인스턴스가 없고 스택 세트가 이미 있는 경우 모든 인스턴스가 업데이트됩니다. 이 작업을 사용하여 특정 인스턴스를 업데이트하면 나머지 모든 인스턴스가 OUTDATED 상태로 전환됩니다.

  **CloudFormationStackSet** 작업을 사용하여 다음과 같은 방법으로 스택 세트를 업데이트할 수 있습니다.
  + 일부 또는 모든 인스턴스에서 템플릿을 업데이트합니다.
  + 일부 또는 모든 인스턴스의 파라미터를 업데이트합니다.
  + 스택 세트의 실행 역할을 업데이트합니다(관리자 역할에 지정된 실행 역할과 일치해야 함).
  + 권한 모델을 변경합니다(인스턴스가 생성되지 않은 경우에만 해당).
  + 스택 세트 권한 모델이 `Service Managed`인 경우 `AutoDeployment`를 활성화/비활성화합니다.
  + 스택 세트 권한 모델이 `Service Managed`인 경우 멤버 계정에서 위임된 관리자 역할을 합니다.
  + 관리자 역할을 업데이트합니다.
  + 스택 세트에 대한 설명을 업데이트합니다.
  + 스택 세트 업데이트에 배포 대상을 추가하여 새 스택 인스턴스를 생성합니다.

`CloudFormationStackInstances` 작업을 수행하면 새 스택 인스턴스가 생성되거나 오래된 스택 인스턴스가 업데이트됩니다. 스택 세트를 업데이트하면 인스턴스가 만료되지만, 스택 세트 내의 모든 인스턴스가 업데이트되지는 않습니다.
+ 생성: 스택이 이미 있는 경우 `CloudFormationStackInstances` 작업은 인스턴스만 업데이트하고 스택 인스턴스는 생성하지 않습니다.**
+ 업데이트: `CloudFormationStackSet` 작업이 수행된 후 템플릿 또는 파라미터가 일부 인스턴스에서만 업데이트된 경우 나머지는 `OUTDATED`로 표시됩니다.** 이후 파이프라인 단계에서 `CloudFormationStackInstances`는 스택의 나머지 인스턴스를 웨이브 형태로 업데이트하여 모든 인스턴스가 `CURRENT`로 표시되도록 합니다. 이 작업을 사용하여 인스턴스를 추가하거나 새 인스턴스 또는 기존 인스턴스의 파라미터를 재정의할 수도 있습니다.

업데이트의 일환으로 `CloudFormationStackSet` 및 `CloudFormationStackInstances` 작업은 새 배포 대상을 지정하여 새 스택 인스턴스를 만들 수 있습니다.

업데이트의 일부로, `CloudFormationStackSet` 및 `CloudFormationStackInstances` 작업은 스택 세트, 인스턴스 또는 리소스를 삭제하지 않습니다. 액션이 스택을 업데이트하지만 업데이트할 모든 인스턴스를 지정하지 않는 경우 업데이트하도록 지정되지 않은 인스턴스는 업데이트에서 제거되고 `OUTDATED` 상태로 설정됩니다.

배포 중에 스택 인스턴스에는 인스턴스에 대한 배포가 실패한 경우 `OUTDATED` 상태가 표시될 수도 있습니다.

## 파이프라인에서 StackSets 작업을 구성하는 방법
<a name="action-reference-StackSets-bestpractices"></a>

가장 좋은 방법은 스택 세트가 생성되고 처음에 하위 집합 또는 단일 인스턴스에 배포되도록 파이프라인을 구성하는 것입니다. 배포를 테스트하고 생성된 스택 세트를 확인한 후 나머지 인스턴스가 생성되고 업데이트되도록 `CloudFormationStackInstances` 작업을 추가하세요.

콘솔 또는 CLI를 사용하여 다음과 같이 권장 파이프라인 구조를 생성합니다.

1. 소스 작업(필수)을 사용하고 `CloudFormationStackSet` 작업을 배포 작업으로 사용하여 파이프라인을 생성합니다. 파이프라인을 실행합니다.

1. 파이프라인이 처음 실행되면 `CloudFormationStackSet` 작업을 통해 스택 세트와 하나 이상의 초기 인스턴스가 생성됩니다.** 스택 세트 생성을 확인하고 초기 인스턴스로의 배포를 검토하세요. 예를 들어, `us-east-1`이 지정된 리전인 계정 Account-A에 대한 초기 스택 세트 생성의 경우 스택 세트를 사용하여 스택 인스턴스가 생성됩니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/action-reference-StackSets.html)

1. 파이프라인을 편집하여 지정한 대상에 대한 스택 인스턴스를 생성/업데이트하는 두 번째 배포 작업으로 `CloudFormationStackInstances`를 추가하세요. 예를 들어, `us-east-2` 및 `eu-central-1` 리전이 지정된 계정 `Account-A`에 대한 스택 인스턴스 생성의 경우 나머지 스택 인스턴스가 생성되고 초기 인스턴스는 다음과 같이 업데이트된 상태로 유지됩니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/action-reference-StackSets.html)

1. 필요에 따라 파이프라인을 실행하여 스택 세트를 업데이트하고 스택 인스턴스를 업데이트하거나 생성합니다.

작업 구성에서 배포 대상을 제거한 스택 업데이트를 시작하면 업데이트하도록 지정되지 않은 스택 인스턴스가 배포에서 제거되고 OUTDATED 상태로 이동합니다. 예를 들어 작업 구성에서 `us-east-2` 리전이 제거된 계정 `Account-A`에 대한 스택 인스턴스 업데이트의 경우 다음과 같이 나머지 스택 인스턴스가 생성되고 제거된 인스턴스는 OUTDATE로 설정됩니다.


****  

| 스택 인스턴스 | 리전 | Status | 
| --- | --- | --- | 
| StackInstanceID-1 | us-east-1 | CURRENT | 
| StackInstanceID-2 | us-east-2 | OUTDATED | 
| StackInstanceID-3 | eu-central-1 | CURRENT | 

스택 세트 배포 모범 사례에 대한 자세한 내용은AWS CloudFormation 사용 설명서의 StackSets [모범 사례](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-bestpractices.html)를 참조하세요.**

## `CloudFormationStackSet` 작업
<a name="action-reference-StackSet"></a>

이 작업은 파이프라인 소스 위치에 저장된 템플릿에서 스택 세트를 생성하거나 업데이트합니다.

스택 세트를 정의하면 구성 파라미터에서 지정된 대상 계정 및 리전에서 스택을 생성, 업데이트 또는 삭제할 수 있습니다. 스택을 생성, 업데이트 또는 삭제하면 작업이 수행될 리전의 순서, 스택 작업이 중단되는 내결함성 비율, 스택에 대해 작업이 동시에 수행될 수 있는 계정 수 등의 기타 기본 설정도 지정할 수 있습니다.

스택 세트는 리전 리소스입니다. 한 AWS 리전에서 스택 세트를 생성하는 경우 다른 리전에서 스택 세트에 액세스할 수 없습니다.

이 작업을 스택 세트에 대한 업데이트 작업으로 사용하는 경우 하나 이상의 스택 인스턴스를 배포하지 않으면 스택을 업데이트할 수 없습니다.

**Topics**
+ [작업 유형](#action-reference-StackSet-type)
+ [구성 파라미터](#action-reference-StackSet-config)
+ [입력 아티팩트](#action-reference-StackSet-input)
+ [출력 아티팩트](#action-reference-StackSet-output)
+ [출력 변수](#action-reference-StackSet-variables)
+ [**CloudFormationStackSet** 작업 구성 예시](#action-reference-StackSet-example)

### 작업 유형
<a name="action-reference-StackSet-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `CloudFormationStackSet`
+ 버전: `1`

### 구성 파라미터
<a name="action-reference-StackSet-config"></a>

**StackSetName**  
필수 항목 여부: 예  
스택 세트와 연결할 이름입니다. 이 이름은 생성한 리전 내에서 고유해야 합니다.  
이름에는 영숫자 및 하이픈 문자만 포함될 수 있습니다. 알파벳 문자로 시작해야 하고 128자 이하여야 합니다.

**설명**  
필수 여부: 아니요  
스택 세트에 대한 설명입니다. 이를 사용하여 스택 세트의 용도나 기타 관련 정보를 설명할 수 있습니다.

**TemplatePath**  
필수 항목 여부: 예  
스택 세트의 리소스를 정의하는 템플릿의 위치입니다. 이는 최대 크기가 460,800바이트인 템플릿을 가리켜야 합니다.  
소스 아티팩트 이름 및 템플릿 파일의 경로를 다음 예제와 같이 `"InputArtifactName::TemplateFileName"` 형식으로 입력합니다.  

```
SourceArtifact::template.txt
```

**파라미터**  
필수 여부: 아니요  
배포 중에 업데이트되는 스택 세트의 템플릿 파라미터 목록입니다.  
파라미터를 리터럴 목록 또는 파일 경로로 제공할 수 있습니다.  
+ 다음과 같은 간편 구문 형식(`ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string`)으로 파라미터를 입력할 수 있습니다. 이러한 데이터 형식에 대한 자세한 내용은 [템플릿 파라미터 데이터 유형](#action-reference-StackSets-datatypes) 단원을 참조하세요.

  다음 예제는 `amzn-s3-demo-source-bucket` 값의 `BucketName`이라는 이름의 파라미터를 보여줍니다.

  ```
  ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket
  ```

  다음 예제는 여러 파라미터가 있는 항목을 보여줍니다.

  ```
                                                                                                        
    ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket
    ParameterKey=Asset1,ParameterValue=true              
    ParameterKey=Asset2,ParameterValue=true
  ```
+ 다음 예제와 같이 `"InputArtifactName::ParametersFileName"` 형식에 입력된 템플릿 파라미터 재지정 목록이 포함된 파일 위치를 입력할 수 있습니다.

  ```
  SourceArtifact::parameters.txt
  ```

  다음 예제에서는 `parameters.txt`에 대한 파일 콘텐츠를 보여줍니다.

  ```
  [
      {
          "ParameterKey": "KeyName",
          "ParameterValue": "true"
      },
      {
          "ParameterKey": "KeyName",
          "ParameterValue": "true"
      }
  ]
  ```

**기능**  
필수 여부: 아니요  
템플릿의 리소스 유형에 따라 템플릿이 리소스를 생성하고 업데이트할 수 있음을 나타냅니다.  
스택 템플릿에 IAM 리소스가 있거나 매크로가 포함된 템플릿에서 직접 스택을 만들 경우 이 속성을 사용해야 합니다. 이러한 방식으로 CloudFormation 작업이 성공적으로 작동하려면 다음 기능 중 하나를 사용해야 합니다.  
+ `CAPABILITY_IAM` 
+ `CAPABILITY_NAMED_IAM` 
 기능 사이에 공백 없이 쉼표를 사용하여 둘 이상의 기능을 지정할 수 있습니다. [**CloudFormationStackSet** 작업 구성 예시](#action-reference-StackSet-example)의 예제는 여러 기능이 있는 항목을 보여줍니다.

**PermissionModel**  
필수 여부: 아니요  
IAM 역할을 생성하고 관리하는 방법을 결정합니다. 필드를 지정하지 않으면 기본값이 사용됩니다. 자세한 내용은 [스택 세트 작업에 대한 권한 모델](#action-reference-StackSets-permissions) 단원을 참조하세요.  
유효값은 다음과 같습니다.  
+ `SELF_MANAGED`(기본값): 대상 계정에 배포하려면 관리자 및 실행 역할을 생성해야 합니다.
+ `SERVICE_MANAGED`: CloudFormation StackSets는 AWS Organizations에서 관리하는 계정에 배포하는 데 필요한 IAM 역할을 자동으로 생성합니다. 이를 위해서는 계정이 조직 멤버이어야 합니다.
이 파라미터는 스택 세트에 스택 인스턴스가 없는 경우에만 변경할 수 있습니다.

****AdministrationRoleArn****  
 CloudFormation StackSets는 여러 계정에서 작업을 수행하기 때문에 스택 세트를 생성하기 전에 해당 계정에서 필요한 권한을 정의해야 합니다.
필수 여부: 아니요  
이 파라미터는 SELF\$1MANAGED 권한 모델의 경우 선택 사항이며 SERVICE\$1MANAGED 권한 모델에는 사용되지 않습니다.
스택 세트 작업을 수행하는 데 사용되는 관리자 계정의 IAM 역할 ARN입니다.  
이름에는 영숫자 문자, \$1\$1=,.@- 문자 중 하나를 사용할 수 있으며 공백은 사용할 수 없습니다. 이름은 대/소문자를 구분하지 않습니다. 이 역할 이름은 최소 길이 20자, 최대 길이 2,048자이어야 합니다. 역할 이름은 계정 내에서 고유해야 합니다. 여기에 지정된 역할 이름은 기존 역할 이름이어야 합니다. 역할 이름을 지정하지 않으면 AWSCloudFormationStackSetAdministrationRole로 설정됩니다. ServiceManaged를 지정하는 경우 역할 이름을 정의해서는 안 됩니다.

****ExecutionRoleName****  
 CloudFormation StackSets는 여러 계정에서 작업을 수행하기 때문에 스택 세트를 생성하기 전에 해당 계정에서 필요한 권한을 정의해야 합니다.
필수 여부: 아니요  
이 파라미터는 SELF\$1MANAGED 권한 모델의 경우 선택 사항이며 SERVICE\$1MANAGED 권한 모델에는 사용되지 않습니다.
스택 세트 작업을 수행하는 데 사용되는 대상 계정의 IAM 역할 이름입니다. 이름에는 영숫자 문자, \$1\$1=,.@- 문자 중 하나를 사용할 수 있으며 공백은 사용할 수 없습니다. 이름은 대/소문자를 구분하지 않습니다. 이 역할 이름은 최소 길이 1자, 최대 길이 64자이어야 합니다. 역할 이름은 계정 내에서 고유해야 합니다. 여기에 지정된 역할 이름은 기존 역할 이름이어야 합니다. 사용자 정의된 실행 역할을 사용하는 경우 이 역할을 지정하지 마십시오. 역할 이름을 지정하지 않으면 `AWSCloudFormationStackSetExecutionRole`로 설정됩니다. Service\$1Managed를 true로 설정하는 경우 역할 이름을 정의해서는 안 됩니다.

****OrganizationsAutoDeployment****  
필수 여부: 아니요  
이 파라미터는 SERVICE\$1MANAGED 권한 모델의 경우 선택 사항이며 SELF\$1MANAGED 권한 모델에는 사용되지 않습니다.
대상 조직 또는 조직 단위(OU)에 AWS 추가된 Organizations 계정에 CloudFormation StackSets가 자동으로 배포되는지 여부를 설명합니다. `OrganizationsAutoDeployment`가 지정된 경우 `DeploymentTargets` 및 `Regions`를 지정하지 마십시오.  
`OrganizationsAutoDeployment`에 입력이 제공되지 않은 경우 기본값은 `Disabled`입니다.
유효값은 다음과 같습니다.  
+ `Enabled`. 필수 여부: 아니요.

  StackSets는 지정된 리전의 대상 조직 또는 조직 단위(OU)에 추가된 AWS Organizations 계정에 자동으로 추가 스택 인스턴스를 배포합니다. 계정이 대상 조직 또는 OU에서 제거되면 CloudFormation StackSets는 지정된 리전의 계정에서 스택 인스턴스를 삭제합니다.
+ `Disabled`. 필수 여부: 아니요.

  StackSets는 지정된 리전의 대상 AWS 조직 또는 조직 단위(OU)에 추가된 추가 스택 인스턴스를 Organizations 계정에 자동으로 배포하지 않습니다.
+ `EnabledWithStackRetention`. 필수 여부: 아니요.

  대상 조직 또는 OU에서 계정이 제거될 때 스택 리소스가 유지됩니다.

****DeploymentTargets****  
필수 여부: 아니요  
SERVICE\$1MANAGED 권한 모델의 경우 배포 대상에 조직 루트 ID 또는 조직 단위 ID를 제공할 수 있습니다. SELF\$1MANAGED 권한 모델의 경우 계정만 제공할 수 있습니다.
이 파라미터를 선택한 경우 **리전**도 선택해야 합니다.
스택 세트 인스턴스를 생성/업데이트해야 하는 AWS 계정 또는 조직 단위 IDs 목록입니다.  
+ **계정**:

  계정을 리터럴 목록 또는 파일 경로로 제공할 수 있습니다.
  + 리터럴: 다음 예제와 같이 간편 구문 형식 `account_ID,account_ID`로 파라미터를 입력합니다.**

    ```
    111111222222,333333444444
    ```
  + *파일 경로: * 스택 세트 인스턴스를 생성/업데이트하고 형식으로 입력해야 하는 AWS 계정 목록이 포함된 파일의 위치입니다`InputArtifactName::AccountsFileName`. 파일 경로를 사용하여 **계정** 또는 **OrganizationalUnitIds**를 지정하는 경우 파일 형식은 다음 예제와 같이 JSON이어야 합니다.

    ```
    SourceArtifact::accounts.txt
    ```

    다음 예제에서는 `accounts.txt`에 대한 파일 콘텐츠를 보여줍니다.

    ```
    [
        "111111222222"
    ]
    ```

    다음 예제는 두 개 이상의 계정을 나열할 때 `accounts.txt`의 파일 내용을 보여줍니다.

    ```
    [
        "111111222222","333333444444"
    ]
    ```
+ **OrganizationalUnitIds**: 
**참고**  
이 파라미터는 SERVICE\$1MANAGED 권한 모델의 경우 선택 사항이며 SELF\$1MANAGED 권한 모델에는 사용되지 않습니다. **OrganizationsAutoDeployment**를 선택한 경우에는 이 옵션을 사용하지 마십시오.

  연결된 스택 인스턴스를 업데이트할 AWS 조직 단위입니다.

  조직 단위 ID를 리터럴 목록 또는 파일 경로로 제공할 수 있습니다.
  + 리터럴: 다음 예제와 같이 쉼표로 구분하여 문자열 배열을 입력합니다.**

    ```
    ou-examplerootid111-exampleouid111,ou-examplerootid222-exampleouid222
    ```
  + 파일 경로: 스택 세트 인스턴스를 만들거나 업데이트할 OrganizationalUnitIds 목록이 들어 있는 파일의 위치입니다.** 파일 경로를 사용하여 **계정** 또는 **OrganizationalUnitIds**를 지정하는 경우 파일 형식은 다음 예제와 같이 JSON이어야 합니다.

    파일 경로를 `InputArtifactName::OrganizationalUnitIdsFileName` 형식으로 입력합니다.

    ```
    SourceArtifact::OU-IDs.txt
    ```

    다음 예제에서는 `OU-IDs.txt`에 대한 파일 콘텐츠를 보여줍니다.

    ```
    [
        "ou-examplerootid111-exampleouid111","ou-examplerootid222-exampleouid222"
    ]
    ```

****리전****  
필수 여부: 아니요  
이 파라미터를 선택한 경우 **DeploymentTargets**도 선택해야 합니다.
스택 세트 인스턴스가 생성되거나 업데이트되는 AWS 리전 목록입니다. 리전은 입력한 순서대로 업데이트됩니다.  
다음 예제와 `Region1,Region2`같이 형식으로 유효한 AWS 리전 목록을 입력합니다.  

```
us-west-2,us-east-1
```

****FailureTolerancePercentage****  
필수 여부: 아니요  
가 해당 리전에서 작업을 CloudFormation 중지하기 전에이 스택 작업이 실패할 수 있는 리전당 계정의 비율입니다. 리전에서 작업이 중지된 경우 후속 리전에서 작업을 시도 CloudFormation 하지 않습니다. 지정된 백분율을 기준으로 계정 수를 계산할 때 다음 정수**로 CloudFormation 내림합니다.

****MaxConcurrentPercentage****  
필수 여부: 아니요  
한 번에 이 작업을 수행할 최대 계정 백분율입니다. 지정된 백분율을 기준으로 계정 수를 계산할 때 다음 정수**로 CloudFormation 내림합니다. 반올림하면 0이 되는 경우는 대신 숫자를 1로 CloudFormation 설정합니다. 이 설정을 사용하여 최대값을 지정하지만 대규모 배포의 경우 동시에 실행된 실제 계정 수는 서비스 조절로 인해 낮아질 수 있습니다.**

**RegionConcurrencyType**  
필수 여부: 아니요  
리전 동시성 배포 파라미터를 구성하여 스택 세트를 AWS 리전 에 순차적으로 배포할지 병렬로 배포할지 지정할 수 있습니다. 여러에 스택을 병렬 AWS 리전 로 배포하도록 리전 동시성을 지정하면 전체 배포 시간이 빨라질 수 있습니다.  
+ 병렬: 리전의 배포 실패가 지정된 내결함성을 초과하지 않는 한 스택 세트 배포가 동시에 수행됩니다.**
+ 순차: 리전의 배포 실패가 지정된 내결함성을 초과하지 않는 한 스택 세트 배포가 동시에 수행됩니다.** 기본 선택 항목은 [순차(Sequential)] 배포입니다.

**ConcurrencyMode**  
필수 여부: 아니요  
동시성 모드 사용하면 스택 세트 작업 중에 동시성 수준이 작동하는 방식을 선택할 수 있습니다(엄격한 내결함성 또는 소프트 내결함성 포함). **엄격한 내결함성**을 사용하면 스택 세트 작업이 실패할 때마다 동시성이 감소하므로 배포 속도가 느려집니다. **소프트 내결함성**은 CloudFormation 안전 기능을 계속 활용하면서 배포 속도를 우선시합니다.  
+ `STRICT_FAILURE_TOLERANCE`: 이 옵션은 실패한 계정 수가 특정 내결함성을 초과하지 않도록 동시성 수준을 동적으로 낮춥니다. 이는 기본 설정 동작입니다.
+ `SOFT_FAILURE_TOLERANCE`: 이 옵션은 내결함성을 실제 동시성에서 분리합니다. 이렇게 하면 실패 횟수에 관계없이 설정된 동시성 수준에서 스택 세트 작업을 실행할 수 있습니다.

**CallAs**  
필수 여부: 아니요  
이 파라미터는 `SERVICE_MANAGED` 권한 모델의 경우 선택 사항이며 `SELF_MANAGED` 권한 모델에는 사용되지 않습니다.
조직의 관리 계정에서 역할을 하는지 아니면 멤버 계정에서 위임된 관리자 역할을 하는지 지정합니다.  
이 파라미터가 `DELEGATED_ADMIN`으로 설정된 경우 파이프라인 IAM 역할에 `organizations:ListDelegatedAdministrators` 권한이 있는지 확인합니다. 그렇지 않으면 실행 중에 다음과 유사한 오류와 함께 작업이 실패합니다. `Account used is not a delegated administrator` 
+ `SELF`: 스택 세트 배포는 관리 계정에 로그인한 상태에서 서비스 관리형 권한을 사용합니다.
+ `DELEGATED_ADMIN`: 스택 세트 배포는 위임 관리자 계정에 로그인한 상태에서 서비스 관리형 권한을 사용합니다.

### 입력 아티팩트
<a name="action-reference-StackSet-input"></a>

`CloudFormationStackSet` 작업에 설정된 스택용 템플릿이 포함된 입력 아티팩트를 하나 이상 포함해야 합니다. 배포 대상, 계정, 파라미터 목록에 더 많은 입력 아티팩트를 포함할 수 있습니다.
+ **아티팩트 수:** `1 to 3`
+ **설명**: 다음을 제공할 아티팩트를 포함할 수 있습니다.
  + 스택 템플릿 파일. `TemplatePath` 파라미터를 참조하십시오.
  + 파라미터 파일. `Parameters` 파라미터를 참조하십시오.
  + 계정 파일. `DeploymentTargets` 파라미터를 참조하십시오.

### 출력 아티팩트
<a name="action-reference-StackSet-output"></a>
+ **아티팩트 수:** `0` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

### 출력 변수
<a name="action-reference-StackSet-variables"></a>

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

자세한 내용은 [변수 참조](reference-variables.md) 단원을 참조하십시오.

### **CloudFormationStackSet** 작업 구성 예시
<a name="action-reference-StackSet-example"></a>

다음 예시는 **CloudFormationStackSet** 작업에 대한 작업 구성을 보여줍니다.

#### 자체 관리형 권한 모델의 예
<a name="action-reference-StackSet-example-selfmanaged"></a>

다음 예제에서는 입력한 배포 대상이 AWS 계정 ID인 **CloudFormationStackSet** 작업을 보여줍니다.

------
#### [ YAML ]

```
Name: CreateStackSet
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: CloudFormationStackSet
  Version: '1'
RunOrder: 1
Configuration:
  DeploymentTargets: '111111222222'
  FailureTolerancePercentage: '20'
  MaxConcurrentPercentage: '25'
  PermissionModel: SELF_MANAGED
  Regions: us-east-1
  StackSetName: my-stackset
  TemplatePath: 'SourceArtifact::template.json'
OutputArtifacts: []
InputArtifacts:
  - Name: SourceArtifact
Region: us-west-2
Namespace: DeployVariables
```

------
#### [ JSON ]

```
{
    "Name": "CreateStackSet",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "CloudFormationStackSet",
        "Version": "1"
    },
    "RunOrder": 1,
    "Configuration": {
        "DeploymentTargets": "111111222222",
        "FailureTolerancePercentage": "20",
        "MaxConcurrentPercentage": "25",
        "PermissionModel": "SELF_MANAGED",
        "Regions": "us-east-1",
        "StackSetName": "my-stackset",
        "TemplatePath": "SourceArtifact::template.json"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "SourceArtifact"
        }
    ],
    "Region": "us-west-2",
    "Namespace": "DeployVariables"
}
```

------

#### 서비스 관리형 권한 모델의 예
<a name="action-reference-StackSet-example-servicemanaged"></a>

다음 예제는 스택 보존을 통해 AWS Organizations에 대한 자동 배포 옵션이 활성화된 서비스 관리형 권한 모델에 대한 **CloudFormationStackSet** 작업을 보여줍니다.

------
#### [ YAML ]

```
Name: Deploy
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: CloudFormationStackSet
  Version: '1'
RunOrder: 1
Configuration:
  Capabilities: 'CAPABILITY_IAM,CAPABILITY_NAMED_IAM'
  OrganizationsAutoDeployment: EnabledWithStackRetention
  PermissionModel: SERVICE_MANAGED
  StackSetName: stacks-orgs
  TemplatePath: 'SourceArtifact::template.json'
OutputArtifacts: []
InputArtifacts:
  - Name: SourceArtifact
Region: eu-central-1
Namespace: DeployVariables
```

------
#### [ JSON ]

```
{
    "Name": "Deploy",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "CloudFormationStackSet",
        "Version": "1"
    },
    "RunOrder": 1,
    "Configuration": {
        "Capabilities": "CAPABILITY_IAM,CAPABILITY_NAMED_IAM",
        "OrganizationsAutoDeployment": "EnabledWithStackRetention",
        "PermissionModel": "SERVICE_MANAGED",
        "StackSetName": "stacks-orgs",
        "TemplatePath": "SourceArtifact::template.json"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "SourceArtifact"
        }
    ],
    "Region": "eu-central-1",
    "Namespace": "DeployVariables"
}
```

------

## CloudFormationStackInstances 작업
<a name="action-reference-StackInstances"></a>

이 작업은 새 인스턴스를 생성하고 지정된 인스턴스에 스택 세트를 배포합니다. 스택 인스턴스는 리전 내 대상 계정에서 스택에 대한 참조입니다. 스택 인스턴스는 스택 없이 존재할 수 있습니다. 예를 들어, 스택 생성이 성공적이지 않은 경우 스택 인스턴스는 스택 생성 실패에 대한 이유를 표시합니다. 스택 인스턴스는 하나의 스택 세트에만 연결됩니다.

스택 세트를 처음 생성한 후에는 `CloudFormationStackInstances`를 사용하여 새 스택 인스턴스를 추가할 수 있습니다. 스택 세트 인스턴스 생성 또는 업데이트 작업 중에 스택 인스턴스 수준에서 템플릿 파라미터 값을 재정의할 수 있습니다.

각 스택 세트에는 템플릿 하나와 템플릿 파라미터 세트가 있습니다. 템플릿 또는 템플릿 파라미터를 업데이트하면 전체 세트에 대해 업데이트됩니다. 그러면 변경 내용이 해당 인스턴스에 배포될 때까지 모든 인스턴스 상태가 `OUTDATED`로 설정됩니다.

예를 들어 템플릿에 값이 `prod`인 `stage`의 파라미터가 포함된 경우 특정 인스턴스의 파라미터 값을 재정의하려면 해당 파라미터의 값을 `beta` 또는 `gamma`로 재정의할 수 있습니다.

**Topics**
+ [작업 유형](#action-reference-StackInstances-type)
+ [구성 파라미터](#action-reference-StackInstances-config)
+ [입력 아티팩트](#action-reference-StackInstances-input)
+ [출력 아티팩트](#action-reference-StackInstances-output)
+ [출력 변수](#action-reference-StackInstances-variables)
+ [예제 작업 구성](#action-reference-StackInstances-example)

### 작업 유형
<a name="action-reference-StackInstances-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `CloudFormationStackInstances`
+ 버전: `1`

### 구성 파라미터
<a name="action-reference-StackInstances-config"></a>

**StackSetName**  
필수 항목 여부: 예  
스택 세트와 연결할 이름입니다. 이 이름은 생성한 리전 내에서 고유해야 합니다.  
이름에는 영숫자 및 하이픈 문자만 포함될 수 있습니다. 알파벳 문자로 시작해야 하고 128자 이하여야 합니다.

****DeploymentTargets****  
필수 여부: 아니요  
SERVICE\$1MANAGED 권한 모델의 경우 배포 대상에 조직 루트 ID 또는 조직 단위 ID를 제공할 수 있습니다. SELF\$1MANAGED 권한 모델의 경우 계정만 제공할 수 있습니다.
이 파라미터를 선택한 경우 **리전**도 선택해야 합니다.
스택 세트 인스턴스를 생성/업데이트해야 하는 AWS 계정 또는 조직 단위 IDs 목록입니다.  
+ **계정**:

  계정을 리터럴 목록 또는 파일 경로로 제공할 수 있습니다.
  + 리터럴: 다음 예제와 같이 간편 구문 형식 `account_ID,account_ID`로 파라미터를 입력합니다.**

    ```
    111111222222,333333444444
    ```
  + *파일 경로: * 스택 세트 인스턴스를 생성/업데이트하고 형식으로 입력해야 하는 AWS 계정 목록이 포함된 파일의 위치입니다`InputArtifactName::AccountsFileName`. 파일 경로를 사용하여 **계정** 또는 **OrganizationalUnitIds**를 지정하는 경우 파일 형식은 다음 예제와 같이 JSON이어야 합니다.

    ```
    SourceArtifact::accounts.txt
    ```

    다음 예제에서는 `accounts.txt`에 대한 파일 콘텐츠를 보여줍니다.

    ```
    [
        "111111222222"
    ]
    ```

    다음 예제는 두 개 이상의 계정을 나열할 때 `accounts.txt`의 파일 내용을 보여줍니다.

    ```
    [
        "111111222222","333333444444"
    ]
    ```
+ **OrganizationalUnitIds**: 
**참고**  
이 파라미터는 SERVICE\$1MANAGED 권한 모델의 경우 선택 사항이며 SELF\$1MANAGED 권한 모델에는 사용되지 않습니다. **OrganizationsAutoDeployment**를 선택한 경우에는 이 옵션을 사용하지 마십시오.

  연결된 스택 인스턴스를 업데이트할 AWS 조직 단위입니다.

  조직 단위 ID를 리터럴 목록 또는 파일 경로로 제공할 수 있습니다.
  + 리터럴: 다음 예제와 같이 쉼표로 구분하여 문자열 배열을 입력합니다.**

    ```
    ou-examplerootid111-exampleouid111,ou-examplerootid222-exampleouid222
    ```
  + 파일 경로: 스택 세트 인스턴스를 만들거나 업데이트할 OrganizationalUnitIds 목록이 들어 있는 파일의 위치입니다.** 파일 경로를 사용하여 **계정** 또는 **OrganizationalUnitIds**를 지정하는 경우 파일 형식은 다음 예제와 같이 JSON이어야 합니다.

    파일 경로를 `InputArtifactName::OrganizationalUnitIdsFileName` 형식으로 입력합니다.

    ```
    SourceArtifact::OU-IDs.txt
    ```

    다음 예제에서는 `OU-IDs.txt`에 대한 파일 콘텐츠를 보여줍니다.

    ```
    [
        "ou-examplerootid111-exampleouid111","ou-examplerootid222-exampleouid222"
    ]
    ```

****리전****  
필수 항목 여부: 예  
이 파라미터를 선택한 경우 **DeploymentTargets**도 선택해야 합니다.
스택 세트 인스턴스가 생성되거나 업데이트되는 AWS 리전 목록입니다. 리전은 입력한 순서대로 업데이트됩니다.  
다음 예제와 `Region1,Region2`같이 형식으로 유효한 AWS 리전 목록을 입력합니다.  

```
us-west-2,us-east-1
```

**ParameterOverrides**  
필수 여부: 아니요  
선택한 스택 인스턴스에서 재정의할 스택 세트 파라미터의 목록입니다. 재정의된 파라미터 값은 지정된 계정 및 리전의 모든 스택 인스턴스에 적용됩니다.  
파라미터를 리터럴 목록 또는 파일 경로로 제공할 수 있습니다.  
+ 다음과 같은 간편 구문 형식(`ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string`)으로 파라미터를 입력할 수 있습니다. 이러한 데이터 형식에 대한 자세한 내용은 [템플릿 파라미터 데이터 유형](#action-reference-StackSets-datatypes) 단원을 참조하세요.

  다음 예제는 `amzn-s3-demo-source-bucket` 값의 `BucketName`이라는 이름의 파라미터를 보여줍니다.

  ```
  ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket
  ```

  다음 예제는 여러 파라미터가 있는 항목을 보여줍니다.

  ```
                                                                                                        
    ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket
    ParameterKey=Asset1,ParameterValue=true              
    ParameterKey=Asset2,ParameterValue=true
  ```
+ 다음 예제와 같이 `InputArtifactName::ParameterOverridessFileName` 형식에 입력된 템플릿 파라미터 재지정 목록이 포함된 파일 위치를 입력할 수 있습니다.

  ```
  SourceArtifact::parameter-overrides.txt
  ```

  다음 예제에서는 `parameter-overrides.txt`에 대한 파일 콘텐츠를 보여줍니다.

  ```
  [
      {
          "ParameterKey": "KeyName",
          "ParameterValue": "true"
      },
      {
          "ParameterKey": "KeyName",
          "ParameterValue": "true"
      }
  ]
  ```

****FailureTolerancePercentage****  
필수 여부: 아니요  
가 해당 리전에서 작업을 CloudFormation 중지하기 전에이 스택 작업이 실패할 수 있는 리전당 계정의 비율입니다. 리전에서 작업이 중지된 경우 후속 리전에서 작업을 시도 CloudFormation 하지 않습니다. 지정된 백분율을 기준으로 계정 수를 계산할 때 다음 정수**로 CloudFormation 내림합니다.

****MaxConcurrentPercentage****  
필수 여부: 아니요  
한 번에 이 작업을 수행할 최대 계정 백분율입니다. 지정된 백분율을 기준으로 계정 수를 계산할 때 다음 정수**로 CloudFormation 내림합니다. 반올림하면 0이 되는 경우는 대신 숫자를 1로 CloudFormation 설정합니다. 최대값을 지정하지만 대규모 배포의 경우 동시에 실행된 실제 계정 수는 서비스 조절로 인해 낮아질 수 있습니다.**

**RegionConcurrencyType**  
필수 여부: 아니요  
리전 동시성 배포 파라미터를 구성하여 스택 세트를 AWS 리전 에 순차적으로 배포할지 병렬로 배포할지 지정할 수 있습니다. 여러에 스택을 병렬 AWS 리전 로 배포하도록 리전 동시성을 지정하면 전체 배포 시간이 빨라질 수 있습니다.  
+ 병렬: 리전의 배포 실패가 지정된 내결함성을 초과하지 않는 한 스택 세트 배포가 동시에 수행됩니다.**
+ 순차: 리전의 배포 실패가 지정된 내결함성을 초과하지 않는 한 스택 세트 배포가 동시에 수행됩니다.** 기본 선택 항목은 [순차(Sequential)] 배포입니다.

**ConcurrencyMode**  
필수 여부: 아니요  
동시성 모드 사용하면 스택 세트 작업 중에 동시성 수준이 작동하는 방식을 선택할 수 있습니다(엄격한 내결함성 또는 소프트 내결함성 포함). **엄격한 내결함성**을 사용하면 스택 세트 작업이 실패할 때마다 동시성이 감소하므로 배포 속도가 느려집니다. **소프트 내결함성**은 CloudFormation 안전 기능을 계속 활용하면서 배포 속도를 우선시합니다.  
+ `STRICT_FAILURE_TOLERANCE`: 이 옵션은 실패한 계정 수가 특정 내결함성을 초과하지 않도록 동시성 수준을 동적으로 낮춥니다. 이는 기본 설정 동작입니다.
+ `SOFT_FAILURE_TOLERANCE`: 이 옵션은 내결함성을 실제 동시성에서 분리합니다. 이렇게 하면 실패 횟수에 관계없이 설정된 동시성 수준에서 스택 세트 작업을 실행할 수 있습니다.

**CallAs**  
필수 여부: 아니요  
이 파라미터는 `SERVICE_MANAGED` 권한 모델의 경우 선택 사항이며 `SELF_MANAGED` 권한 모델에는 사용되지 않습니다.
조직의 관리 계정에서 역할을 하는지 아니면 멤버 계정에서 위임된 관리자 역할을 하는지 지정합니다.  
이 파라미터가 `DELEGATED_ADMIN`으로 설정된 경우 파이프라인 IAM 역할에 `organizations:ListDelegatedAdministrators` 권한이 있는지 확인합니다. 그렇지 않으면 실행 중에 다음과 유사한 오류와 함께 작업이 실패합니다. `Account used is not a delegated administrator` 
+ `SELF`: 스택 세트 배포는 관리 계정에 로그인한 상태에서 서비스 관리형 권한을 사용합니다.
+ `DELEGATED_ADMIN`: 스택 세트 배포는 위임 관리자 계정에 로그인한 상태에서 서비스 관리형 권한을 사용합니다.

### 입력 아티팩트
<a name="action-reference-StackInstances-input"></a>

`CloudFormationStackInstances`는 배포 대상 및 파라미터를 나열하는 아티팩트를 포함할 수 있습니다.
+ **아티팩트 수:** `0 to 2`
+ **설명**: 선택적으로 스택 세트 작업은 다음의 용도로 아티팩트를 입력으로 수락합니다.
  + 사용할 파라미터 파일을 제공합니다. `ParameterOverrides` 파라미터를 참조하십시오.
  + 사용할 대상 계정 파일을 제공합니다. `DeploymentTargets` 파라미터를 참조하십시오.

### 출력 아티팩트
<a name="action-reference-StackInstances-output"></a>
+ **아티팩트 수:** `0` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

### 출력 변수
<a name="action-reference-StackInstances-variables"></a>

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

자세한 내용은 [변수 참조](reference-variables.md) 단원을 참조하십시오.

### 예제 작업 구성
<a name="action-reference-StackInstances-example"></a>

다음 예시는 **CloudFormationStackInstances** 작업에 대한 작업 구성을 보여줍니다.

#### 자체 관리형 권한 모델의 예
<a name="action-reference-StackInstances-example-selfmanaged"></a>

다음 예제에서는 입력한 배포 대상이 AWS 계정 ID인 **CloudFormationStackInstances** 작업을 보여줍니다`111111222222`.

------
#### [ YAML ]

```
Name: my-instances
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: CloudFormationStackInstances
  Version: '1'
RunOrder: 2
Configuration:
  DeploymentTargets: '111111222222'
  Regions: 'us-east-1,us-east-2,us-west-1,us-west-2'
  StackSetName: my-stackset
OutputArtifacts: []
InputArtifacts:
  - Name: SourceArtifact
Region: us-west-2
```

------
#### [ JSON ]

```
{
    "Name": "my-instances",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "CloudFormationStackInstances",
        "Version": "1"
    },
    "RunOrder": 2,
    "Configuration": {
        "DeploymentTargets": "111111222222",
        "Regions": "us-east-1,us-east-2,us-west-1,us-west-2",
        "StackSetName": "my-stackset"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "SourceArtifact"
        }
    ],
    "Region": "us-west-2"
}
```

------

#### 서비스 관리형 권한 모델의 예
<a name="action-reference-StackInstances-example-servicemanaged"></a>

다음 예제는 배포 대상이 AWS Organizations 조직 단위 ID인 서비스 관리형 권한 모델에 대한 **CloudFormationStackInstances** 작업을 보여줍니다`ou-1111-1example`.

------
#### [ YAML ]

```
Name: Instances
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: CloudFormationStackInstances
  Version: '1'
RunOrder: 2
Configuration:
  DeploymentTargets: ou-1111-1example
  Regions: us-east-1
  StackSetName: my-stackset
OutputArtifacts: []
InputArtifacts:
  - Name: SourceArtifact
Region: eu-central-1
```

------
#### [ JSON ]

```
{
    "Name": "Instances",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "CloudFormationStackInstances",
        "Version": "1"
    },
    "RunOrder": 2,
    "Configuration": {
        "DeploymentTargets": "ou-1111-1example",
        "Regions": "us-east-1",
        "StackSetName": "my-stackset"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "SourceArtifact"
        }
    ],
    "Region": "eu-central-1"
}
```

------

## 서비스 역할 권한: `CloudFormationStackSet` 작업
<a name="edit-role-cfn-stackset"></a>

 CloudFormation StackSets 작업의 경우 다음과 같은 최소 권한이 필요합니다.

`CloudFormationStackSet` 작업의 경우 다음을 정책 설명에 추가합니다.

```
{
    "Effect": "Allow",
    "Action": [
        "cloudformation:CreateStackSet",
        "cloudformation:UpdateStackSet",
        "cloudformation:CreateStackInstances",
        "cloudformation:DescribeStackSetOperation",
        "cloudformation:DescribeStackSet",
        "cloudformation:ListStackInstances"
    ],
    "Resource": "resource_ARN"
},
```

## 서비스 역할 권한: `CloudFormationStackInstances` 작업
<a name="edit-role-cfn-stackinstances"></a>

`CloudFormationStackInstances` 작업의 경우 다음을 정책 설명에 추가합니다.

```
{
    "Effect": "Allow",
    "Action": [
        "cloudformation:CreateStackInstances",
        "cloudformation:DescribeStackSetOperation"
    ],
    "Resource": "resource_ARN"
},
```

## 스택 세트 작업에 대한 권한 모델
<a name="action-reference-StackSets-permissions"></a>

 CloudFormation StackSets는 여러 계정에서 작업을 수행하기 때문에 스택 세트를 생성하기 전에 해당 계정에서 필요한 권한을 정의해야 합니다. 자체 관리형 권한 또는 서비스 관리형 권한을 통해 권한을 정의할 수 있습니다.

자체 관리형 권한을 사용하면 StackSets에 필요한 두 개의 IAM 역할을 생성할 수 있습니다. 하나는 스택 세트를 정의하는 계정의 AWSCloudFormationStackSetAdministrationRole과 같은 관리자 역할이고, 다른 하나는 스택 세트 인스턴스를 배포하는 각 계정에서 AWSCloudFormationStackSetExecutionRole과 같은 실행 역할을 생성합니다. 이 권한 모델을 사용하여 StackSets는 사용자에게 IAM 역할을 생성할 권한이 있는 모든 AWS 계정에 배포할 수 있습니다. 자세한 내용은 *AWS CloudFormation 사용 설명서*의 [자체 관리형 권한 부여](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html)를 참조하세요.

**참고**  
 CloudFormation StackSets는 여러 계정에서 작업을 수행하기 때문에 스택 세트를 생성하기 전에 해당 계정에서 필요한 권한을 정의해야 합니다.

서비스 관리형 권한을 사용하면 AWS Organizations에서 관리하는 계정에 스택 인스턴스를 배포할 수 있습니다. 이 권한 모델을 사용하면 필요한 IAM 역할을 만들 필요가 없습니다. StackSets가 사용자를 대신하여 IAM 역할을 생성하기 때문입니다. 이 모델을 사용하면 나중에 조직에 추가되는 계정에 자동 배포를 활성화할 수도 있습니다. *AWS CloudFormation 사용 설명서*의 [AWS Organizations에서 신뢰할 수 있는 액세스 활성화](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-enable-trusted-access.html)를 참조하세요.

## 템플릿 파라미터 데이터 유형
<a name="action-reference-StackSets-datatypes"></a>

스택 세트 작업에 사용되는 템플릿 파라미터에는 다음 데이터 유형이 포함됩니다. 자세한 내용은 [DescribeStackSet](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html)를 참조하세요.

ParameterKey  
+ 설명: 파라미터와 연결된 키입니다. 특정 파라미터에 키와 값을 지정하지 않으면 템플릿에 지정된 기본값을 AWS CloudFormation 사용합니다.
+ 예제:

  ```
  "ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket"
  ```

ParameterValue  
+ 설명: 파라미터와 연결된 입력 값입니다.
+ 예제:

  ```
  "ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket"
  ```

UsePreviousValue  
+ 스택 업데이트 중에는 스택에서 지정된 파라미터 키에 대해 사용 중인 기존 파라미터 값을 사용하세요. `true`를 지정한 경우 파라미터 값을 지정하지 마십시오.
+ 예제:

  ```
  "ParameterKey=Asset1,UsePreviousValue=true"
  ```

각 스택 세트에는 템플릿 하나와 템플릿 파라미터 세트가 있습니다. 템플릿 또는 템플릿 파라미터를 업데이트하면 전체 세트에 대해 업데이트됩니다. 그러면 변경 내용이 해당 인스턴스에 배포될 때까지 모든 인스턴스 상태가 OUTDATED로 설정됩니다.

예를 들어 템플릿에 값이 `prod`인 `stage`의 파라미터가 포함된 경우 특정 인스턴스의 파라미터 값을 재정의하려면 해당 파라미터의 값을 `beta` 또는 `gamma`로 재정의할 수 있습니다.

## 다음 사항도 참조하세요.
<a name="action-reference-CloudFormation-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [파라미터 유형](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#parameters-section-structure-properties-type) - *AWS CloudFormation 사용 설명서의* 이 참조 챕터에서는 CloudFormation 템플릿 파라미터에 대한 자세한 설명과 예제를 제공합니다.
+ 모범 사례 - 스택 세트 배포 모범 사례에 대한 자세한 내용은AWS CloudFormation 사용 설명서의 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-bestpractices.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-bestpractices.html)을 참조하세요.**
+ [AWS CloudFormation API 참조](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/) - 스택 세트 작업에 사용되는 파라미터에 대한 자세한 내용은 *AWS CloudFormation API 참조*에서 다음 CloudFormation 작업을 참조할 수 있습니다.

  
  + [CreateStackSet](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStackSet.html) 작업은 스택 세트를 생성합니다.
  + [UpdateStackSet](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStackSet.html) 작업은 지정된 계정 및 리전의 스택 세트 및 관련 스택 인스턴스를 업데이트합니다. 스택 세트를 업데이트하여 만든 스택 세트 작업이 완전히 또는 부분적으로, 지정된 실패 허용 오차 미만이나 초과로 실패하더라도 스택 세트는 이러한 변경 사항으로 업데이트됩니다. 지정된 스택 세트에 대한 후속 CreateStackInstances 호출에서는 업데이트된 스택 세트를 사용합니다.
  + [CreateStackInstances](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStackInstances.html) 작업은 자체 관리형 권한 모델의 지정된 모든 계정 내 또는 서비스 관리형 권한 모델의 지정된 모든 배포 대상 내에 지정된 모든 리전에 대한 스택 인스턴스를 만듭니다. 이 작업으로 만든 인스턴스의 파라미터를 재정의할 수 있습니다. 인스턴스가 이미 존재하는 경우, CreateStackInstances는 동일한 입력 파라미터를 사용하여 UpdateStackInstances를 호출합니다. 이 작업을 사용하여 인스턴스를 생성할 때 다른 스택 인스턴스의 상태는 변경되지 않습니다.
  + [UpdateStackInstances](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStackInstances.html) 작업은 자체 관리형 권한 모델의 지정된 모든 계정 내 또는 서비스 관리형 권한 모델의 지정된 모든 배포 대상 내에서 지정된 모든 리전에 대한 스택 세트를 통해 스택 인스턴스를 최신 상태로 유지합니다. 이 작업으로 업데이트된 인스턴스의 파라미터를 재정의할 수 있습니다. 이 작업을 사용하여 인스턴스의 하위 세트를 업데이트할 때 다른 스택 인스턴스의 상태는 변경되지 않습니다.
  + [DescribeStackSetOperation](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackSetOperation.html) 작업은 지정된 스택 세트 작업에 대한 설명을 반환합니다.
  + [DescribeStackSet](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackSet.html) 작업은 지정된 스택 세트에 대한 설명을 반환합니다.

# AWS CodeBuild 빌드 및 테스트 작업 참조
<a name="action-reference-CodeBuild"></a>

파이프라인의 일부로 빌드와 테스트를 실행할 수 있습니다. CodeBuild 빌드 또는 테스트 작업을 실행할 때 buildspec에 지정된 명령이 CodeBuild 컨테이너 내에서 실행됩니다. 명령을 실행하는 컨테이너 내에서 CodeBuild 작업에 대해 입력 아티팩트로 지정된 모든 아티팩트를 사용할 수 있습니다. CodeBuild는 빌드 또는 테스트 작업을 제공할 수 있습니다. 자세한 내용은 [AWS CodeBuild 사용 설명서](https://docs.aws.amazon.com/codebuild/latest/userguide/)를 참조하십시오.

콘솔에서 CodePipeline 마법사를 사용하여 빌드 프로젝트를 생성할 때 CodeBuild 빌드 프로젝트는 소스 공급자가 CodePipeline임을 보여줍니다. CodeBuild 콘솔에서 빌드 프로젝트를 생성할 때 CodePipeline을 소스 공급자로 지정할 수 없지만, 파이프라인에 빌드 작업을 추가하면 CodeBuild 콘솔에서 소스가 조정됩니다. 자세한 내용은AWS CodeBuild API 참조의 [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html)를 참조하세요.**

**Topics**
+ [작업 유형](#action-reference-CodeBuild-type)
+ [구성 파라미터](#action-reference-CodeBuild-config)
+ [입력 아티팩트](#action-reference-CodeBuild-input)
+ [출력 아티팩트](#action-reference-CodeBuild-output)
+ [출력 변수](#action-reference-CodeBuild-variables)
+ [서비스 역할 권한: CodeBuild 작업](#edit-role-codebuild)
+ [작업 선언(CodeBuild 예제)](#action-reference-CodeBuild-example)
+ [다음 사항도 참조하세요.](#action-reference-CodeBuild-links)

## 작업 유형
<a name="action-reference-CodeBuild-type"></a>
+ 범주: `Build` 또는 `Test`
+ 소유자: `AWS`
+ 공급자: `CodeBuild`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-CodeBuild-config"></a>

**ProjectName**  
필수 항목 여부: 예  
`ProjectName`은 CodeBuild에서 빌드 프로젝트의 이름입니다.

**PrimarySource**  
필수 항목 여부: 조건부  
`PrimarySource` 파라미터 값은 작업에 대한 입력 아티팩트 중 하나의 이름이어야 합니다. CodeBuild는 buildspec 파일을 찾아 이 아티팩트의 압축 해제된 버전이 포함된 디렉터리에서 buildspec 명령을 실행합니다.  
CodeBuild 작업에 대해 여러 입력 아티팩트가 지정되는 경우 이 파라미터는 필수 항목입니다. 작업에 대해 소스 아티팩트가 하나만 있는 경우 해당 아티팩트의 기본값은 `PrimarySource` 아티팩트입니다.

**BatchEnabled**  
필수 여부: 아니요  
`BatchEnabled` 파라미터의 부울 값을 사용하면 작업이 동일한 빌드 실행에서 여러 빌드를 실행할 수 있습니다.  
이 옵션을 활성화하면 `CombineArtifacts` 옵션을 사용할 수 있습니다.  
배치 빌드가 활성화된 파이프라인 예제는 [CodePipeline과 CodeBuild 및 배치 빌드의 통합](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-pipeline-batch.html)을 참조하세요.

**BuildspecOverride**  
필수 여부: 아니요  
이 빌드에 한해, 빌드 프로젝트에서 정의된 최신 빌드 프로젝트를 재정의하는 인라인 buildspec 정의 또는 buildspec 파일 선언입니다. 프로젝트에 정의된 buildspec은 변경되지 않습니다.  
이 값이 설정된 경우, 다음 중 하나일 수 있습니다.  
+ 인라인 buildspec 정의입니다. 자세한 내용은 [Buildspec 구문](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax)의 구문 참조를 참조하세요.
+ 내장 `CODEBUILD_SRC_DIR` 환경 변수의 값을 기준으로 한 대체 buildspec 파일의 경로 또는 S3 버킷의 경로입니다. 버킷은 빌드 프로젝트와 동일한 AWS 리전 에 있어야 합니다. ARN을 사용하여 buildspec 파일을 지정합니다(예: `arn:aws:s3:::my-codebuild-sample2/buildspec.yml`). 이 값을 제공하지 않거나 빈 문자열로 설정하는 경우 소스 코드에 루트 디렉터리의 buildspec 파일이 포함되어 있어야 합니다. 경로 추가에 대한 자세한 내용은 [Buildspec 파일 이름 및 스토리지 위치](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-name-storage)를 참조하세요.
이 속성을 사용하면 컨테이너에서 실행할 빌드 명령을 변경할 수 있으므로이 API를 호출하고 이 파라미터를 설정하는 기능이 있는 IAM 보안 주체가 기본 설정을 재정의할 수 있습니다. 또한 소스 리포지토리의 파일 또는 Amazon S3 버킷과 같은 신뢰할 수 있는 buildspec 위치를 사용하는 것이 좋습니다.

**CombineArtifacts**  
필수 여부: 아니요  
`CombineArtifacts` 파라미터의 부울 값은 배치 빌드의 모든 빌드 아티팩트를 빌드 작업을 위한 단일 아티팩트 파일로 결합합니다.  
이 옵션을 사용하려면 `BatchEnabled` 파라미터를 활성화해야 합니다.

**EnvironmentVariables**  
필수 여부: 아니요  
이 파라미터의 값은 파이프라인의 CodeBuild 작업에 대한 환경 변수를 설정하는 데 사용됩니다. `EnvironmentVariables` 파라미터 값은 환경 변수 객체의 JSON 배열 형식을 취합니다. [작업 선언(CodeBuild 예제)](#action-reference-CodeBuild-example)의 예제 파라미터를 참조하십시오.  
각 객체에는 세 부분이 있으며 모두 문자열입니다.  
+ `name`: 환경 변수의 이름 또는 키입니다.
+ `value`: 환경 변수의 값입니다. `PARAMETER_STORE` 또는 `SECRETS_MANAGER` 유형을 사용하는 경우이 값은 AWS Systems Manager Parameter Store에 이미 저장한 파라미터의 이름이거나 Secrets Manager에 AWS 이미 저장한 보안 암호여야 합니다.
**참고**  
환경 변수를 사용하여 민감한 값, 특히 AWS 자격 증명을 저장하지 않는 것이 좋습니다. CodeBuild 콘솔 또는 AWS CLI를 사용하면 환경 변수가 일반 텍스트로 표시됩니다. 중요한 값의 경우 대신 `SECRETS_MANAGER` 유형을 사용하는 것이 좋습니다.
+ `type`: (선택 사항) 환경 변수의 유형입니다. 유효한 값은 `PARAMETER_STORE`, `SECRETS_MANAGER`또는 `PLAINTEXT`입니다. 지정하지 않으면 기본적으로 `PLAINTEXT`가 사용됩니다.
환경 변수 구성에 대해 `name`, `value` 및 `type`을 입력할 때, 특히 환경 변수에 CodePipeline 출력 변수 구문이 포함된 경우 구성 값 필드에 1000자 제한을 초과하지 마십시오. 이 제한을 초과하면 확인 오류가 반환됩니다.
자세한 내용은 AWS CodeBuild API 참조의 [ EnvironmentVariable](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_EnvironmentVariable.html)을 참조하세요. GitHub 브랜치 이름으로 확인되는 환경 변수를 포함하는 CodeBuild 작업의 예는 [예: CodeBuild 환경 변수와 함께 BranchName 변수 사용](actions-variables.md#actions-variables-examples-env-branchname) 섹션을 참조하세요.

## 입력 아티팩트
<a name="action-reference-CodeBuild-input"></a>
+ **아티팩트 수:** `1 to 5`
+ **설명:** CodeBuild는 기본 소스 아티팩트의 디렉터리에서 buildspec 파일을 찾고 buildspec 명령을 실행합니다. 단일 입력 소스가 지정되거나 CodeBuild 작업에 대해 둘 이상의 입력 소스가 지정된 경우 단일 아티팩트 또는 여러 입력 소스의 경우 기본 아티팩트를 CodePipeline의 `PrimarySource` 작업 구성 파라미터를 사용하여 설정해야 합니다.

  각 입력 아티팩트가 자체 디렉터리로 추출되며 이 위치가 환경 변수에 저장됩니다. 기본 소스 아티팩트의 디렉터리는 `$CODEBUILD_SRC_DIR`에서 사용할 수 있습니다. 다른 모든 입력 아티팩트의 디렉터리는 `$CODEBUILD_SRC_DIR_yourInputArtifactName`에서 사용할 수 있습니다.
**참고**  
CodeBuild 프로젝트에서 구성된 아티팩트가 파이프라인에서는 CodeBuild 작업에 의해 사용되는 입력 아티팩트가 됩니다.

## 출력 아티팩트
<a name="action-reference-CodeBuild-output"></a>
+ **아티팩트 수:** `0 to 5` 
+ **설명:** 파이프라인의 후속 작업에 사용할 수 있는 CodeBuild buildspec 파일에 정의된 아티팩트를 만드는 데 사용할 수 있습니다. 출력 아티팩트가 하나만 정의되는 경우 buildspec 파일의 `artifacts` 섹션에서 직접 이 아티팩트를 정의할 수 있습니다. 둘 이상의 출력 아티팩트가 지정된 경우 참조되는 모든 아티팩트는 buildspec 파일에서 보조 아티팩트로 정의되어야 합니다. CodePipeline의 출력 아티팩트의 이름은 buildspec 파일의 객체 식별자와 일치해야 합니다.
**참고**  
CodeBuild 프로젝트에서 구성된 아티팩트가 파이프라인 작업에서는 CodePipeline 입력 아티팩트가 됩니다.

  `CombineArtifacts` 파라미터를 배치 빌드용으로 선택한 경우 출력 아티팩트 위치에는 동일한 실행에서 실행된 여러 빌드의 결합된 아티팩트가 포함됩니다.

## 출력 변수
<a name="action-reference-CodeBuild-variables"></a>

이 작업은 빌드의 일부로 내보낸 모든 환경 변수를 변수로 생성합니다. 환경 변수를 내보내는 방법에 대한 자세한 내용은AWS CodeBuild API 가이드의 [ EnvironmentVariable](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_EnvironmentVariable.html)을 참조하세요.**

CodePipeline에서 CodeBuild 환경 변수를 사용하는 방법에 대한 자세한 내용은 [CodeBuild 작업 출력 변수](reference-variables.md#reference-variables-list-configured-codebuild)의 예제를 참조하세요. CodeBuild에서 사용할 수 있는 환경 변수 목록은AWS CodeBuild 사용 설명서의 [빌드 환경의 환경 변수](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)를 참조하세요.**

## 서비스 역할 권한: CodeBuild 작업
<a name="edit-role-codebuild"></a>

CodeBuild 지원의 경우 다음을 정책 설명에 추가합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "codebuild:BatchGetBuilds",
                "codebuild:StartBuild",
                "codebuild:BatchGetBuildBatches",
                "codebuild:StartBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:*:111122223333:project/[[ProjectName]]"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

## 작업 선언(CodeBuild 예제)
<a name="action-reference-CodeBuild-example"></a>

------
#### [ YAML ]

```
Name: Build
Actions:
  - Name: PackageExport
    ActionTypeId:
      Category: Build
      Owner: AWS
      Provider: CodeBuild
      Version: '1'
    RunOrder: 1
    Configuration:
      BatchEnabled: 'true'
      CombineArtifacts: 'true'
      ProjectName: my-build-project
      PrimarySource: MyApplicationSource1
      EnvironmentVariables: '[{"name":"TEST_VARIABLE","value":"TEST_VALUE","type":"PLAINTEXT"},{"name":"ParamStoreTest","value":"PARAMETER_NAME","type":"PARAMETER_STORE"}]'
    OutputArtifacts:
      - Name: MyPipeline-BuildArtifact
    InputArtifacts:
      - Name: MyApplicationSource1
      - Name: MyApplicationSource2
```

------
#### [ JSON ]

```
{
    "Name": "Build",
    "Actions": [
        {
            "Name": "PackageExport",
            "ActionTypeId": {
                "Category": "Build",
                "Owner": "AWS",
                "Provider": "CodeBuild",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "BatchEnabled": "true",
                "CombineArtifacts": "true",
                "ProjectName": "my-build-project",
                "PrimarySource": "MyApplicationSource1",
                "EnvironmentVariables": "[{\"name\":\"TEST_VARIABLE\",\"value\":\"TEST_VALUE\",\"type\":\"PLAINTEXT\"},{\"name\":\"ParamStoreTest\",\"value\":\"PARAMETER_NAME\",\"type\":\"PARAMETER_STORE\"}]"
            },
            "OutputArtifacts": [
                {
                    "Name": "MyPipeline-BuildArtifact"
                }
            ],
            "InputArtifacts": [
                {
                    "Name": "MyApplicationSource1"
                },
                {
                    "Name": "MyApplicationSource2"
                }
            ]
        }
    ]
}
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-CodeBuild-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [AWS CodeBuild 사용 설명서](https://docs.aws.amazon.com/codebuild/latest/userguide/) - CodeBuild 작업이 포함된 예제 파이프라인은 [ CodePipeline을 CodeBuild와 함께 사용하여 코드 테스트 및 빌드 실행을 참조하세요](https://docs.aws.amazon.com/codebuild/latest/userguide/how-to-create-pipeline.html). 입력 및 출력 CodeBuild 아티팩트가 여러 개인 프로젝트의 예제는 [CodePipeline과 CodeBuild의 통합 및 다중 입력 소스 및 출력 아티팩트 샘플](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-pipeline-multi-input-output.html)과 [다중 입력 소스 및 출력 아티팩트 샘플](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-multi-in-out.html)을 참조하세요.
+ [자습서:를 사용하여 Android 앱을 빌드하고 테스트하는 파이프라인 생성 AWS Device Farm](tutorials-codebuild-devicefarm.md) - 이 자습서는 CodeBuild 및 AWS Device Farm을 사용하여 Android 앱을 빌드 및 테스트하는 GitHub 소스가 있는 파이프라인을 생성하기 위한 샘플 buildspec 파일과 샘플 애플리케이션을 제공합니다.
+ [CodeBuild에 대한 빌드 사양 참조](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html) - 이 참조 항목에서는 CodeBuild buildspec 파일을 이해하기 위한 정의와 예제를 제공합니다. CodeBuild에서 사용할 수 있는 환경 변수 목록은AWS CodeBuild 사용 설명서의 [빌드 환경의 환경 변수](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)를 참조하세요.**

# AWS CodePipeline 작업 참조 호출
<a name="action-reference-PipelineInvoke"></a>

CodePipeline 간접 호출 작업을 사용하여 다운스트림 파이프라인 실행을 트리거하고 파이프라인 간에 파이프라인 변수 및 소스 개정을 전달하는 작업을 간소화할 수 있습니다.

**참고**  
이 작업은 V2 유형 파이프라인에서만 지원됩니다.

**Topics**
+ [작업 유형](#action-reference-PipelineInvoke-type)
+ [구성 파라미터](#action-reference-PipelineInvoke-parameters)
+ [입력 아티팩트](#action-reference-PipelineInvoke-input)
+ [출력 아티팩트](#action-reference-PipelineInvoke-output)
+ [CodePipeline 간접 호출 작업에 대한 서비스 역할 정책 권한](#action-reference-PipelineInvoke-permissions-action)
+ [작업 선언](#action-reference-PipelineInvoke-example)
+ [다음 사항도 참조하세요.](#action-reference-PipelineInvoke-links)

## 작업 유형
<a name="action-reference-PipelineInvoke-type"></a>
+ 범주: `Invoke`
+ 소유자: `AWS`
+ 공급자: `CodePipeline`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-PipelineInvoke-parameters"></a>

**PipelineName**  
필수 항목 여부: 예  
실행 시 현재 대상 파이프라인을 시작할 파이프라인의 이름입니다. 호출 파이프라인을 이미 생성했어야 합니다. 작업은 `my-s3-pipeline`이라는 (간접 호출) 파이프라인이 실행을 시작할 때 `s3-pipeline-test` (대상) 파이프라인을 시작합니다.

**SourceRevisions**  
필수 여부: 아니요  
대상 파이프라인이 간접 호출 파이프라인에 의해 시작될 때 사용할 소스 개정입니다. 예를 들어 S3 소스 작업은 S3 버전 ID 및 객체 키와 같은 출력 변수를 제공합니다. 파이프라인이 호출될 때 사용할 개정 값을 지정할 수 있습니다.  
CLI의 경우 소스 개정을 직렬화된 JSON 문자열로 지정합니다. 소스 개정 재정의를 사용하는 방법에 대한 자세한 내용은 *CodePipeline API 안내서*의 [SourceRevisionOverride](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_SourceRevisionOverride.html)를 참조하세요.  
매핑은 다음 예제와 같이 문자열 형식을 사용합니다.  

```
[{"actionName":"Source","revisionType":"S3_OBJECT_VERSION_ID","revision
Value":"zq8mjNEXAMPLE"}]
```

**변수**  
필수 여부: 아니요  
작업이 지원할 변수의 이름과 값입니다.  
CLI의 경우 변수를 직렬화된 JSON 문자열로 지정합니다. 파이프라인 변수 사용에 대한 자세한 내용은 *CodePipeline API 안내서*의 [PipelineVariable](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PipelineVariable.html)을 참조하세요.  
매핑은 다음 예제와 같이 문자열 형식을 사용합니다.  

```
[{"name":"VAR1","value":"VALUE1"}]
```

다음 이미지는 콘솔의 파이프라인에 추가된 작업의 예를 보여줍니다.

![\[S3 소스와 파이프라인 간접 호출 작업이 포함된 빌드 스테이지가 있는 파이프라인\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/example-pipeline-invoke-run.png)


다음 이미지는 해당 작업의 **편집** 페이지 예를 보여줍니다. 다음 예제에서 `s3-pipeline-test` 파이프라인에는 콘솔에 대해 표시된 대로 구성된 파이프라인 호출 작업이 있습니다. 작업은 `my-s3-pipeline` 파이프라인이 실행을 완료하면 `s3-pipeline-test` 파이프라인을 시작합니다. 이 예에서는 S3\$1OBJECT\$1VERSION\$1ID 소스에 대한 소스 개정 재정의가 지정된 개정 값 `zq8mjNYEexample`로 재정의됨을 보여줍니다.

![\[파이프라인 간접 호출 작업이 있는 새 파이프라인에 대한 작업 편집 페이지\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/example-pipeline-invoke-edit.png)


## 입력 아티팩트
<a name="action-reference-PipelineInvoke-input"></a>
+ **아티팩트 수:** `0`
+ **설명:** 이 작업 유형에는 입력 아티팩트가 적용되지 않습니다.

## 출력 아티팩트
<a name="action-reference-PipelineInvoke-output"></a>
+ **아티팩트 수:** `0` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

## CodePipeline 간접 호출 작업에 대한 서비스 역할 정책 권한
<a name="action-reference-PipelineInvoke-permissions-action"></a>

CodePipeline이 작업을 실행하면 최소 `codepipeline:StartPipelineExecution` 권한으로 액세스를 유지하기 위해 CodePipeline 서비스 역할 정책에 파이프라인 리소스 ARN으로 범위가 적절하게 축소된 다음 최소 권한이 필요합니다.

```
 {
            "Sid": "StatementForPipelineInvokeAction",
            "Effect": "Allow",
            "Action": "codepipeline:StartPipelineExecution",
            "Resource": [
                "arn:aws:codepipeline:{{region}}:{{AccountId}}:{{pipelineName}}"
            ]
        }
```

## 작업 선언
<a name="action-reference-PipelineInvoke-example"></a>

------
#### [ YAML ]

```
name: Invoke-pipeline
actionTypeId:
  category: Invoke
  owner: AWS
  provider: CodePipeline
  version: '1'
runOrder: 2
configuration:
  PipelineName: my-s3-pipeline
  SourceRevisions: '[{"actionName":"Source","revisionType":"S3_OBJECT_VERSION_ID","revision
Value":"zq8mjNEXAMPLE"}]'
  Variables: '[{"name":"VAR1","value":"VALUE1"}]'
```

------
#### [ JSON ]

```
{
    "name": "Invoke-pipeline",
    "actionTypeId": {
        "category": "Invoke",
        "owner": "AWS",
        "provider": "CodePipeline",
        "version": "1"
    },
    "runOrder": 2,
    "configuration": {
        "PipelineName": "my-s3-pipeline",
        "SourceRevisions": "[{\"actionName\":\"Source\",\"revisionType\":\"S3_OBJECT_VERSION_ID\",\"revisionValue\":\"zq8mjNEXAMPLE"}]",
        "Variables": "[{\"name\":\"VAR1\",\"value\":\"VALUE1\"}]"
    }
},
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-PipelineInvoke-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+  [소스 개정 재정의로 파이프라인 시작](pipelines-trigger-source-overrides.md) - 이 섹션에서는 수동으로 또는 EventBridge 이벤트 입력 변환기를 통해 소스 개정을 사용하여 파이프라인을 시작하는 방법을 설명합니다.

# CodeCommit 소스 작업 참조
<a name="action-reference-CodeCommit"></a>

구성된 CodeCommit 리포지토리 및 분기에서 새 커밋이 수행될 때 파이프라인을 시작합니다.

콘솔을 사용하여 파이프라인을 생성 또는 편집하는 경우, CodePipeline에서 리포지토리에서 변경이 발생할 때 파이프라인을 시작하는 EventBridge 규칙이 생성됩니다.

**참고**  
Amazon ECR, Amazon S3 또는 CodeCommit 소스의 경우 입력 변환 항목을 사용하여 소스 재정의를 생성하여 파이프라인 이벤트에 EventBridge의 `revisionValue`를 사용할 수도 있습니다. 여기서 `revisionValue`는 객체 키, 커밋 또는 이미지 ID의 소스 이벤트 변수에서 파생됩니다. 자세한 내용은 [Amazon ECR 소스 작업 및 EventBridge 리소스](create-cwe-ecr-source.md), [이벤트에 대해 활성화된 소스를 사용하여 Amazon S3 소스 작업에 연결](create-S3-source-events.md), 또는 [CodeCommit 소스 작업 및 EventBridge](triggering.md)의 절차에 포함된 입력 변환 항목의 선택적 단계를 참조하세요.

CodeCommit 작업을 통해 파이프라인을 연결하기 전에 CodeCommit 리포지토리를 이미 생성했어야 합니다.

코드 변경이 감지되면 다음 옵션을 사용하여 코드를 후속 작업에 전달할 수 있습니다.
+ **기본값** - 커밋의 단순 복사본이 포함된 ZIP 파일을 출력하도록 CodeCommit 소스 작업을 구성합니다.
+ **전체 복제** - 후속 작업을 위해 리포지토리에 대한 Git URL 참조를 출력하도록 소스 작업을 구성합니다.

  현재 Git URL 참조는 다운스트림 CodeBuild 작업에서만 리포지토리와 관련 Git 메타데이터를 복제하는 데 사용할 수 있습니다. 비 CodeBuild 작업에 대한 Git URL 참조를 전달하려고 하면 오류가 발생합니다.

**Topics**
+ [작업 유형](#action-reference-CodeCommit-type)
+ [구성 파라미터](#action-reference-CodeCommit-config)
+ [입력 아티팩트](#action-reference-CodeCommit-input)
+ [출력 아티팩트](#action-reference-CodeCommit-output)
+ [출력 변수](#action-reference-CodeCommit-variables)
+ [서비스 역할 권한: CodeCommit 작업](#edit-role-codecommit)
+ [예제 작업 구성](#action-reference-CodeCommit-example)
+ [다음 사항도 참조하세요.](#action-reference-CodeCommit-links)

## 작업 유형
<a name="action-reference-CodeCommit-type"></a>
+ 범주: `Source`
+ 소유자: `AWS`
+ 공급자: `CodeCommit`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-CodeCommit-config"></a>

**RepositoryName**  
필수 항목 여부: 예  
소스 변경 사항을 감지할 리포지토리의 이름입니다.

**BranchName**  
필수 항목 여부: 예  
소스 변경 사항을 감지할 분기의 이름입니다.

**PollForSourceChanges**  
필수 여부: 아니요  
`PollForSourceChanges`는 CodePipeline이 CodeCommit 리포지토리에서 소스 변경 사항을 폴링할지 여부를 제어합니다. 대신 CloudWatch Events를 사용하여 소스 변경 사항을 감지하는 것이 좋습니다. CloudWatch Events 구성에 대한 자세한 내용은 [폴링 파이프라인 마이그레이션(CodeCommit 소스)(CLI)](update-change-detection.md#update-change-detection-cli-codecommit) 또는 [폴링 파이프라인 마이그레이션(CodeCommit 소스)(CloudFormation 템플릿)](update-change-detection.md#update-change-detection-cfn-codecommit)을 참조하세요.  
CloudWatch Events 규칙을 구성하려는 경우, 중복된 파이프라인 실행이 발생하지 않도록 `PollForSourceChanges`를 `false`로 설정해야 합니다.
이 파라미터에 유효한 값은 다음과 같습니다.  
+ `true`: 이 값으로 설정된 경우 CodePipeline은 리포지토리에서 소스 변경 사항을 폴링합니다.
**참고**  
`PollForSourceChanges`를 생략하면 CodePipeline은 기본적으로 소스 변경 사항에 대해 리포지토리를 폴링합니다. 이러한 동작은 `PollForSourceChanges`이 포함되었고 `true`로 설정된 경우와 똑같습니다.
+ `false`: 이 값으로 설정된 경우 CodePipeline은 리포지토리에서 소스 변경 사항을 폴링하지 않습니다. 소스 변경 사항을 감지하도록 CloudWatch Events 규칙을 구성하려면 이 설정을 사용합니다.

****OutputArtifactFormat****  
필수 여부: 아니요  
출력 아티팩트 형식. 값은 `CODEBUILD_CLONE_REF` 또는 `CODE_ZIP`가 될 수 있습니다. 미지정된 경우 기본값은 `CODE_ZIP`입니다.  
`CODEBUILD_CLONE_REF` 옵션은 CodeBuild 다운스트림 작업에서만 사용할 수 있습니다.  
이 옵션을 선택하면 [CodeCommit 소스 작업에 대한 CodeBuild GitClone 권한 추가](troubleshooting.md#codebuild-role-codecommitclone)과 같이 CodeBuild 서비스 역할에 대한 `codecommit:GitPull` 권한을 추가해야 합니다. 또한 [CodePipeline 서비스 역할에 권한 추가](how-to-custom-role.md#how-to-update-role-new-services)에 표시된 대로 CodePipeline 서비스 역할에 `codecommit:GetRepository` 권한을 추가해야 합니다. **전체 복제** 옵션을 사용하는 방법을 보여주는 자습서는 [자습서: CodeCommit 파이프라인 소스와 함께 전체 복제 사용](tutorials-codecommit-gitclone.md)을 참조하세요.

## 입력 아티팩트
<a name="action-reference-CodeCommit-input"></a>
+ **아티팩트 수:** `0`
+ **설명:** 이 작업 유형에는 입력 아티팩트가 적용되지 않습니다.

## 출력 아티팩트
<a name="action-reference-CodeCommit-output"></a>
+ **아티팩트 수:** `1` 
+ **설명:** 이 작업의 출력 아티팩트는 파이프라인 실행을 위한 소스 개정으로 지정된 커밋에서 구성된 리포지토리 및 분기의 내용을 포함하는 ZIP 파일입니다. 리포지토리에서 생성된 아티팩트는 CodeCommit 작업에 대한 출력 아티팩트입니다. 소스 코드 커밋 ID는 트리거된 파이프라인 실행의 소스 개정으로 CodePipeline에 표시됩니다.

## 출력 변수
<a name="action-reference-CodeCommit-variables"></a>

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

자세한 내용은 [변수 참조](reference-variables.md) 단원을 참조하십시오.

**CommitId**  
파이프라인 실행을 트리거한 CodeCommit 커밋 ID입니다. 커밋 ID는 커밋의 전체 SHA입니다.

**CommitMessage**  
파이프라인 실행을 트리거한 커밋과 연관된 설명 메시지입니다(존재하는 경우).

**RepositoryName**  
파이프라인을 트리거한 커밋이 만들어진 CodeCommit 리포지토리의 이름입니다.

**BranchName**  
소스 변경이 이루어진 CodeCommit 리포지토리의 분기 이름입니다.

**AuthorDate**  
커밋이 작성된 날짜입니다(타임스탬프 형식).

**CommitterDate**  
커밋이 수행된 날짜입니다(타임스탬프 형식).

## 서비스 역할 권한: CodeCommit 작업
<a name="edit-role-codecommit"></a>

CodePipeline이 작업을 실행하면 최소 권한으로 액세스를 유지하기 위해 CodePipeline 서비스 역할 정책에 파이프라인 리소스 ARN으로 범위가 적절하게 축소된 다음 최소 권한이 필요합니다. 예를 들어 다음을 정책 설명에 추가합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codecommit:CancelUploadArchive",
                "codecommit:GetBranch",
                "codecommit:GetCommit",
                "codecommit:GetRepository",
                "codecommit:GetUploadArchiveStatus",
                "codecommit:UploadArchive"
            ],
            "Resource": [
                "arn:aws:codecommit:*:111122223333:[[codecommitRepostories]]"
            ]
        }
    ]
}
```

------



## 예제 작업 구성
<a name="action-reference-CodeCommit-example"></a>

### 기본 출력 아티팩트 형식의 예
<a name="w2aac56c49c29b3"></a>

------
#### [ YAML ]

```
name: Source
actionTypeId:
  category: Source
  owner: AWS
  provider: CodeCommit
  version: '1'
runOrder: 1
configuration:
  BranchName: main
  PollForSourceChanges: 'false'
  RepositoryName: MyWebsite
outputArtifacts:
  - name: Artifact_MyWebsiteStack
inputArtifacts: []
region: us-west-2
namespace: SourceVariables
```

------
#### [ JSON ]

```
{
    "name": "Source",
    "actionTypeId": {
        "category": "Source",
        "owner": "AWS",
        "provider": "CodeCommit",
        "version": "1"
    },
    "runOrder": 1,
    "configuration": {
        "BranchName": "main",
        "PollForSourceChanges": "false",
        "RepositoryName": "MyWebsite"
    },
    "outputArtifacts": [
        {
            "name": "Artifact_MyWebsiteStack"
        }
    ],
    "inputArtifacts": [],
    "region": "us-west-2",
    "namespace": "SourceVariables"
}
```

------

### 전체 복제 출력 아티팩트 형식의 예
<a name="w2aac56c49c29b5"></a>

------
#### [ YAML ]

```
name: Source
actionTypeId:
  category: Source
  owner: AWS
  provider: CodeCommit
  version: '1'
runOrder: 1
configuration:
  BranchName: main
  OutputArtifactFormat: CODEBUILD_CLONE_REF
  PollForSourceChanges: 'false'
  RepositoryName: MyWebsite
outputArtifacts:
  - name: SourceArtifact
inputArtifacts: []
region: us-west-2
namespace: SourceVariables
```

------
#### [ JSON ]

```
{
    "name": "Source",
    "actionTypeId": {
        "category": "Source",
        "owner": "AWS",
        "provider": "CodeCommit",
        "version": "1"
    },
    "runOrder": 1,
    "configuration": {
        "BranchName": "main",
        "OutputArtifactFormat": "CODEBUILD_CLONE_REF",
        "PollForSourceChanges": "false",
        "RepositoryName": "MyWebsite"
    },
    "outputArtifacts": [
        {
            "name": "SourceArtifact"
        }
    ],
    "inputArtifacts": [],
    "region": "us-west-2",
    "namespace": "SourceVariables"
}
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-CodeCommit-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [자습서: 간단한 파이프라인 생성(CodeCommit 리포지토리)](tutorials-simple-codecommit.md) - 이 자습서에서는 앱 사양 파일 샘플과 CodeDeploy 애플리케이션 및 배포 그룹 샘플을 제공합니다. 이 자습서를 사용하여 Amazon EC2 인스턴스에 배포되는 CodeCommit 소스로 파이프라인을 생성합니다.

# AWS CodeDeploy 배포 작업 참조
<a name="action-reference-CodeDeploy"></a>

 AWS CodeDeploy 작업을 사용하여 배포 플릿에 애플리케이션 코드를 배포합니다. 배포 플릿은 Amazon EC2 인스턴스, 온프레미스 인스턴스 또는 둘 다로 구성될 수 있습니다.

**참고**  
이 참조 주제에서는 CodePipeline의 CodeDeploy 배포 작업에 대해 설명합니다. 여기서 배포 플랫폼은 Amazon EC2입니다. CodePipeline에서의 CodeDeploy 블루/그린 배포 작업에 대한 Amazon Elastic Container Service에 대한 참조 정보는 [Amazon Elastic Container Service(Amazon ECS) 및 CodeDeploy 블루-그린 배포 작업 참조](action-reference-ECSbluegreen.md)을 참조하세요.

**Topics**
+ [작업 유형](#action-reference-CodeDeploy-type)
+ [구성 파라미터](#action-reference-CodeDeploy-config)
+ [입력 아티팩트](#action-reference-CodeDeploy-input)
+ [출력 아티팩트](#action-reference-CodeDeploy-output)
+ [서비스 역할 권한: AWS CodeDeploy 작업](#edit-role-codedeploy)
+ [작업 선언](#action-reference-CodeDeploy-example)
+ [다음 사항도 참조하세요.](#action-reference-CodeDeploy-links)

## 작업 유형
<a name="action-reference-CodeDeploy-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `CodeDeploy`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-CodeDeploy-config"></a>

**ApplicationName**  
필수 항목 여부: 예  
CodeDeploy에서 생성한 애플리케이션 이름입니다.

**DeploymentGroupName**  
필수 항목 여부: 예  
CodeDeploy 에서 생성한 배포 그룹입니다.

## 입력 아티팩트
<a name="action-reference-CodeDeploy-input"></a>
+ **아티팩트 수:** `1`
+ **설명:** CodeDeploy에서 다음을 결정하는 데 사용하는 AppSpec 파일입니다.
  + Amazon S3 또는 GitHub의 애플리케이션 수정에서 인스턴스에 설치할 항목입니다.
  + 배포 수명 주기 이벤트에 대한 응답으로 실행될 수명 주기 이벤트 후크

  AppSpec 파일에 대한 자세한 내용은 [CodeDeploy AppSpec 파일 참조](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html)를 참조하세요.

  

## 출력 아티팩트
<a name="action-reference-CodeDeploy-output"></a>
+ **아티팩트 수:** `0` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

## 서비스 역할 권한: AWS CodeDeploy 작업
<a name="edit-role-codedeploy"></a>

 AWS CodeDeploy 지원을 받으려면 정책 설명에 다음을 추가합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codedeploy:CreateDeployment",
                "codedeploy:GetApplication",
                "codedeploy:GetDeployment",
                "codedeploy:RegisterApplicationRevision",
                "codedeploy:ListDeployments",
                "codedeploy:ListDeploymentGroups",
                "codedeploy:GetDeploymentGroup"
            ],
            "Resource": [
                "arn:aws:codedeploy:*:111122223333:application:[[codedeployApplications]]",
                "arn:aws:codedeploy:*:111122223333:deploymentgroup:[[codedeployApplications]]/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "codedeploy:GetDeploymentConfig"
            ],
            "Resource": [
                "arn:aws:codedeploy:*:111122223333:deploymentconfig:[[deploymentConfigs]]"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "codedeploy:ListDeploymentConfigs"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

## 작업 선언
<a name="action-reference-CodeDeploy-example"></a>

------
#### [ YAML ]

```
Name: Deploy
Actions:
  - Name: Deploy
    ActionTypeId:
      Category: Deploy
      Owner: AWS
      Provider: CodeDeploy
      Version: '1'
    RunOrder: 1
    Configuration:
      ApplicationName: my-application
      DeploymentGroupName: my-deployment-group
    OutputArtifacts: []
    InputArtifacts:
      - Name: SourceArtifact
    Region: us-west-2
    Namespace: DeployVariables
```

------
#### [ JSON ]

```
{
    "Name": "Deploy",
    "Actions": [
        {
            "Name": "Deploy",
            "ActionTypeId": {
                "Category": "Deploy",
                "Owner": "AWS",
                "Provider": "CodeDeploy",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "ApplicationName": "my-application",
                "DeploymentGroupName": "my-deployment-group"
            },
            "OutputArtifacts": [],
            "InputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "Region": "us-west-2",
            "Namespace": "DeployVariables"
        }
    ]
},
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-CodeDeploy-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [자습서: 간단한 파이프라인 생성(S3 버킷)](tutorials-simple-s3.md) - 이 자습서에서는 샘플 애플리케이션을 배포하기 위한 소스 버킷, EC2 인스턴스 및 CodeDeploy 리소스를 생성하는 방법을 안내합니다. 그런 다음 S3 버킷에서 유지 관리하는 코드를 Amazon EC2 인스턴스에 배포하는 CodeDeploy 배포 작업을 사용하여 파이프라인을 구축합니다.
+ [자습서: 간단한 파이프라인 생성(CodeCommit 리포지토리)](tutorials-simple-codecommit.md) - 이 자습서에서는 샘플 애플리케이션을 배포하기 위한 CodeCommit 소스 리포지토리, EC2 인스턴스 및 CodeDeploy 리소스를 생성하는 방법을 안내합니다. 그런 다음 CodeCommit 리포지토리의 코드를 Amazon EC2 인스턴스에 배포하는 CodeDeploy 배포 작업을 사용하여 파이프라인을 구축합니다.
+ [CodeDeploy AppSpec 파일 참조](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html) - *AWS CodeDeploy 사용 설명서*의 이 참조 장에서는 CodeDeploy AppSpec 파일에 대한 참조 정보와 예제를 제공합니다.

# Bitbucket Cloud, GitHub, GitHub Enterprise Server, GitLab.com 및 GitLab 자체 관리형 작업용 CodeStarSourceConnection
<a name="action-reference-CodestarConnectionSource"></a>

연결에 대한 소스 작업은에서 지원됩니다 AWS CodeConnections. CodeConnections를 사용하면 AWS 리소스와 GitHub와 같은 타사 리포지토리 간의 연결을 생성하고 관리할 수 있습니다. 타사 소스 코드 리포지토리에서 새 커밋이 수행될 때 파이프라인을 시작합니다. 소스 작업은 파이프라인이 수동으로 실행되거나 소스 공급자로부터 Webhook 이벤트가 전송될 경우 코드 변경 사항을 검색합니다.

트리거로 파이프라인을 시작할 수 있는 Git 구성을 사용하도록 파이프라인의 작업을 구성할 수 있습니다. 트리거로 필터링하도록 파이프라인 트리거 구성을 구성하려면 [코드 푸시 또는 풀 요청 이벤트 유형을 사용하여 트리거 추가](pipelines-filter.md)에서 자세한 내용을 참조하세요.

**참고**  
아시아 태평양(홍콩), 아시아 태평양(하이데라바드), 아시아 태평양(자카르타), 아시아 태평양(멜버른), 아시아 태평양(오사카), 아프리카(케이프타운), 중동(바레인), 중동(UAE), 유럽(스페인), 유럽(취리히), 이스라엘(텔아비브) 또는 AWS GovCloud(미국 서부) 리전에서는이 기능을 사용할 수 없습니다. 사용 가능한 다른 작업을 참조하려면 [CodePipeline과 제품 및 서비스 통합](integrations.md)을 참조하세요. 유럽(밀라노) 리전에서 이 조치를 고려할 경우 [Bitbucket Cloud, GitHub, GitHub Enterprise Server, GitLab.com 및 GitLab 자체 관리형 작업용 CodeStarSourceConnection](#action-reference-CodestarConnectionSource)의 참고 사항을 참조하세요.

연결은 AWS 리소스를 다음 타사 리포지토리와 연결할 수 있습니다.
+ Bitbucket Cloud(CodePipeline 콘솔의 **Bitbucket** 공급자 옵션 또는 CLI의 `Bitbucket` 공급자를 통해)
**참고**  
Bitbucket Cloud 리포지토리에 대한 연결을 생성할 수 있습니다. Bitbucket Server와 같은 설치된 Bitbucket 공급자 유형은 지원되지 않습니다.
+ 
**참고**  
Bitbucket WorkSpace를 사용하는 경우 연결을 만들려면 관리자 액세스 권한이 있어야 합니다.
+ GitHub 및 GitHub Enterprise Cloud(CodePipeline 콘솔의 **GitHub(GitHub 앱 사용)** 공급자 옵션 또는 CLI의 `GitHub` 공급자를 통해)
**참고**  
리포지토리가 GitHub 조직에 있는 경우 연결을 생성하려면 조직 소유자여야 합니다. 조직 소속이 아닌 리포지토리를 사용하고 있는 경우 리포지토리 소유자여야 합니다.
+ GitHub Enterprise Server(CodePipeline 콘솔의 **GitHub Enterprise Server** 공급자 옵션 또는 CLI의 `GitHub Enterprise Server` 공급자를 통해)
+ GitLab.com(CodePipeline 콘솔의 **GitLab** 공급자 옵션 또는 CLI의 `GitLab` 공급자를 통해)
**참고**  
GitLab에서 **소유자** 역할을 가진 리포지토리에 대한 연결을 생성한 다음 CodePipeline과 같은 리소스가 있는 리포지토리에서 해당 연결을 사용할 수 있습니다. 그룹 내 리포지토리의 경우 그룹 소유자가 아니어도 됩니다.
+ GitLab용 자체 관리형 설치(엔터프라이즈 에디션 또는 커뮤니티 에디션)(CodePipeline 콘솔의 **GitLab 자체 관리형** 공급자 옵션 또는 CLI의 `GitLabSelfManaged` 공급자를 통해)

**참고**  
각 연결은 해당 공급자에 있는 모든 리포지토리를 지원합니다. 각 공급자 유형에 대해 새 연결만 생성하면 됩니다.

연결을 통해 파이프라인은 타사 공급자의 설치 앱을 통해 소스 변경을 감지할 수 있습니다. 예를 들어 웹후크는 GitHub 이벤트 유형을 구독하는 데 사용되며 조직, 리포지토리 또는 GitHub 앱에 설치할 수 있습니다. 연결하면 GitHub 푸시 유형 이벤트를 구독하는 리포지토리 웹후크가 GitHub 앱에 설치됩니다.

코드 변경이 감지되면 다음 옵션을 사용하여 코드를 후속 작업에 전달할 수 있습니다.
+ 기본값: 다른 기존 CodePipeline 소스 작업과 마찬가지로, `CodeStarSourceConnection`에서는 커밋의 부분 복사본이 포함된 ZIP 파일을 출력할 수 있습니다.
+ 전체 복제: `CodeStarSourceConnection`은 후속 작업을 위해 리포지토리에 대한 URL 참조를 출력하도록 구성할 수도 있습니다.

  현재 Git URL 참조는 다운스트림 CodeBuild 작업에서만 리포지토리와 관련 Git 메타데이터를 복제하는 데 사용할 수 있습니다. 비 CodeBuild 작업에 대한 Git URL 참조를 전달하려고 하면 오류가 발생합니다.

CodePipeline은 연결을 생성할 때 타사 계정에 AWS 커넥터 설치 앱을 추가하라는 메시지를 표시합니다. `CodeStarSourceConnection` 작업을 통해 연결하려면 먼저 타사 공급자 계정 및 리포지토리를 생성해야 합니다.

**참고**  
 AWS CodeStar 연결을 사용하는 데 필요한 권한을 가진 역할에 정책을 생성하거나 연결하려면 [연결 권한 참조를](https://docs.aws.amazon.com/dtconsole/latest/userguide/security-iam.html#permissions-reference-connections) 참조하세요. CodePipeline 서비스 역할이 생성된 시기에 따라 AWS CodeStar 연결을 지원하도록 권한을 업데이트해야 할 수 있습니다. 지침은 [CodePipeline 서비스 역할에 권한 추가](how-to-custom-role.md#how-to-update-role-new-services) 섹션을 참조하세요.

**참고**  
유럽(밀라노)에서 연결을 사용하려면 다음을 AWS 리전수행해야 합니다.  
리전별 앱 설치
리전 활성화
이 리전별 앱은 유럽(밀라노) 리전 내 연결을 지원합니다. 서드 파티 제공업체 사이트에 게시되며 다른 리전의 연결을 지원하는 기존 앱과는 별개입니다. 이 앱을 설치하면 서드 파티 제공업체가 이 리전에서만 서비스와 데이터를 공유할 수 있는 권한을 부여하게 되며 앱을 제거하여 언제든지 권한을 취소할 수 있습니다.  
리전을 활성화하지 않으면 서비스에서 데이터를 처리하거나 저장하지 않습니다. 이 리전을 활성화하면 데이터를 처리하고 저장할 수 있는 권한이 서비스에 부여됩니다.  
리전이 활성화되지 않았더라도 리전별 앱이 설치된 상태로 유지되면 서드 파티 제공업체가 서비스와 데이터를 공유할 수 있으므로 리전을 비활성화한 후에는 앱을 제거해야 합니다. 자세한 내용은 [리전 활성화](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-enable)를 참조하세요.

**Topics**
+ [작업 유형](#action-reference-CodestarConnectionSource-type)
+ [구성 파라미터](#action-reference-CodestarConnectionSource-config)
+ [입력 아티팩트](#action-reference-CodestarConnectionSource-input)
+ [출력 아티팩트](#action-reference-CodestarConnectionSource-output)
+ [출력 변수](#action-reference-CodestarConnectionSource-variables)
+ [서비스 역할 권한: CodeConnections 작업](#edit-role-connections)
+ [작업 선언](#action-reference-CodestarConnectionSource-example)
+ [설치 앱 설치 및 연결 생성](#action-reference-CodestarConnectionSource-auth)
+ [다음 사항도 참조하세요.](#action-reference-CodestarConnectionSource-links)

## 작업 유형
<a name="action-reference-CodestarConnectionSource-type"></a>
+ 범주: `Source`
+ 소유자: `AWS`
+ 공급자: `CodeStarSourceConnection`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-CodestarConnectionSource-config"></a>

****ConnectionArn****  
필수 항목 여부: 예  
소스 공급자에 대해 구성 및 인증된 연결 ARN입니다.

****FullRepositoryId****  
필수 항목 여부: 예  
소스 변경 사항을 감지할 리포지토리의 소유자 및 이름입니다.  
예시: `some-user/my-repo`  
**FullRepositoryId** 값의 대/소문자를 올바르게 유지해야 합니다. 예를 들어 사용자 이름이 `some-user`이고 리포지토리 이름이 `My-Repo`인 경우 **FullRepositoryId**의 권장 값은 `some-user/My-Repo`입니다.

****BranchName****  
필수 항목 여부: 예  
소스 변경 사항을 감지할 분기의 이름입니다.

****OutputArtifactFormat****  
필수 여부: 아니요  
출력 아티팩트 형식을 지정합니다. `CODEBUILD_CLONE_REF` 또는 `CODE_ZIP`입니다. 미지정된 경우 기본값은 `CODE_ZIP`입니다.  
`CODEBUILD_CLONE_REF` 옵션은 CodeBuild 다운스트림 작업에서만 사용할 수 있습니다.  
이 옵션을 선택하면 [Bitbucket, GitHub, GitHub Enterprise Server 또는 GitLab.com 연결을 위한 CodeBuild GitClone 권한 추가](troubleshooting.md#codebuild-role-connections)과 같이 CodeBuild 프로젝트 서비스 역할에 대한 권한을 업데이트해야 합니다. **전체 복제** 옵션을 사용하는 방법을 보여주는 자습서는 [자습서: GitHub 파이프라인 소스와 함께 전체 복제 사용](tutorials-github-gitclone.md)을 참조하세요.

**DetectChanges**  
 필수 여부: 아니요  
구성된 리포지토리 및 브랜치에서 새 커밋이 이루어지면 파이프라인이 자동으로 시작되도록 제어합니다. 지정되지 않은 경우 기본값은 `true`이며 필드는 기본적으로 표시되지 않습니다. 이 파라미터에 유효한 값은 다음과 같습니다.  
+ `true`: CodePipeline은 새 커밋에서 자동으로 파이프라인을 시작합니다.
+ `false`: CodePipeline은 새 커밋에서 파이프라인을 시작하지 않습니다.

## 입력 아티팩트
<a name="action-reference-CodestarConnectionSource-input"></a>
+ **아티팩트 수:** `0`
+ **설명:** 이 작업 유형에는 입력 아티팩트가 적용되지 않습니다.

## 출력 아티팩트
<a name="action-reference-CodestarConnectionSource-output"></a>
+ **아티팩트 수:** `1` 
+ **설명:** 리포지토리에서 생성된 아티팩트는 `CodeStarSourceConnection` 작업에 대한 출력 아티팩트입니다. 소스 코드 커밋 ID는 트리거된 파이프라인 실행의 소스 개정으로 CodePipeline에 표시됩니다. 이 작업의 출력 아티팩트는 다음 파일에서 구성할 수 있습니다.
  + 파이프라인 실행을 위한 소스 개정으로 지정된 커밋에서 구성된 리포지토리 및 브랜치의 내용을 포함하는 ZIP 파일
  + 다운스트림 작업이 Git 명령을 직접 수행할 수 있도록 리포지토리에 대한 URL 참조가 포함된 JSON 파일
**중요**  
이 옵션은 CodeBuild 다운스트림 작업에서만 사용할 수 있습니다.  
이 옵션을 선택하면 [CodePipeline 문제 해결](troubleshooting.md)과 같이 CodeBuild 프로젝트 서비스 역할에 대한 권한을 업데이트해야 합니다. **전체 복제** 옵션을 사용하는 방법을 보여주는 자습서는 [자습서: GitHub 파이프라인 소스와 함께 전체 복제 사용](tutorials-github-gitclone.md)을 참조하세요.

## 출력 변수
<a name="action-reference-CodestarConnectionSource-variables"></a>

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

자세한 내용은 [변수 참조](reference-variables.md) 단원을 참조하십시오.

AuthorDate  
커밋이 작성된 날짜입니다(타임스탬프 형식).

BranchName  
소스 변경이 이루어진 리포지토리의 분기 이름입니다.

CommitId  
파이프라인 실행을 트리거한 커밋 ID입니다.

CommitMessage  
파이프라인 실행을 트리거한 커밋과 연관된 설명 메시지입니다(존재하는 경우).

ConnectionArn  
소스 공급자에 대해 구성 및 인증된 연결 ARN입니다.

FullRepositoryName  
파이프라인을 트리거한 커밋이 만들어진 리포지토리의 이름입니다.

## 서비스 역할 권한: CodeConnections 작업
<a name="edit-role-connections"></a>

CodeConnections의 경우, Bitbucket Cloud와 같은 연결을 사용하는 소스로 파이프라인을 생성하려면 다음 권한이 필요합니다.

```
{
    "Effect": "Allow",
    "Action": [
        "codeconnections:UseConnection"
    ],
    "Resource": "resource_ARN"
},
```

연결의 IAM 권한에 대한 자세한 내용은 [연결 권한 참조](https://docs.aws.amazon.com/dtconsole/latest/userguide/security-iam.html#permissions-reference-connections)를 참조하세요.

## 작업 선언
<a name="action-reference-CodestarConnectionSource-example"></a>

다음 예제에서 출력 아티팩트는 ARN `arn:aws:codestar-connections:region:account-id:connection/connection-id`과의 연결에 대한 `CODE_ZIP`의 기본 ZIP 형식으로 설정되어 있습니다.

------
#### [ YAML ]

```
Name: Source
Actions:
  - InputArtifacts: []
    ActionTypeId:
      Version: '1'
      Owner: AWS
      Category: Source
      Provider: CodeStarSourceConnection
    OutputArtifacts:
      - Name: SourceArtifact
    RunOrder: 1
    Configuration:
      ConnectionArn: "arn:aws:codestar-connections:region:account-id:connection/connection-id"
      FullRepositoryId: "some-user/my-repo"
      BranchName: "main"
      OutputArtifactFormat: "CODE_ZIP"
    Name: ApplicationSource
```

------
#### [ JSON ]

```
{
    "Name": "Source",
    "Actions": [
        {
            "InputArtifacts": [],
            "ActionTypeId": {
                "Version": "1",
                "Owner": "AWS",
                "Category": "Source",
                "Provider": "CodeStarSourceConnection"
            },
            "OutputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "RunOrder": 1,
            "Configuration": {
                "ConnectionArn": "arn:aws:codestar-connections:region:account-id:connection/connection-id",
                "FullRepositoryId": "some-user/my-repo",
                "BranchName": "main",
                "OutputArtifactFormat": "CODE_ZIP"
            },
            "Name": "ApplicationSource"
        }
    ]
},
```

------

## 설치 앱 설치 및 연결 생성
<a name="action-reference-CodestarConnectionSource-auth"></a>

콘솔을 사용하여 타사 리포지토리에 대한 새 연결을 처음 추가하는 경우 해당 리포지토리에 대한 액세스 권한을 CodePipeline에 부여해야 합니다. 타사 코드 리포지토리를 만든 계정에 연결하는 데 도움이 되는 설치 앱을 선택하거나 생성합니다.

 AWS CLI 또는 CloudFormation 템플릿을 사용하는 경우 이미 설치 핸드셰이크를 거친 연결의 연결 ARN을 제공해야 합니다. 그러지 않으면 파이프라인이 트리거되지 않습니다.

**참고**  
`CodeStarSourceConnection` 소스 작업의 경우 webhook를 설정하거나 기본값을 폴링으로 설정할 필요가 없습니다. 연결 작업은 소스 변경 감지를 관리합니다.

## 다음 사항도 참조하세요.
<a name="action-reference-CodestarConnectionSource-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [AWS::CodeStarConnections::Connection](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarconnections-connection.html) – AWS CodeStar Connections 리소스에 대한 CloudFormation 템플릿 참조는 CloudFormation 템플릿의 연결에 대한 파라미터와 예제를 제공합니다.
+ [AWS CodeStar Connections API 참조](https://docs.aws.amazon.com/codestar-connections/latest/APIReference/Welcome.html) - *AWS CodeStar Connections API 참조*는 사용 가능한 연결 작업에 대한 참조 정보를 제공합니다.
+ 연결에서 지원되는 소스 작업으로 파이프라인을 생성하는 단계를 보려면 다음을 참조하세요.
  + Bitbucket Cloud의 경우 콘솔의 **Bitbucket** 옵션 또는 CLI의 `CodestarSourceConnection` 작업을 사용하세요. [Bitbucket Cloud 연결](connections-bitbucket.md)을(를) 참조하세요.
  + GitHub 및 GitHub Enterprise Cloud의 경우 콘솔의 **GitHub** 공급자 옵션 또는 CLI의 `CodestarSourceConnection` 작업을 사용하세요. [GitHub 연결](connections-github.md)을(를) 참조하세요.
  + GitHub Enterprise Server의 경우 콘솔의 **GitHub Enterprise Server** 공급자 옵션 또는 CLI의 `CodestarSourceConnection` 작업을 사용하세요. [GitHub Enterprise Server 연결](connections-ghes.md)을(를) 참조하세요.
  + GitLab.com의 경우 콘솔의 **GitLab** 공급자 옵션 또는 CLI의 `GitLab` 공급자와 함께 `CodestarSourceConnection` 작업을 사용하세요. [GitLab.com 연결](connections-gitlab.md)을(를) 참조하세요.
+ Bitbucket 소스와 CodeBuild 작업으로 파이프라인을 생성하는 시작하기 자습서를 보려면 [연결 시작하기](https://docs.aws.amazon.com/dtconsole/latest/userguide/getting-started-connections.html)를 참조하세요.
+ GitHub 리포지토리에 연결하고 다운스트림 CodeBuild 작업과 함께 **전체 복제** 옵션을 사용하는 방법을 보여주는 자습서는 [자습서: GitHub 파이프라인 소스와 함께 전체 복제 사용](tutorials-github-gitclone.md) 단원을 참조하세요.

# 명령 작업 참조
<a name="action-reference-Commands"></a>

명령 작업을 사용하면 가상 컴퓨팅 인스턴스에서 쉘 명령을 실행할 수 있습니다. 작업을 실행하면 작업 구성에 지정된 명령이 별도의 컨테이너에서 실행됩니다. 명령을 실행하는 컨테이너 내에서 CodeBuild 작업에 대해 입력 아티팩트로 지정된 모든 아티팩트를 사용할 수 있습니다. 이 작업을 사용하면 CodeBuild 프로젝트를 먼저 생성하지 않고 명령을 지정할 수 있습니다. 자세한 내용은 *AWS CodePipeline API 참조*의 [ActionDeclaration](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_ActionDeclaration.html) 및 [OutputArtifact](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_OutputArtifact.html)를 참조하세요.

**중요**  
이 작업은 CodePipeline 관리형 CodeBuild 컴퓨팅을 사용하여 빌드 환경에서 명령을 실행합니다. 명령 작업을 실행하면 AWS CodeBuild에서 별도의 요금이 발생합니다.

**참고**  
Commands 작업은 V2 유형 파이프라인에서만 사용할 수 있습니다.

**Topics**
+ [명령 작업에 대한 고려 사항](#action-reference-Commands-considerations)
+ [서비스 역할 정책 권한](#action-reference-Commands-policy)
+ [작업 유형](#action-reference-Commands-type)
+ [구성 파라미터](#action-reference-Commands-config)
+ [입력 아티팩트](#action-reference-Commands-input)
+ [출력 아티팩트](#action-reference-Commands-output)
+ [환경 변수](#action-reference-Commands-envvars)
+ [서비스 역할 권한: Commands 작업](#edit-role-Commands)
+ [작업 선언(예)](#action-reference-Commands-example)
+ [다음 사항도 참조하세요.](#action-reference-Commands-links)

## 명령 작업에 대한 고려 사항
<a name="action-reference-Commands-considerations"></a>

명령 작업에는 다음 고려 사항이 적용됩니다.
+ 명령 작업은 CodeBuild 작업과 유사한 CodeBuild 리소스를 사용하는 동시에 빌드 프로젝트를 연결하거나 생성할 필요 없이 가상 컴퓨팅 인스턴스에서 쉘 환경 명령을 허용합니다.
**참고**  
명령 작업을 실행하면 AWS CodeBuild에서 별도의 요금이 발생합니다.
+ CodePipeline의 명령 작업은 CodeBuild 리소스를 사용하기 때문에 작업에서 실행되는 빌드는 CodeBuild에서 계정의 빌드 제한에 귀속됩니다. 명령 작업에서 실행되는 빌드는 해당 계정에 구성된 동시 빌드 제한에 포함됩니다.
+ CodeBuild 빌드를 기반으로 할 때 명령 작업을 사용한 빌드의 제한 시간은 55분입니다.
+ 컴퓨팅 인스턴스는 CodeBuild에서 격리된 빌드 환경을 사용합니다.
**참고**  
격리된 빌드 환경은 계정 수준에서 사용되므로 인스턴스를 다른 파이프라인 실행에 재사용할 수 있습니다.
+ 다중 라인 형식을 제외한 모든 형식이 지원됩니다. 명령을 입력할 때는 단일 줄 형식을 사용해야 합니다.
+ 명령 작업은 교차 계정 작업에 대해 지원됩니다. 교차 계정 명령 작업을 추가하려면 작업 선언의 대상 계정에서 `actionRoleArn`를 추가합니다.
+ 이 작업의 경우 CodePipeline은 파이프라인 서비스 역할을 수행하고 해당 역할을 사용하여 런타임 시 리소스에 대한 액세스를 허용합니다. 권한 범위가 작업 수준까지 내려가도록 서비스 역할을 구성하는 것이 좋습니다.
+ CodePipeline 서비스 역할에 추가된 권한은 [CodePipeline 서비스 역할에 권한 추가](how-to-custom-role.md#how-to-update-role-new-services)에 자세히 설명되어 있습니다.
+ 콘솔에서 로그를 보는 데 필요한 권한은 [콘솔에서 컴퓨팅 로그를 보는 데 필요한 권한](security-iam-permissions-console-logs.md)에 자세히 설명되어 있습니다.
+ CodePipeline의 다른 작업과 달리 작업 구성에서는 필드를 설정하지 않고 작업 구성 외부에서 작업 구성 필드를 설정합니다.

## 서비스 역할 정책 권한
<a name="action-reference-Commands-policy"></a>

CodePipeline이 작업을 실행하면 CodePipeline은 다음과 같이 파이프라인 이름을 사용하여 로그 그룹을 생성합니다. 이렇게 하면 파이프라인 이름을 사용하여 리소스를 로깅할 수 있는 권한을 범위 아래로 지정할 수 있습니다.

```
/aws/codepipeline/MyPipelineName
```

기존 서비스 역할을 사용하는 경우 명령 작업을 사용하려면 서비스 역할에 대해 다음 권한을 추가해야 합니다.
+ logs:CreateLogGroup
+ logs:CreateLogStream
+ logs:PutLogEvents

서비스 역할 정책 설명에서 다음 예제와 같이 파이프라인 수준까지 권한의 범위를 좁힙니다.

```
{
    "Effect": "Allow",
    "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
    ],
    "Resource": [
        "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME",
        "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*"
   ]
}
```

작업 세부 정보 대화 상자를 사용하여 콘솔에서 로그를 보려면 로그를 볼 수 있는 권한을 콘솔 역할에 추가해야 합니다. 자세한 내용은 [콘솔에서 컴퓨팅 로그를 보는 데 필요한 권한](security-iam-permissions-console-logs.md)에서 콘솔 권한 정책 예제를 참조하세요.

## 작업 유형
<a name="action-reference-Commands-type"></a>
+ 범주: `Compute`
+ 소유자: `AWS`
+ 공급자: `Commands`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-Commands-config"></a>

**명령**  
필수 항목 여부: 예  
실행할 `Commands` 작업에 쉘 명령을 제공할 수 있습니다. 콘솔에서 명령은 별도의 줄에 입력됩니다. CLI에서 명령은 별도의 문자열로 입력됩니다.  
다중 라인 형식은 지원되지 않으며 오류 메시지가 표시됩니다. **명령** 필드에 명령을 입력하려면 단일 줄 형식을 사용해야 합니다.
EnvironmentType 및 ComputeType 값은 CodeBuild의 값과 일치합니다. 사용 가능한 유형의 하위 집합을 지원합니다. 자세한 내용은 [빌드 환경 컴퓨팅 유형](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html)을 참조하십시오.

**EnvironmentType**  
필수 여부: 아니요  
Commands 작업을 지원하는 빌드 환경의 OS 이미지입니다. 다음은 빌드 환경에 유효한 값입니다.  
+ LINUX\$1CONTAINER
+ WINDOWS\$1SERVER\$12022\$1CONTAINER
그러면 **EnvironmentType**을 선택하면 **ComputeType** 필드에서 해당 OS의 컴퓨팅 유형이 허용됩니다. 이 작업에 사용할 수 있는 CodeBuild 컴퓨팅 유형에 대한 자세한 내용은 CodeBuild 사용 설명서의 [빌드 환경 컴퓨팅 모드 및 유형](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html) 참조를 참조하세요.  
지정하지 않으면 빌드 환경의 컴퓨팅 기본값은 다음과 같습니다.  
+ **컴퓨팅 유형: **BUILD\$1GENERAL1\$1SMALL
+ **환경 유형:** LINUX\$1CONTAINER

**ComputeType**  
필수 여부: 아니요  
EnvironmentType에 대한 선택에 따라 컴퓨팅 유형을 제공할 수 있습니다. 다음은 컴퓨팅에 사용할 수 있는 값이지만 사용 가능한 옵션은 OS에 따라 다를 수 있습니다.  
+ BUILD\$1GENERAL1\$1SMALL
+ BUILD\$1GENERAL1\$1MEDIUM
+ BUILD\$1GENERAL1\$1LARGE
일부 컴퓨팅 유형은 특정 환경 유형과 호환되지 않습니다. 예를 들어 WINDOWS\$1SERVER\$12022\$1CONTAINER는 BUILD\$1GENERAL1\$1SMALL과 호환되지 않습니다. 호환되지 않는 조합을 사용하면 작업이 실패하고 런타임 오류가 발생합니다.

**outputVariables**  
필수 여부: 아니요  
내보낼 환경의 변수 이름을 지정합니다. CodeBuild 환경 변수에 대한 참조는 [CodeBuild 사용 설명서](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)의 *빌드 환경의 환경 변수*를 참조하세요.

**파일**  
필수 여부: 아니요  
작업에 대한 출력 아티팩트로 내보내려는 파일을 제공할 수 있습니다.  
지원되는 파일 형식은 CodeBuild 파일 패턴과 동일합니다. 예를 들어 모든 파일에 `**/`를 입력합니다. 자세한 내용은 *CodeBuild 사용 설명서*의 [CodeBuild용 빌드 사양 참조](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.artifacts.files)를 참조하세요.  

![\[명령 작업이 있는 새 파이프라인에 대한 작업 편집 페이지\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/commands-edit-screen.png)


**VpcId**  
필수 여부: 아니요  
리소스에 대한 VPC ID입니다.

**서브넷**  
필수 여부: 아니요  
VPC의 서브넷입니다. 이 필드는 명령이 VPC의 리소스에 연결해야 하는 경우에 필요합니다.

**SecurityGroupIds**  
필수 여부: 아니요  
VPC의 보안 그룹을 나열합니다. 이 필드는 명령이 VPC의 리소스에 연결해야 하는 경우에 필요합니다.

다음은 예제 환경 변수와 함께 환경 및 컴퓨팅 유형에 대한 구성 필드가 표시된 작업의 JSON 예제입니다.

```
 {
            "name": "Commands1",
            "actionTypeId": {
              "category": "Compute",
              "owner": "AWS",
              "provider": "Commands",
              "version": "1"
            },
            "inputArtifacts": [
              {
                "name": "SourceArtifact"
              }
            ],
            "commands": [
              "ls",
              "echo hello",
              "echo $BEDROCK_TOKEN",
            ],
            "configuration": {
              "EnvironmentType": "LINUX_CONTAINER",
              "ComputeType": "BUILD_GENERAL1_MEDIUM"
            },
            "environmentVariables": [
              {
                "name": "BEDROCK_TOKEN",
                "value": "apiTokens:bedrockToken",
                "type": "SECRETS_MANAGER"
              }
            ],
            "runOrder": 1
          }
```

## 입력 아티팩트
<a name="action-reference-Commands-input"></a>
+ **아티팩트 수:** `1 to 10`

## 출력 아티팩트
<a name="action-reference-Commands-output"></a>
+ **아티팩트 수:** `0 to 1` 

## 환경 변수
<a name="action-reference-Commands-envvars"></a>

**Key(키)**  
`BEDROCK_TOKEN`과 같은 키-값 환경 변수 페어의 키입니다.

**값**  
`apiTokens:bedrockToken`과 같은 키-값 페어의 값입니다. 파이프라인 작업 또는 파이프라인 변수의 출력 변수를 사용하여 값을 파라미터화할 수 있습니다.  
`SECRETS_MANAGER` 유형을 사용할 때이 값은 AWS Secrets Manager에 이미 저장한 보안 암호의 이름이어야 합니다.

**Type**  
환경 변수 값의 사용 유형을 지정합니다. 이때 값은 `PLAINTEXT` 또는 `SECRETS_MANAGER`가 될 수 있습니다. 값이 `SECRETS_MANAGER`인 경우 `EnvironmentVariable` 값에 보안 암호 참조를 제공합니다. 지정하지 않으면 기본적으로 `PLAINTEXT`가 사용됩니다.  
민감한 값, 특히 AWS 자격 증명을 저장하기 위해 *일반 텍스트* 환경 변수를 사용하지 않는 것이 좋습니다. CodeBuild 콘솔 또는 AWS CLI를 사용하면 *plaintext* 환경 변수가 일반 텍스트로 표시됩니다. 중요한 값의 경우 대신 `SECRETS_MANAGER` 유형을 사용하는 것이 좋습니다.

**참고**  
환경 변수 구성에 대해 `name`, `value` 및 `type`을 입력할 때, 특히 환경 변수에 CodePipeline 출력 변수 구문이 포함된 경우 구성 값 필드에 1000자 제한을 초과하지 마십시오. 이 제한을 초과하면 확인 오류가 반환됩니다.

환경 변수를 보여주는 예제 작업 선언은 [구성 파라미터](#action-reference-Commands-config) 섹션을 참조하세요.

**참고**  
`SECRETS_MANAGER` 유형은 Commands 작업에서만 지원됩니다.
Commands 작업에서 참조된 보안 암호는 CodeBuild와 유사한 빌드 로그에서 수정됩니다. 그러나 파이프라인에 대한 **편집** 액세스 권한이 있는 파이프라인 사용자는 명령을 수정하여 이러한 보안 암호 값에 계속 액세스할 수 있습니다.
SecretsManager를 사용하려면 파이프라인 서비스 역할에 다음 권한을 추가해야 합니다.  

  ```
  {
              "Effect": "Allow",
              "Action": [
                  "secretsmanager:GetSecretValue"
              ],
              "Resource": [
                  "SECRET_ARN"
              ]
          }
  ```

## 서비스 역할 권한: Commands 작업
<a name="edit-role-Commands"></a>

연결 지원의 경우 다음을 정책 설명에 추가합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:iam::*:role/Service*",
                "arn:aws:iam::*:role/Service*"
            ]
        }
    ]
}
```

------

## 작업 선언(예)
<a name="action-reference-Commands-example"></a>

------
#### [ YAML ]

```
name: Commands_action
actionTypeId:
  category: Compute
  owner: AWS
  provider: Commands
  version: '1'
runOrder: 1
configuration: {}
commands:
- ls
- echo hello
- 'echo pipeline Execution Id is #{codepipeline.PipelineExecutionId}'
outputArtifacts:
- name: BuildArtifact
  files:
  - **/
inputArtifacts:
- name: SourceArtifact
outputVariables:
- AWS_DEFAULT_REGION
region: us-east-1
namespace: compute
```

------
#### [ JSON ]

```
{
    "name": "Commands_action",
    "actionTypeId": {
        "category": "Compute",
        "owner": "AWS",
        "provider": "Commands",
        "version": "1"
    },
    "runOrder": 1,
    "configuration": {},
    "commands": [
        "ls",
        "echo hello",
        "echo pipeline Execution Id is #{codepipeline.PipelineExecutionId}"
    ],
    "outputArtifacts": [
        {
            "name": "BuildArtifact",
            "files": [
                "**/"
            ]
        }
    ],
    "inputArtifacts": [
        {
            "name": "SourceArtifact"
        }
    ],
    "outputVariables": [
        "AWS_DEFAULT_REGION"
    ],
    "region": "us-east-1",
    "namespace": "compute"
}
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-Commands-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [자습서: 컴퓨팅으로 명령을 실행하는 파이프라인 생성(V2 유형)](tutorials-commands.md) - 이 자습서에서는 명령 작업이 포함된 샘플 파이프라인을 제공합니다.

# AWS Device Farm 테스트 작업 참조
<a name="action-reference-DeviceFarm"></a>

파이프라인에서가 디바이스에서 애플리케이션을 실행하고 테스트하는 AWS Device Farm 데 사용하는 테스트 작업을 구성할 수 있습니다. Device Farm은 디바이스의 테스트 풀과 테스트 프레임워크를 사용하여 특정 디바이스에서 애플리케이션을 테스트합니다. Device Farm 작업에서 지원하는 테스트 프레임워크 유형에 대한 자세한 내용은 [Work with Test Types in AWS Device Farm](https://docs.aws.amazon.com/devicefarm/latest/developerguide/test-types.html)을 참조하세요.

**Topics**
+ [작업 유형](#action-reference-DeviceFarm-type)
+ [구성 파라미터](#action-reference-DeviceFarm-config)
+ [입력 아티팩트](#action-reference-DeviceFarm-input)
+ [출력 아티팩트](#action-reference-DeviceFarm-output)
+ [서비스 역할 권한: AWS Device Farm 작업](#edit-role-devicefarm)
+ [작업 선언](#action-reference-DeviceFarm-example)
+ [다음 사항도 참조하세요.](#action-reference-DeviceFarm-links)

## 작업 유형
<a name="action-reference-DeviceFarm-type"></a>
+ 범주: `Test`
+ 소유자: `AWS`
+ 공급자: `DeviceFarm`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-DeviceFarm-config"></a>

**AppType**  
필수 항목 여부: 예  
테스트 중인 애플리케이션의 OS 및 유형입니다. 유효한 값 목록은 다음과 같습니다.  
+ `iOS`
+ `Android`
+ `Web`

**ProjectId**  
필수 항목 여부: 예  
Device Farm 프로젝트 ID입니다.  
프로젝트 ID를 찾으려면 Device Farm 콘솔에서 프로젝트를 선택합니다. 브라우저에서 새 프로젝트의 URL을 복사합니다. URL에 프로젝트 ID가 포함되어 있습니다. 프로젝트 ID는 `projects/` 뒤에 있는 URL의 값입니다. 다음 예제에서 프로젝트 ID는 `eec4905f-98f8-40aa-9afc-4c1cfexample`입니다.  

```
https://<region-URL>/devicefarm/home?region=us-west-2#/projects/eec4905f-98f8-40aa-9afc-4c1cfexample/runs
```

**앱**  
필수 항목 여부: 예  
입력 아티팩트에 있는 애플리케이션 파일의 이름과 위치입니다. 예: `s3-ios-test-1.ipa`

**TestSpec**  
조건부: 예  
입력 아티팩트에 있는 테스트 사양 정의 파일의 위치입니다. 이는 사용자 정의 모드 테스트에 필요합니다.

**DevicePoolArn**  
필수 항목 여부: 예  
Device Farm 디바이스 풀 ARN.  
상위 디바이스에 대한 ARNs을 포함하여 프로젝트에 사용 가능한 디바이스 풀 ARN을 가져오려면 AWS CLI를 사용하여 다음 명령을 입력합니다.  

```
aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:account_ID:project:project_ID
```

**TestType**  
필수 항목 여부: 예  
테스트에 지원되는 테스트 프레임워크를 지정합니다. `TestType`의 유효한 값 목록은 다음과 같습니다.  
+ **APPIUM\$1JAVA\$1JUNIT**
+ **APPIUM\$1JAVA\$1TESTNG**
+ **APPIUM\$1NODE**
+ **APPIUM\$1RUBY**
+ **APPIUM\$1PYTHON**
+ **APPIUM\$1WEB\$1JAVA\$1JUNIT**
+ **APPIUM\$1WEB\$1JAVA\$1TESTNG**
+ **APPIUM\$1WEB\$1NODE**
+ **APPIUM\$1WEB\$1RUBY**
+ **APPIUM\$1WEB\$1PYTHON**
+ **BUILTIN\$1FUZZ**
+ **INSTRUMENTATION**
+ **XCTEST**
+ **XCTEST\$1UI**
CodePipeline의 작업에서 지원되지 않는 테스트 유형은 `WEB_PERFORMANCE_PROFILE`, `REMOTE_ACCESS_RECORD` 및 `REMOTE_ACCESS_REPLAY`입니다.
Device Farm 테스트 유형에 대한 자세한 내용은 [AWS Device Farm에서 테스트 유형을 사용한 작업](https://docs.aws.amazon.com/devicefarm/latest/developerguide/test-types.html)을 참조하세요.

**RadioBluetoothEnabled**  
필수 여부: 아니요  
테스트 시작 시 Bluetooth를 활성화할지 여부를 나타내는 부울 값입니다.

**RecordAppPerformanceData**  
필수 여부: 아니요  
테스트 중에 CPU, FPS, 메모리 성능과 같은 기기 성능 데이터를 기록할지 여부를 나타내는 부울 값입니다.

**RecordVideo**  
필수 여부: 아니요  
테스트 중에 비디오를 녹화할지 여부를 나타내는 부울 값입니다.

**RadioWifiEnabled**  
필수 여부: 아니요  
테스트 시작 시 Wi-Fi를 활성화할지 여부를 나타내는 부울 값입니다.

**RadioNfcEnabled**  
필수 여부: 아니요  
테스트 시작 시 NFC를 활성화할지 여부를 나타내는 부울 값입니다.

**RadioGpsEnabled**  
필수 여부: 아니요  
테스트 시작 시 GPS를 활성화할지 여부를 나타내는 부울 값입니다.

**테스트**  
필수 여부: 아니요  
소스 위치에 있는 테스트 정의 파일의 이름 및 경로입니다. 경로는 테스트용 입력 아티팩트의 루트와 상대적입니다.

**FuzzEventCount**  
필수 여부: 아니요  
fuzz 테스트가 수행할 사용자 인터페이스 이벤트 수로, 1에서 10,000 사이입니다.

**FuzzEventThrottle**  
필수 여부: 아니요  
다음 사용자 인터페이스 이벤트를 수행하기 전에 fuzz 테스트가 대기할 시간을 밀리초 단위로 나타내는 숫자로, 1에서 1,000 사이입니다.

**FuzzRandomizerSeed**  
필수 여부: 아니요  
사용자 인터페이스 이벤트를 무작위화하는 데 사용할 fuzz 테스트의 시드입니다. 후속 fuzz 테스트에 동일한 숫자를 사용하면 동일한 이벤트 시퀀스가 생성됩니다.

**CustomHostMachineArtifacts**  
필수 여부: 아니요  
사용자 지정 아티팩트가 저장될 호스트 시스템의 위치입니다.

**CustomDeviceArtifacts**  
필수 여부: 아니요  
사용자 지정 아티팩트가 저장될 디바이스의 위치입니다.  


**UnmeteredDevicesOnly**  
필수 여부: 아니요  
이 단계에서 테스트를 실행할 때 무제한 디바이스만 사용할지 여부를 나타내는 부울 값입니다.

**JobTimeoutMinutes**  
필수 여부: 아니요  
시간 초과되기 전에 디바이스당 테스트 실행이 실행되는 시간(분)입니다.

**위도**  
필수 여부: 아니요  
지리 좌표계 각도로 표시되는 디바이스의 위도입니다.

**경도**  
필수 여부: 아니요  
지리 좌표계 각도로 표시되는 디바이스의 경도입니다.

## 입력 아티팩트
<a name="action-reference-DeviceFarm-input"></a>
+ **아티팩트 수:** `1`
+ **설명:** 테스트 작업에서 사용할 수 있도록 할 아티팩트 세트입니다. Device Farm은 사용할 빌드된 애플리케이션과 테스트 정의를 찾습니다.

## 출력 아티팩트
<a name="action-reference-DeviceFarm-output"></a>
+ **아티팩트 수:** `0` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

## 서비스 역할 권한: AWS Device Farm 작업
<a name="edit-role-devicefarm"></a>

CodePipeline이 작업을 실행하면 최소 권한으로 액세스를 유지하기 위해 CodePipeline 서비스 역할 정책에 파이프라인 리소스 ARN으로 범위가 적절하게 축소된 다음 최소 권한이 필요합니다. 예를 들어 다음을 정책 설명에 추가합니다.

```
{
    "Effect": "Allow",
    "Action": [
        "devicefarm:ListProjects",
        "devicefarm:ListDevicePools",
        "devicefarm:GetRun",
        "devicefarm:GetUpload",
        "devicefarm:CreateUpload",
        "devicefarm:ScheduleRun"
    ],
    "Resource": "resource_ARN"
},
```

## 작업 선언
<a name="action-reference-DeviceFarm-example"></a>

------
#### [ YAML ]

```
Name: Test
Actions:
  - Name: TestDeviceFarm
    ActionTypeId: null
    category: Test
    owner: AWS
    provider: DeviceFarm
    version: '1'
RunOrder: 1
Configuration:
  App: s3-ios-test-1.ipa
  AppType: iOS
  DevicePoolArn: >-
    arn:aws:devicefarm:us-west-2::devicepool:0EXAMPLE-d7d7-48a5-ba5c-b33d66efa1f5
  ProjectId: eec4905f-98f8-40aa-9afc-4c1cfEXAMPLE
  TestType: APPIUM_PYTHON
  TestSpec: example-spec.yml
OutputArtifacts: []
InputArtifacts:
  - Name: SourceArtifact
Region: us-west-2
```

------
#### [ JSON ]

```
{
    "Name": "Test",
    "Actions": [
        {
            "Name": "TestDeviceFarm",
            "ActionTypeId": null,
            "category": "Test",
            "owner": "AWS",
            "provider": "DeviceFarm",
            "version": "1"
        }
    ],
    "RunOrder": 1,
    "Configuration": {
        "App": "s3-ios-test-1.ipa",
        "AppType": "iOS",
        "DevicePoolArn": "arn:aws:devicefarm:us-west-2::devicepool:0EXAMPLE-d7d7-48a5-ba5c-b33d66efa1f5",
        "ProjectId": "eec4905f-98f8-40aa-9afc-4c1cfEXAMPLE",
        "TestType": "APPIUM_PYTHON",
        "TestSpec": "example-spec.yml"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "SourceArtifact"
        }
    ],
    "Region": "us-west-2"
},
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-DeviceFarm-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [Device Farm의 테스트 유형 작업](https://docs.aws.amazon.com/devicefarm/latest/developerguide/test-types.html) - *Device Farm 개발자 안내서*의 이 참조 장에서는 Device Farm에서 지원하는 Android, iOS 및 웹 애플리케이션 테스트 프레임워크에 대한 자세한 설명을 제공합니다.
+ [Device Farm의 작업](https://docs.aws.amazon.com/devicefarm/latest/APIReference/Welcome.html) - *Device Farm API 참조*의 API 직접 호출 및 파라미터는 Device Farm 프로젝트 작업에 도움이 될 수 있습니다.
+ [자습서:를 사용하여 Android 앱을 빌드하고 테스트하는 파이프라인 생성 AWS Device Farm](tutorials-codebuild-devicefarm.md) - 이 자습서는 CodeBuild 및 Device Farm을 사용하여 Android 앱을 빌드 및 테스트하는 GitHub 소스가 있는 파이프라인을 생성하기 위한 샘플 빌드 사양 파일과 샘플 애플리케이션을 제공합니다.
+ [자습서:를 사용하여 iOS 앱을 테스트하는 파이프라인 생성 AWS Device Farm](tutorials-codebuild-devicefarm-S3.md) - 이 자습서에서는 Device Farm으로 빌드된 iOS 앱을 테스트하는 Amazon S3 소스로 파이프라인을 생성하는 샘플 애플리케이션을 제공합니다.

# Elastic Beanstalk 배포 작업 참조
<a name="action-reference-Beanstalk"></a>

Elastic Beanstalk는 웹 애플리케이션을 배포하고 확장 AWS 하는 데 사용되는 내의 플랫폼입니다. Elastic Beanstalk 작업을 사용하여 애플리케이션 코드를 배포 환경에 배포합니다.

**Topics**
+ [작업 유형](#action-reference-Beanstalk-type)
+ [구성 파라미터](#action-reference-Beanstalk-config)
+ [입력 아티팩트](#action-reference-Beanstalk-input)
+ [출력 아티팩트](#action-reference-Beanstalk-output)
+ [서비스 역할 권한: `ElasticBeanstalk` 배포 작업](#edit-role-beanstalk)
+ [작업 선언](#action-reference-Beanstalk-example)
+ [다음 사항도 참조하세요.](#action-reference-Beanstalk-links)

## 작업 유형
<a name="action-reference-Beanstalk-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `ElasticBeanstalk`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-Beanstalk-config"></a>

**ApplicationName**  
필수 항목 여부: 예  
Elastic Beanstalk에서 생성한 애플리케이션 이름입니다.

**EnvironmentName**  
필수 항목 여부: 예  
Elastic Beanstalk에서 생성한 환경의 이름입니다. 환경은 애플리케이션 버전을 실행하는 AWS 리소스 모음입니다. 각 환경은 한 번에 하나의 애플리케이션 버전만 실행하지만 여러 환경에서 동일한 애플리케이션 버전 또는 서로 다른 애플리케이션 버전을 동시에 실행할 수 있습니다.

## 입력 아티팩트
<a name="action-reference-Beanstalk-input"></a>
+ **아티팩트 수:** `1`
+ **설명**: 작업을 위한 입력 아티팩트입니다.

## 출력 아티팩트
<a name="action-reference-Beanstalk-output"></a>
+ **아티팩트 수:** `0` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

## 서비스 역할 권한: `ElasticBeanstalk` 배포 작업
<a name="edit-role-beanstalk"></a>

Elastic Beanstalk의 경우 `ElasticBeanstalk` 배포 작업을 통해 파이프라인을 만드는 데 필요한 최소 권한은 다음과 같습니다.

```
{
    "Effect": "Allow",
    "Action": [
        "elasticbeanstalk:*",
        "ec2:*",
        "elasticloadbalancing:*",
        "autoscaling:*",
        "cloudwatch:*",
        "s3:*",
        "sns:*",
        "cloudformation:*",
        "rds:*",
        "sqs:*",
        "ecs:*"
    ],
    "Resource": "resource_ARN"
},
```

**참고**  
리소스 정책의 와일드카드를 액세스를 제한하려는 계정의 리소스로 바꿔야 합니다. 최소 권한 액세스 권한을 부여하는 정책 생성에 대한 자세한 내용은 [https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) 단원을 참조하세요.

## 작업 선언
<a name="action-reference-Beanstalk-example"></a>

------
#### [ YAML ]

```
Name: Deploy
Actions:
  - Name: Deploy
    ActionTypeId:
      Category: Deploy
      Owner: AWS
      Provider: ElasticBeanstalk
      Version: '1'
    RunOrder: 1
    Configuration:
      ApplicationName: my-application
      EnvironmentName: my-environment
    OutputArtifacts: []
    InputArtifacts:
      - Name: SourceArtifact
    Region: us-west-2
    Namespace: DeployVariables
```

------
#### [ JSON ]

```
{
    "Name": "Deploy",
    "Actions": [
        {
            "Name": "Deploy",
            "ActionTypeId": {
                "Category": "Deploy",
                "Owner": "AWS",
                "Provider": "ElasticBeanstalk",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "ApplicationName": "my-application",
                "EnvironmentName": "my-environment"
            },
            "OutputArtifacts": [],
            "InputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "Region": "us-west-2",
            "Namespace": "DeployVariables"
        }
    ]
},
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-Beanstalk-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [Elastic Beanstalk에 Flask 애플리케이션 배포](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html) - 이 자습서에서는 샘플 Flask 애플리케이션을 사용하여 Elastic Beanstalk에서 애플리케이션 및 환경 리소스를 생성하는 방법을 안내합니다. 그런 다음 소스 리포지토리에서 Elastic Beanstalk 환경으로 애플리케이션을 배포하는 Elastic Beanstalk 배포 작업을 사용하여 파이프라인을 빌드할 수 있습니다.

# Amazon Inspector `InspectorScan` 간접 호출 작업 참조
<a name="action-reference-InspectorScan"></a>

Amazon Inspector는 워크로드를 자동으로 검색하고 소프트웨어 취약성 및 의도하지 않은 네트워크 노출이 있는지 지속적으로 스캔하는 취약성 관리 서비스입니다. CodePipeline의 `InspectorScan` 작업은 오픈 소스 코드의 보안 취약성을 자동으로 탐지하고 수정합니다. 작업은 보안 스캔 기능이 있는 관리형 컴퓨팅 작업입니다. InspectorScan은 GitHub 또는 Bitbucket Cloud와 같은 타사 리포지토리의 애플리케이션 소스 코드 또는 컨테이너 애플리케이션용 이미지와 함께 사용할 수 있습니다. 작업은 사용자가 구성한 취약성 수준과 경고를 스캔하고 보고합니다.

**중요**  
이 작업은 CodePipeline 관리형 CodeBuild 컴퓨팅을 사용하여 빌드 환경에서 명령을 실행합니다. 작업을 실행하면 AWS CodeBuild에서 별도의 요금이 발생합니다.

**Topics**
+ [작업 유형 ID](#action-reference-InspectorScan-type)
+ [구성 파라미터](#action-reference-InspectorScan-parameters)
+ [입력 아티팩트](#action-reference-InspectorScan-input)
+ [출력 아티팩트](#action-reference-InspectorScan-output)
+ [출력 변수](#w2aac56c62c19)
+ [서비스 역할 권한: `InspectorScan` 작업](#edit-role-InspectorScan)
+ [작업 선언](#w2aac56c62c23)
+ [다음 사항도 참조하세요.](#action-reference-InspectorScan-links)

## 작업 유형 ID
<a name="action-reference-InspectorScan-type"></a>
+ 범주: `Invoke`
+ 소유자: `AWS`
+ 공급자: `InspectorScan`
+ 버전: `1`

예제:

```
            {
                "Category": "Invoke",
                "Owner": "AWS",
                "Provider": "InspectorScan",
                "Version": "1"
            },
```

## 구성 파라미터
<a name="action-reference-InspectorScan-parameters"></a>

**InspectorRunMode**  
(필수) 스캔 모드를 나타내는 문자열입니다. 유효한 값은 `SourceCodeScan | ECRImageScan`입니다.

**ECRRepositoryName**  
이미지가 푸시된 Amazon ECR 리포지토리의 이름입니다.

**ImageTag**  
이미지에 사용되는 태그입니다.

이 작업의 파라미터는 지정한 취약성 수준을 스캔합니다. 취약성 임계값에 사용할 수 있는 수준은 다음과 같습니다.

**CriticalThreshold **  
CodePipeline이 작업에 실패해야 하는 소스에서 발견된 중요 심각도 취약성 수입니다.

**HighThreshold **  
CodePipeline이 작업에 실패해야 하는 소스에서 발견된 높은 심각도 취약성 수입니다.

**MediumThreshold**  
CodePipeline이 작업에 실패해야 하는 소스에서 발견된 중간 심각도 취약성 수입니다.

**LowThreshold **  
CodePipeline이 작업에 실패해야 하는 소스에서 발견된 낮은 심각도 취약성 수입니다.

![\[\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/inspectorscan-edit.png)


## 입력 아티팩트
<a name="action-reference-InspectorScan-input"></a>
+ **아티팩트 수:** `1`
+ **설명:** 취약성을 검사할 소스 코드입니다. 스캔이 ECR 리포지토리용인 경우이 입력 아티팩트는 필요하지 않습니다.

## 출력 아티팩트
<a name="action-reference-InspectorScan-output"></a>
+ **아티팩트 수:** `1`
+ **설명:** SBOM(소프트웨어 자재 명세서) 파일 형식의 소스 취약성 세부 정보입니다.

## 출력 변수
<a name="w2aac56c62c19"></a>

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

자세한 내용은 [변수 참조](reference-variables.md) 단원을 참조하십시오.

**HighestScannedSeverity **  
스캔의 가장 높은 심각도 출력입니다. 유효한 값은 `medium | high | critical`입니다.

## 서비스 역할 권한: `InspectorScan` 작업
<a name="edit-role-InspectorScan"></a>

`InspectorScan` 작업 지원의 경우 다음을 정책 설명에 추가합니다.

```
{
        "Effect": "Allow",
        "Action": "inspector-scan:ScanSbom",
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "ecr:GetDownloadUrlForLayer",
            "ecr:BatchGetImage",
            "ecr:BatchCheckLayerAvailability"
        ],
        "Resource": "resource_ARN"
    },
```

또한 Commands 작업에 아직 추가되지 않은 경우 서비스 역할에 다음 권한을 추가하여 CloudWatch 로그를 확인합니다.

```
{
    "Effect": "Allow",
    "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream", 
        "logs:PutLogEvents"
    ],
    "Resource": "resource_ARN"
},
```

**참고**  
서비스 역할 정책 문의 리소스 기반 권한을 사용하여 파이프라인 리소스 수준으로 권한 범위를 좁힙니다.

## 작업 선언
<a name="w2aac56c62c23"></a>

------
#### [ YAML ]

```
name: Scan
actionTypeId:
  category: Invoke
  owner: AWS
  provider: InspectorScan
  version: '1'
runOrder: 1
configuration:
  InspectorRunMode: SourceCodeScan
outputArtifacts:
- name: output
inputArtifacts:
- name: SourceArtifact
region: us-east-1
```

------
#### [ JSON ]

```
{
                        "name": "Scan",
                        "actionTypeId": {
                            "category": "Invoke",
                            "owner": "AWS",
                            "provider": "InspectorScan",
                            "version": "1"
                        },
                        "runOrder": 1,
                        "configuration": {
                            "InspectorRunMode": "SourceCodeScan"
                        },
                        "outputArtifacts": [
                            {
                                "name": "output"
                            }
                        ],
                        "inputArtifacts": [
                            {
                                "name": "SourceArtifact"
                            }
                        ],
                        "region": "us-east-1"
                    },
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-InspectorScan-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ Amazon Inspector에 대한 자세한 내용은 [Amazon Inspector](https://aws.amazon.com/inspector/) 사용 설명서를 참조하세요.

# AWS Lambda 작업 참조 호출
<a name="action-reference-Lambda"></a>

Lambda 함수를 파이프라인의 작업으로 실행할 수 있습니다. 이 함수에 대한 입력인 이벤트 객체를 사용하면 함수가 작업 구성, 입력 아티팩트 위치, 출력 아티팩트 위치, 및 아티팩트에 액세스하는 데 필요한 기타 정보에 액세스할 수 있습니다. Lambda 간접 호출 함수에 전달되는 예제 이벤트는 [예제 JSON 이벤트](#action-reference-Lambda-event) 단원을 참조하세요. Lambda 함수 구현의 일환으로 `[PutJobSuccessResult API](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PutJobSuccessResult.html)` 또는 `[PutJobFailureResult API](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PutJobFailureResult.html)`에 대한 호출이 있어야 합니다. 그렇지 않으면 작업이 시간 초과될 때까지 이 작업의 실행이 중단됩니다. 작업에 대한 출력 아티팩트를 지정하면 함수 구현의 일환으로 해당 아티팩트를 S3 버킷에 업로드해야 합니다.

**중요**  
CodePipeline이 Lambda로 전송하는 JSON 이벤트를 기록하지 마십시오. 이렇게 하면 사용자 보안 인증이 CloudWatch Logs에 기록될 수 있기 때문입니다. CodePipeline 역할은 JSON 이벤트를 사용하여 `artifactCredentials` 필드의 Lambda에 임시 보안 인증을 전달합니다. 예제 이벤트는 [예제 JSON 이벤트](actions-invoke-lambda-function.md#actions-invoke-lambda-function-json-event-example)을 참조하세요.

## 작업 유형
<a name="action-reference-Lambda-type"></a>
+ 범주: `Invoke`
+ 소유자: `AWS`
+ 공급자: `Lambda`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-Lambda-config"></a>

**FunctionName**  
필수 항목 여부: 예  
`FunctionName`은 Lambda에서 생성된 함수의 이름입니다.

**UserParameters**  
필수 여부: 아니요  
Lambda 함수에서 입력으로 처리할 수 있는 문자열입니다.

## 입력 아티팩트
<a name="action-reference-Lambda-input"></a>
+ **아티팩트 수:** `0 to 5`
+ **설명:** Lambda 함수에서 사용할 수 있도록 할 아티팩트 세트입니다.

## 출력 아티팩트
<a name="action-reference-Lambda-output"></a>
+ **아티팩트 수:** `0 to 5` 
+ **설명:** Lambda 함수에서 출력으로 생성한 아티팩트 세트입니다.

## 출력 변수
<a name="action-reference-Lambda-variables"></a>

이 작업을 수행하면 [PutJobSuccessResult API](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PutJobSuccessResult.html) 요청의 `outputVariables` 섹션에 포함된 모든 키-값 페어가 변수로 생성됩니다.

CodePipeline의 변수에 대한 자세한 내용은 [변수 참조](reference-variables.md) 단원을 참조하세요.

## 예제 작업 구성
<a name="action-reference-Lambda-example"></a>

------
#### [ YAML ]

```
Name: Lambda
Actions:
  - Name: Lambda
    ActionTypeId:
      Category: Invoke
      Owner: AWS
      Provider: Lambda
      Version: '1'
    RunOrder: 1
    Configuration:
      FunctionName: myLambdaFunction
      UserParameters: 'http://192.0.2.4'
    OutputArtifacts: []
    InputArtifacts: []
    Region: us-west-2
```

------
#### [ JSON ]

```
{
    "Name": "Lambda",
    "Actions": [
        {
            "Name": "Lambda",
            "ActionTypeId": {
                "Category": "Invoke",
                "Owner": "AWS",
                "Provider": "Lambda",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "FunctionName": "myLambdaFunction",
                "UserParameters": "http://192.0.2.4"
            },
            "OutputArtifacts": [],
            "InputArtifacts": [],
            "Region": "us-west-2"
        }
    ]
},
```

------

## 예제 JSON 이벤트
<a name="action-reference-Lambda-event"></a>

Lambda 작업은 작업 ID, 파이프라인 작업 구성, 입력 및 출력 아티팩트 위치, 아티팩트에 대한 모든 암호화 정보가 포함된 JSON 이벤트를 전송합니다. 작업자가 이 세부 정보에 액세스하여 Lambda 작업을 완료합니다. 자세한 내용은 [작업 세부 정보](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_JobDetails.html)를 참조하십시오. 다음은 이벤트 예제입니다.

```
{
    "CodePipeline.job": {
        "id": "11111111-abcd-1111-abcd-111111abcdef",
        "accountId": "111111111111",
        "data": {
            "actionConfiguration": {
                "configuration": {
                    "FunctionName": "MyLambdaFunction",
                    "UserParameters": "input_parameter"
                }
            },
            "inputArtifacts": [
                {
                    "location": {
                        "s3Location": {
                            "bucketName": "bucket_name",
                            "objectKey": "filename"
                        },
                        "type": "S3"
                    },
                    "revision": null,
                    "name": "ArtifactName"
                }
            ],
            "outputArtifacts": [],
            "artifactCredentials": {
                "secretAccessKey": "secret_key",
                "sessionToken": "session_token",
                "accessKeyId": "access_key_ID"
            },
            "continuationToken": "token_ID",
            "encryptionKey": { 
              "id": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
              "type": "KMS"
            }
        }
    }
}
```

JSON 이벤트는 CodePipeline의 Lambda 작업에 대한 다음과 같은 작업 세부 정보를 제공합니다.
+ `id`: 작업의 고유한 시스템 생성 ID입니다.
+ `accountId`: 작업과 연결된 AWS 계정 ID입니다.
+ `data`: 작업자가 작업을 완료하는 데 필요한 기타 정보입니다.
  + `actionConfiguration`: Lambda 작업에 대한 작업 파라미터입니다. 정의는 [구성 파라미터](#action-reference-Lambda-config) 단원을 참조하십시오.
  + `inputArtifacts`: 작업에 제공된 아티팩트입니다.
    + `location`: 아티팩트 스토어 위치입니다.
      + `s3Location`: 작업에 대한 입력 아티팩트 위치 정보입니다.
        + `bucketName`: 작업에 대한 파이프라인 아티팩트 스토어의 이름입니다(예: 이름이 codepipeline-us-east-2-1234567890인 Amazon S3 버킷).
        + `objectKey`: 애플리케이션 이름입니다(예: `CodePipelineDemoApplication.zip`).
      + `type`: 위치에서 아티팩트의 유형입니다. 현재 유효한 아티팩트 유형은 `S3`뿐입니다.
    + `revision`: 아티팩트의 개정 ID입니다. 객체 유형에 따라 커밋 ID(GitHub) 또는 개정 ID(Amazon Simple Storage Service)일 수 있습니다. 자세한 내용은 [ArtifactRevision](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_ArtifactRevision.html)을 참조하십시오.
    + `name`: 작업할 아티팩트의 이름입니다(예: `MyApp`).
  + `outputArtifacts`: 작업의 출력입니다.
    + `location`: 아티팩트 스토어 위치입니다.
      + `s3Location`: 작업에 대한 출력 아티팩트 위치 정보입니다.
        + `bucketName`: 작업에 대한 파이프라인 아티팩트 스토어의 이름입니다(예: 이름이 codepipeline-us-east-2-1234567890인 Amazon S3 버킷).
        + `objectKey`: 애플리케이션 이름입니다(예: `CodePipelineDemoApplication.zip`).
      + `type`: 위치에서 아티팩트의 유형입니다. 현재 유효한 아티팩트 유형은 `S3`뿐입니다.
    + `revision`: 아티팩트의 개정 ID입니다. 객체 유형에 따라 커밋 ID(GitHub) 또는 개정 ID(Amazon Simple Storage Service)일 수 있습니다. 자세한 내용은 [ArtifactRevision](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_ArtifactRevision.html)을 참조하십시오.
    + `name`: 아티팩트의 출력 이름입니다(예: `MyApp`).
  + `artifactCredentials`: Amazon S3 버킷의 입력 및 출력 아티팩트에 액세스하는 데 사용되는 AWS 세션 자격 증명입니다. 이러한 자격 증명은 AWS Security Token Service (AWS STS)에서 발급한 임시 자격 증명입니다.
    + `secretAccessKey`: 세션에 대한 보안 액세스 키입니다.
    + `sessionToken`: 세션에 대한 토큰입니다.
    + `accessKeyId`: 세션에 대한 보안 액세스 키입니다.
  + `continuationToken`: 작업에서 생성하는 토큰입니다. 향후 작업에서는 이 토큰을 사용하여 실행 중인 작업 인스턴스를 식별합니다. 작업이 완료되면 구성 토큰이 제공되지 않아야 합니다.
  + `encryptionKey`: 키와 같은 아티팩트 스토어의 데이터를 암호화하는 데 사용되는 암호화 AWS KMS 키입니다. 정의하지 않으면 Amazon Simple Storage Service의 기본 키가 사용됩니다.
    + `id`: 키를 식별하는 데 사용되는 ID입니다. AWS KMS 키의 경우 키 ID, 키 ARN 또는 별칭 ARN을 사용할 수 있습니다.
    + `type`: 암호화 키의 유형입니다(예: AWS KMS 키).

## 다음 사항도 참조하세요.
<a name="action-reference-Lambda-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [AWS CloudFormation 사용 설명서](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/) - 파이프라인의 Lambda 작업 및 아 CloudFormation 티팩트에 대한 자세한 내용은 [ CodePipeline 파이프라인에서 파라미터 재정의 함수 사용](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-parameter-override-functions.html), [Lambda 기반 애플리케이션 및 아티팩트 배포 자동화](https://docs.aws.amazon.com/lambda/latest/dg/automating-deployment.html)[AWS CloudFormation 를 참조하세요](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-cfn-artifacts.html).
+ [CodePipeline의 파이프라인에서 AWS Lambda 함수 호출](actions-invoke-lambda-function.md) - 이 절차에서는 샘플 Lambda 함수를 제공하며 콘솔을 사용하여 Lambda 간접 호출 작업이 있는 파이프라인을 생성하는 방법을 보여줍니다.

# AWS OpsWorks 배포 작업 참조
<a name="action-reference-OpsWorks"></a>

 AWS OpsWorks 작업을 사용하여 파이프라인을 사용하여 OpsWorks와 함께 배포합니다.

## 작업 유형
<a name="action-reference-StepFunctions-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `OpsWorks`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-OpsWorks-config"></a>

**앱**  
필수 항목 여부: 예  
 OpsWorks 스택입니다. 스택은 애플리케이션 인프라의 컨테이너입니다.

**스택**  
필수 항목 여부: 예  
 OpsWorks 앱입니다. 앱은 배포하고 실행하려는 코드를 나타냅니다.

**계층**  
필수 여부: 아니요  
 OpsWorks 스택입니다. 계층은 인스턴스 세트에 대한 구성 및 리소스를 지정합니다.

## 입력 아티팩트
<a name="action-reference-OpsWorks-input"></a>
+ **아티팩트 수:** `1`
+ **설명:** 작업에 대한 입력 아티팩트입니다.

## 출력 아티팩트
<a name="action-reference-OpsWorks-output"></a>
+ **아티팩트 수:** `0 to 1` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

## 서비스 역할 권한: AWS OpsWorks 작업
<a name="edit-role-opsworks"></a>

 AWS OpsWorks 지원을 받으려면 정책 설명에 다음을 추가합니다.

```
{
    "Effect": "Allow",
    "Action": [
        "opsworks:CreateDeployment",
        "opsworks:DescribeApps",
        "opsworks:DescribeCommands",
        "opsworks:DescribeDeployments",
        "opsworks:DescribeInstances",
        "opsworks:DescribeStacks",
        "opsworks:UpdateApp",
        "opsworks:UpdateStack"
    ],
    "Resource": "resource_ARN"
},
```

## 예제 작업 구성
<a name="action-reference-OpsWorks-example"></a>

------
#### [ YAML ]

```
Name: ActionName
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Version: 1
  Provider: OpsWorks
InputArtifacts:
  - Name: myInputArtifact
Configuration:
  Stack: my-stack
  App: my-app
```

------
#### [ JSON ]

```
{
    "Name": "ActionName",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Version": 1,
        "Provider": "OpsWorks"
    },
    "InputArtifacts": [
        {
            "Name": "myInputArtifact"
        }
    ],
    "Configuration": {
        "Stack": "my-stack",
        "App": "my-app"
    }
}
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-OpsWorks-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [AWS OpsWorks 사용 설명서](https://docs.aws.amazon.com/step-functions/latest/dg/) -를 사용하여 배포하는 방법에 대한 자세한 내용은 *AWS OpsWorks 사용 설명서를* AWS OpsWorks참조하세요.

# AWS Service Catalog 배포 작업 참조
<a name="action-reference-ServiceCatalog"></a>

 AWS Service Catalog 작업을 사용하여 파이프라인을 사용하여 템플릿을 배포합니다. Service Catalog에서 생성한 리소스 템플릿입니다.

## 작업 유형
<a name="action-reference-ServiceCatalog-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `ServiceCatalog`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-ServiceCatalog-config"></a>

**TemplateFilePath**  
필수 항목 여부: 예  
소스 위치에 있는 리소스 템플릿의 파일 경로입니다.

**ProductVersionName**  
필수 항목 여부: 예  
Service Catalog의 제품 버전입니다.

**ProductType**  
필수 항목 여부: 예  
Service Catalog의 제품 유형입니다.

**ProductId**  
필수 항목 여부: 예  
Service Catalog의 제품 ID입니다.

**ProductVersionDescription**  
필수 여부: 아니요  
Service Catalog의 제품 버전 설명입니다.

## 입력 아티팩트
<a name="action-reference-ServiceCatalog-input"></a>
+ **아티팩트 수:** `1`
+ **설명:** 작업에 대한 입력 아티팩트입니다.

## 출력 아티팩트
<a name="action-reference-ServiceCatalog-output"></a>
+ **아티팩트 수:** `0` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

## 서비스 역할 권한: Service Catalog 작업
<a name="edit-role-servicecatalog"></a>

Service Catalog 지원의 경우 다음을 정책 설명에 추가합니다.

```
{
    "Effect": "Allow",
    "Action": [
        "servicecatalog:ListProvisioningArtifacts",
        "servicecatalog:CreateProvisioningArtifact",
        "servicecatalog:DescribeProvisioningArtifact",
        "servicecatalog:DeleteProvisioningArtifact",
        "servicecatalog:UpdateProduct"
    ],
    "Resource": "resource_ARN"
},
{
    "Effect": "Allow",
    "Action": [
        "cloudformation:ValidateTemplate"
    ],
    "Resource": "resource_ARN"
}
```

## 구성 파일 유형별 작업 구성 예제
<a name="action-reference-ServiceCatalog-example"></a>

다음 예는 별도의 구성 파일 없이 콘솔에 생성된 파이프라인에 대해 Service Catalog를 사용하는 배포 작업의 유효한 구성을 보여줍니다.

```
"configuration": {
  "TemplateFilePath": "S3_template.json",
  "ProductVersionName": "devops S3 v2",
  "ProductType": "CLOUD_FORMATION_TEMPLATE",
  "ProductVersionDescription": "Product version description",
  "ProductId": "prod-example123456"
}
```

다음 예는 별도의 `sample_config.json` 구성 파일로 콘솔에 생성된 파이프라인에 대해 Service Catalog를 사용하는 배포 작업의 유효한 구성을 보여줍니다.

```
"configuration": {
  "ConfigurationFilePath": "sample_config.json",
  "ProductId": "prod-example123456"
}
```

### 예제 작업 구성
<a name="action-reference-ServiceCatalog-example-default"></a>

------
#### [ YAML ]

```
Name: ActionName
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Version: 1
  Provider: ServiceCatalog
OutputArtifacts:
- Name: myOutputArtifact
Configuration:
  TemplateFilePath: S3_template.json
  ProductVersionName: devops S3 v2
  ProductType: CLOUD_FORMATION_TEMPLATE
  ProductVersionDescription: Product version description
  ProductId: prod-example123456
```

------
#### [ JSON ]

```
{
    "Name": "ActionName",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Version": 1,
        "Provider": "ServiceCatalog"
    },
    "OutputArtifacts": [
        {
            "Name": "myOutputArtifact"
        }
    ],
    "Configuration": {
        "TemplateFilePath": "S3_template.json",
        "ProductVersionName": "devops S3 v2",
        "ProductType": "CLOUD_FORMATION_TEMPLATE",
        "ProductVersionDescription": "Product version description",
        "ProductId": "prod-example123456"
    }
}
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-ServiceCatalog-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [Service Catalog 사용 설명서](https://docs.aws.amazon.com/servicecatalog/latest/userguide/) - Service Catalog의 리소스 및 템플릿에 대한 자세한 내용은 *Service Catalog 사용 설명서*를 참조하세요.
+ [자습서: Service Catalog에 배포하는 파이프라인 생성](tutorials-S3-servicecatalog.md) - 이 자습서에서는 Service Catalog에 제품 템플릿을 배포하고 소스 리포지토리에서 변경한 사항을 제공하기 위해 파이프라인을 생성하고 구성하는 방법을 보여 줍니다.

# AWS Step Functions 작업 참조 호출
<a name="action-reference-StepFunctions"></a>

다음을 수행하는 AWS CodePipeline 작업입니다.
+ 파이프라인에서 AWS Step Functions 상태 시스템 실행을 시작합니다.
+ 작업 구성의 속성이나 입력으로 전달할 파이프라인 아티팩트에 있는 파일을 통해 상태 시스템에 초기 상태를 제공합니다.
+ 선택적으로 작업에서 시작된 실행을 식별하기 위한 실행 ID 접두사를 설정합니다.
+ [Standard 및 Express](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html) 상태 시스템을 지원합니다.

**참고**  
Step Functions 작업은 Lambda에서 실행되므로 Lambda 함수에 대한 아티팩트 크기 할당량과 동일한 아티팩트 크기 할당량이 있습니다. 자세한 내용은 Lambda 개발자 안내서에서 [Lambda 할당량](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)을 참조하세요.

## 작업 유형
<a name="action-reference-StepFunctions-type"></a>
+ 범주: `Invoke`
+ 소유자: `AWS`
+ 공급자: `StepFunctions`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-StepFunctions-config"></a>

**StateMachineArn**  
필수 항목 여부: 예  
호출할 상태 시스템의 Amazon 리소스 이름(ARN)입니다.

**ExecutionNamePrefix**  
필수 여부: 아니요  
기본적으로 작업 실행 ID는 상태 시스템 실행 이름으로 사용됩니다. 접두사가 제공되면 작업 실행 ID 앞에 하이픈이 추가되고 상태 시스템 실행 이름으로 함께 사용됩니다.  

```
myPrefix-1624a1d1-3699-43f0-8e1e-6bafd7fde791
```
express 상태 시스템의 경우 이름에는 0-9, A-Z, a-z, - 및 \$1만 포함해야 합니다.

**InputType**  
필수 여부: 아니요  
+ **리터럴**(기본값): 지정되면 **입력** 필드의 값이 상태 시스템 입력으로 직접 전달됩니다.

  **리터럴**을 선택한 경우의 **입력** 필드 예제 항목:

  ```
  {"action": "test"}
  ```
+ **FilePath**: **입력** 필드에 의해 지정된 입력 아티팩트의 파일 내용은 상태 시스템 실행을 위한 입력으로 사용됩니다. **InputType**이 **FilePath**로 설정된 경우 입력 아티팩트가 필요합니다.

  **파일 경로**를 선택한 경우의 **입력** 필드 예제 항목:

  ```
  assets/input.json
  ```

**Input**  
필수 항목 여부: 조건부  
+ **Literal**: **InputType**이 **리터럴**(기본값)로 설정된 경우 이 필드는 선택 사항입니다.

  제공되는 경우 **입력** 필드는 상태 시스템 실행의 입력으로 직접 사용됩니다. 그렇지 않으면 상태 시스템이 빈 JSON 객체 `{}`로 호출됩니다.
+ **FilePath**: **InputType**이 **FilePath**로 설정된 경우 이 필드는 필수입니다.

  **InputType**이 **FilePath**로 설정된 경우에도 입력 아티팩트가 필요합니다.

  지정된 입력 아티팩트의 파일 내용은 상태 시스템 실행을 위한 입력으로 사용됩니다.

## 입력 아티팩트
<a name="action-reference-StepFunctions-input"></a>
+ **아티팩트 수:** `0 to 1`
+ **설명:** **InputType**이 **FilePath**로 설정된 경우 이 아티팩트는 필수 항목이며 상태 시스템 실행을 위해 입력을 소스 지정하는 데 사용됩니다.

## 출력 아티팩트
<a name="action-reference-StepFunctions-output"></a>
+ **아티팩트 수:** `0 to 1` 
+ **설명:**
  + **Standard 상태 시스템**: 제공되는 경우 출력 아티팩트가 상태 시스템의 출력으로 채워집니다. 이는 상태 머신 실행이 성공적으로 완료된 후 [Step Functions DescribeExecution API](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html) 응답의 `output` 속성에서 가져옵니다.
  + **Express 상태 시스템**: 지원되지 않습니다.

## 출력 변수
<a name="action-reference-StepFunctions-variables"></a>

이 작업은 파이프라인에서 다운스트림 작업의 작업 구성에서 참조할 수 있는 출력 변수를 생성합니다.

자세한 내용은 [변수 참조](reference-variables.md) 단원을 참조하십시오.

**StateMachineArn**  
상태 시스템의 ARN입니다.

**ExecutionArn**  
상태 시스템 실행의 ARN입니다. Standard 상태 시스템에만 해당됩니다.

## 서비스 역할 권한: `StepFunctions` 작업
<a name="edit-role-stepfunctions"></a>

`StepFunctions` 작업의 경우 Step Functions 호출 작업을 통해 파이프라인을 만드는 데 필요한 최소 권한은 다음과 같습니다.

```
{
    "Effect": "Allow",
    "Action": [
        "states:DescribeStateMachine",
        "states:DescribeExecution",
        "states:StartExecution"
    ],
    "Resource": "resource_ARN"
},
```

## 예제 작업 구성
<a name="action-reference-StepFunctions-example"></a>

### 기본 입력의 예
<a name="action-reference-StepFunctions-example-default"></a>

------
#### [ YAML ]

```
Name: ActionName
ActionTypeId:
  Category: Invoke
  Owner: AWS
  Version: 1
  Provider: StepFunctions
OutputArtifacts:
  - Name: myOutputArtifact
Configuration:
  StateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine
  ExecutionNamePrefix: my-prefix
```

------
#### [ JSON ]

```
{
    "Name": "ActionName",
    "ActionTypeId": {
        "Category": "Invoke",
        "Owner": "AWS",
        "Version": 1,
        "Provider": "StepFunctions"
    },
    "OutputArtifacts": [
        {
            "Name": "myOutputArtifact"
        }
    ],
    "Configuration": {
        "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine",
        "ExecutionNamePrefix": "my-prefix"
    }
}
```

------

### 리터럴 입력의 예
<a name="action-reference-StepFunctions-example-literal"></a>

------
#### [ YAML ]

```
Name: ActionName
ActionTypeId:
  Category: Invoke
  Owner: AWS
  Version: 1
  Provider: StepFunctions
OutputArtifacts:
  - Name: myOutputArtifact
Configuration:
  StateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine
  ExecutionNamePrefix: my-prefix
  Input: '{"action": "test"}'
```

------
#### [ JSON ]

```
{
    "Name": "ActionName",
    "ActionTypeId": {
        "Category": "Invoke",
        "Owner": "AWS",
        "Version": 1,
        "Provider": "StepFunctions"
    },
    "OutputArtifacts": [
        {
            "Name": "myOutputArtifact"
        }
    ],
    "Configuration": {
        "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine",
        "ExecutionNamePrefix": "my-prefix",
        "Input": "{\"action\": \"test\"}"
    }
}
```

------

### 입력 파일의 예
<a name="action-reference-StepFunctions-example-filepath"></a>

------
#### [ YAML ]

```
Name: ActionName
InputArtifacts:
  - Name: myInputArtifact
ActionTypeId:
  Category: Invoke
  Owner: AWS
  Version: 1
  Provider: StepFunctions
OutputArtifacts:
  - Name: myOutputArtifact
Configuration:
  StateMachineArn: 'arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine'
  ExecutionNamePrefix: my-prefix
  InputType: FilePath
  Input: assets/input.json
```

------
#### [ JSON ]

```
{
    "Name": "ActionName",
    "InputArtifacts": [
        {
            "Name": "myInputArtifact"
        }
    ],
    "ActionTypeId": {
        "Category": "Invoke",
        "Owner": "AWS",
        "Version": 1,
        "Provider": "StepFunctions"
    },
    "OutputArtifacts": [
        {
            "Name": "myOutputArtifact"
        }
    ],
    "Configuration": {
        "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine",
        "ExecutionNamePrefix": "my-prefix",
        "InputType": "FilePath",
        "Input": "assets/input.json"
    }
}
```

------

## 동작
<a name="action-reference-StepFunctions-types"></a>

릴리스 중에 CodePipeline은 작업 구성에 지정된 입력을 사용하여 구성된 상태 시스템을 실행합니다.

**InputType**이 **Literal**로 설정된 경우 **입력** 작업 구성 필드의 내용이 상태 시스템의 입력으로 사용됩니다. 리터럴 입력이 제공되지 않으면 상태 시스템 실행은 빈 JSON 객체 `{}`를 사용합니다. 입력 없이 상태 시스템 실행을 실행하는 방법에 대한 자세한 내용은 [Step Functions StartExecution API](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)를 참조하십시오.

**InputType**이 **FilePath**로 설정된 경우 작업은 입력 아티팩트의 압축을 풀고 **입력** 작업 구성 필드에 지정된 파일의 내용을 상태 시스템의 입력으로 사용합니다. **FilePath**를 지정하면 **입력** 필드가 필요하며 입력 아티팩트가 있어야 합니다. 그렇지 않으면 작업이 실패합니다.

성공적인 시작 실행 후, 동작은 두 가지 상태 시스템 유형인 *standard* 및 *express*에 대해 분기됩니다.

### Standard 상태 시스템
<a name="action-reference-StepFunctions-types-standard"></a>

Standard 상태 시스템 실행이 성공적으로 시작되면 실행이 터미널 상태에 도달할 때까지 CodePipeline이 `DescribeExecution` API를 폴링합니다. 실행이 성공적으로 완료되면 작업이 성공하고 그렇지 않으면 실패합니다.

출력 아티팩트가 구성되면 아티팩트는 상태 시스템의 반환 값을 포함합니다. 이는 상태 머신 실행이 성공적으로 완료된 후 [Step Functions DescribeExecution API](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html) 응답의 `output` 속성에서 가져옵니다. 이 API에는 출력 길이 제약 조건이 적용됩니다.

#### 오류 처리
<a name="action-reference-StepFunctions-types-standard-handling"></a>
+ 작업이 상태 시스템 실행을 시작하지 못하면 작업 실행이 실패합니다.
+ CodePipeline Step Functions 작업이 제한 시간(기본값: 7일)에 도달하기 전에 상태 시스템 실행이 터미널 상태에 도달하지 못하면 작업 실행이 실패합니다. 이렇게 실패해도 상태 시스템이 계속될 수 있습니다. Step Functions의 상태 시스템 실행 제한 시간에 대한 자세한 내용은 [표준 워크플로와 Express 워크플로 비교](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html)를 참조하세요.
**참고**  
작업이 있는 계정의 호출 작업 시간 제한에 대한 할당량 증가를 요청할 수 있습니다. 그러나 할당량 증가는 해당 계정의 모든 리전에서 이 유형의 모든 작업에 적용됩니다.
+ 상태 시스템 실행이 FAILED, TIMED\$1OUT 또는 ABORTED 터미널 상태에 도달하면 작업 실행이 실패합니다.

### Express 상태 시스템
<a name="action-reference-StepFunctions-types-express"></a>

express 상태 시스템 실행이 성공적으로 시작되면 invoke 작업 실행이 성공적으로 완료됩니다.

express 상태 시스템에 대해 구성된 작업에 대한 고려 사항:
+ 출력 아티팩트를 지정할 수 없습니다.
+ 작업은 상태 시스템 실행이 완료될 때까지 기다리지 않습니다.
+ CodePipeline에서 작업 실행이 시작되면 상태 시스템 실행이 실패하더라도 작업 실행이 성공합니다.

#### 오류 처리
<a name="action-reference-StepFunctions-types-express-handling"></a>
+ CodePipeline이 상태 시스템 실행을 시작하지 못하면 작업 실행이 실패합니다. 그렇지 않으면 작업이 즉시 성공합니다. 작업은 상태 시스템 실행이 완료되는 데 걸리는 시간이나 결과에 관계없이 CodePipeline에서 성공합니다.

## 다음 사항도 참조하세요.
<a name="action-reference-StepFunctions-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [AWS Step Functions 개발자 안내서](https://docs.aws.amazon.com/step-functions/latest/dg/) - 상태 시스템, 실행 및 상태 시스템 입력에 대한 자세한 내용은 *AWS Step Functions 개발자 안내서*를 참조하세요.
+ [자습서: 파이프라인에서 AWS Step Functions 호출 작업 사용](tutorials-step-functions.md) - 이 자습서에서는 샘플 standard 상태 시스템으로 시작하고 콘솔을 사용하여 Step Functions 간접 호출 작업을 추가하여 파이프라인을 업데이트하는 방법을 보여줍니다.