

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

# 작업 유형 처리
<a name="action-types"></a>

작업 유형은 공급자가 AWS CodePipeline에서 지원되는 통합 모델 중 하나를 사용하여 고객을 위해 생성하는 미리 구성된 작업입니다.

작업 유형을 요청, 확인 및 업데이트할 수 있습니다. 계정의 작업 유형이 소유자로 생성된 경우 AWS CLI 를 사용하여 작업 유형 속성 및 구조를 보거나 업데이트할 수 있습니다. 작업 유형의 공급자 또는 소유자인 경우, CodePipeline에서 사용할 수 있게 되면 고객이 해당 작업을 선택하고 파이프라인에 추가할 수 있습니다.

**참고**  
작업자와 함께 실행할 `custom` 작업을 `owner` 필드에 생성합니다. 통합 모델로 만들 수는 없습니다. 사용자 지정 작업에 대한 자세한 내용은 [CodePipeline에서 사용자 지정 작업 생성 및 추가](actions-create-custom-action.md) 섹션을 참조하세요.

**작업 유형 구성 요소**

작업 유형을 구성하는 구성 요소는 다음과 같습니다.
+ **작업 유형 ID** - ID는 범주, 소유자, 공급자 및 버전으로 구성됩니다.** 다음 예제는 `ThirdParty` 소유자, `Test` 범주, `TestProvider`라는 이름의 공급자, `1` 버전인 작업 유형 ID를 보여줍니다.

  ```
              {
                  "Category": "Test",
                  "Owner": "ThirdParty",
                  "Provider": "TestProvider",
                  "Version": "1"
              },
  ```
+ **실행기 구성** - 작업이 생성될 때 지정된 통합 모델 또는 작업 엔진입니다. 작업 유형의 실행기를 지정할 때는 다음 두 가지 유형 중 하나를 선택합니다.
  + Lambda: 작업 유형 소유자는 Lambda 함수로 통합을 작성합니다. 이 함수는 작업에 사용할 수 있는 작업이 있을 때마다 CodePipeline에 의해 호출됩니다.**
  + JobWorker: 작업 유형 소유자는 고객 파이프라인에서 사용 가능한 작업을 폴링하는 작업자로 통합을 작성합니다.** 그러면 작업자는 CodePipeline API를 사용하여 작업을 실행하고 CodePipeline에 작업 결과를 다시 제출합니다.
**참고**  
작업자 통합 모델은 선호되는 통합 모델이 아닙니다.
+ **입력 및 출력 아티팩트:** 작업 유형 소유자가 작업의 고객에 대해 지정하는 아티팩트에 대한 제한입니다.
+ **권한:** 타사 작업 유형에 액세스할 수 있는 고객을 지정하는 권한 전략입니다. 사용 가능한 권한 전략은 작업 유형에 대해 선택한 통합 모델에 따라 다릅니다.
+ **URL:** 고객이 상호 작용할 수 있는 리소스로 연결되는 딥 링크입니다(예: 작업 유형 소유자의 구성 페이지).

**Topics**
+ [작업 유형 요청](#action-types-request)
+ [파이프라인에 사용 가능한 작업 유형 추가(콘솔)](#action-types-in-pipelines)
+ [작업 유형 보기](#action-types-view-cli)
+ [작업 유형 업데이트](#action-types-update-cli)

## 작업 유형 요청
<a name="action-types-request"></a>

타사 공급자가 새 CodePipeline 작업 유형을 요청하면 CodePipeline에서 작업 유형 소유자를 위한 작업 유형이 생성되고 소유자는 작업 유형을 관리하고 볼 수 있습니다.

작업 유형은 프라이빗 또는 퍼블릭 작업일 수 있습니다. 작업 유형을 생성하면 프라이빗입니다. 작업 유형을 퍼블릭 작업으로 변경하도록 요청하려면 CodePipeline 서비스 팀에 문의하세요.

CodePipeline 팀을 위한 작업 정의 파일, 실행자 리소스 및 작업 유형 요청을 생성하기 전에 통합 모델을 선택해야 합니다.



### 1단계: 통합 모델 선택
<a name="action-types-choose-model"></a>

통합 모델을 선택한 다음 해당 모델의 구성을 생성합니다. 통합 모델을 선택한 후에는 통합 리소스를 구성해야 합니다.
+ Lambda 통합 모델의 경우, Lambda 함수를 생성하고 권한을 추가합니다. CodePipeline 서비스 보안 주체: `codepipeline.amazonaws.com`을 사용하여 CodePipeline 서비스를 호출할 수 있는 권한을 제공하는 권한을 통합자 Lambda 함수에 추가합니다. CloudFormation 또는 명령줄을 사용하여 권한을 추가할 수 있습니다.
  +  CloudFormation을 사용하여 권한을 추가하는 예:

    ```
      CodePipelineLambdaBasedActionPermission:
        Type: 'AWS::Lambda::Permission'
        Properties:
          Action: 'lambda:invokeFunction'
          FunctionName: {"Fn::Sub": "arn:${AWS::Partition}:lambda:${AWS::Region}:${AWS::AccountId}:function:function-name"}
          Principal: codepipeline.amazonaws.com
    ```
  + [명령줄 설명서](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html)
+ 작업자 통합 모델의 경우 작업자가 CodePipeline API로 작업을 폴링하는 허용된 계정 목록을 사용하여 통합을 생성합니다.

### 2단계: 작업 유형 정의 파일 생성
<a name="action-type-definition-file"></a>

JSON을 사용하여 작업 유형 정의 파일에서 작업 유형을 정의합니다. 파일에는 작업 범주, 작업 유형을 관리하는 데 사용되는 통합 모델 및 구성 속성이 포함됩니다.

**참고**  
퍼블릭 작업을 만든 후에는 `properties`의 작업 유형 속성을 `optional`에서 `required`로 변경할 수 없습니다. 또한 `owner`도 변경할 수 없습니다.

작업 유형 정의 파일 파라미터에 대한 자세한 내용은 [CodePipeline API 참조](https://docs.aws.amazon.com/cli/latest/reference/codepipeline)의 [ActionTypeDeclaration](https://docs.aws.amazon.com/cli/latest/reference/codepipelineAPI_ActionTypeDeclaration.html) 및 [UpdateActionType](https://docs.aws.amazon.com/cli/latest/reference/codepipelineAPI_UpdateActionType.html)을 참조하세요.

작업 유형 정의 파일에는 다음과 같은 8개의 섹션이 있습니다.
+ `description`: 업데이트할 작업 유형에 대한 설명입니다.
+ `executor`: 지원되는 통합 모델(`Lambda` 또는 `job worker`)을 사용하여 만든 작업 유형의 실행기에 대한 정보입니다. 실행기 유형에 따라 `jobWorkerExecutorConfiguration` 또는 `lambdaExecutorConfiguration` 중 하나만 제공할 수 있습니다.
  + `configuration`: 선택한 통합 모델을 기반으로 하는 작업 유형 구성을 위한 리소스입니다. Lambda 통합 모델의 경우 Lambda 함수 ARN을 사용하세요. 작업자 통합 모델의 경우 작업자가 실행하는 계정 또는 계정 목록을 사용하세요.
  + `jobTimeout`: 작업에 대한 제한 시간(초)입니다. 작업 실행은 여러 작업으로 구성될 수 있습니다. 이는 전체 작업 실행에 대한 제한 시간이 아니라 단일 작업에 대한 제한 시간입니다.
**참고**  
Lambda 통합 모델의 경우 최대 제한 시간은 15분입니다.
  + `policyStatementsTemplate`: CodePipeline 고객 계정에서 작업 실행을 성공적으로 실행하는 데 필요한 권한을 지정하는 정책 설명입니다.
  + `type`: 작업 유형을 생성하고 업데이트하는 데 사용되는 통합 모델(`Lambda` 또는 `JobWorker`)입니다.
+ `id`: 작업 유형의 범주, 소유자, 공급자 및 버전 ID입니다.
  + `category`: 단계에서 수행할 수 있는 작업의 종류는 소스, 빌드, 배포, 테스트, 호출 또는 승인입니다.
  + `provider`: 호출되는 작업 유형의 공급자(예: 공급자 회사 또는 제품 이름)입니다. 공급자 이름은 작업 유형이 생성될 때 제공됩니다.
  + `owner`: 호출되는 작업 유형의 생성자는 `AWS` 또는 `ThirdParty`입니다.
  + `version`: 작업 유형의 버전을 지정하는 데 사용되는 문자열입니다. 첫 번째 버전의 경우 버전 번호를 1로 설정합니다.
+ `inputArtifactDetails`: 파이프라인의 이전 단계에서 예상할 수 있는 아티팩트 수입니다.
+ `outputArtifactDetails`:작업 유형 단계의 결과에서 예상할 수 있는 아티팩트 수입니다.
+ `permissions`: 작업 유형을 사용할 권한이 있는 계정을 식별하는 세부 정보입니다.
+ `properties`: 프로젝트 작업을 완료하는 데 필요한 파라미터입니다.
  + `description`: 사용자에게 표시되는 속성에 대한 설명입니다.
  + `optional`: 구성 속성이 선택 사항인지 여부를 나타냅니다.
  + `noEcho`: 고객이 입력한 필드 값이 로그에서 생략되었는지 여부를 나타냅니다. `true`인 경우 GetPipeline API 요청과 함께 반환되면 값이 삭제됩니다.
  + `key`: 구성 속성이 키인지 여부를 나타냅니다.
  + `queryable`: 속성이 폴링에 사용되는지 여부를 나타냅니다. 작업 유형에는 쿼리가 가능한 속성이 최대 1개 있을 수 있습니다. 이러한 속성이 하나 있을 경우 해당 속성은 필수여야 하고 보안 항목이 아니어야 합니다.
  + `name`: 사용자에게 표시되는 속성 이름입니다.
+ `urls`: URL CodePipeline 목록이 사용자에게 표시됩니다.
  + `entityUrlTemplate`: 작업 유형의 외부 리소스에 대한 URL(예: 구성 페이지)입니다.
  + `executionUrlTemplate`: 작업의 최신 실행에 대한 세부 정보 URL입니다.
  + `revisionUrlTemplate`: CodePipeline 콘솔에 표시되는 URL로, 고객이 외부 작업의 구성을 업데이트 또는 변경할 수 있는 페이지로 연결됩니다.
  + `thirdPartyConfigurationUrl`: 페이지의 URL로, 여기서 사용자는 외부 서비스에 가입하고 서비스에서 제공하는 작업의 초기 구성을 수행할 수 있습니다.

다음 코드는 예제 작업 유형 정의 파일을 보여줍니다.

```
{
   "actionType": { 
      "description": "string",
      "executor": { 
         "configuration": { 
            "jobWorkerExecutorConfiguration": { 
               "pollingAccounts": [ "string" ],
               "pollingServicePrincipals": [ "string" ]
            },
            "lambdaExecutorConfiguration": { 
               "lambdaFunctionArn": "string"
            }
         },
         "jobTimeout": number,
         "policyStatementsTemplate": "string",
         "type": "string"
      },
      "id": { 
         "category": "string",
         "owner": "string",
         "provider": "string",
         "version": "string"
      },
      "inputArtifactDetails": { 
         "maximumCount": number,
         "minimumCount": number
      },
      "outputArtifactDetails": { 
         "maximumCount": number,
         "minimumCount": number
      },
      "permissions": { 
         "allowedAccounts": [ "string" ]
      },
      "properties": [ 
         { 
            "description": "string",
            "key": boolean,
            "name": "string",
            "noEcho": boolean,
            "optional": boolean,
            "queryable": boolean
         }
      ],
      "urls": { 
         "configurationUrl": "string",
         "entityUrlTemplate": "string",
         "executionUrlTemplate": "string",
         "revisionUrlTemplate": "string"
      }
   }
}
```



### 3단계: CodePipeline과의 통합 등록
<a name="action-types-register"></a>

CodePipeline에 작업 유형을 등록하려면 CodePipeline 서비스 팀에 문의하여 요청을 보내야 합니다.

CodePipeline 서비스 팀은 서비스 코드베이스를 변경하여 새 작업 유형 통합을 등록합니다. CodePipeline은 퍼블릭 작업과 프라이빗 작업이라는 두 개의 새로운 액션을 등록합니다.**** 프라이빗 작업을 테스트에 사용한 다음 준비가 되면 퍼블릭 작업을 활성화하여 고객 트래픽을 처리합니다.

**Lambda 통합 요청을 등록하려면**
+ 다음 양식을 사용하여 CodePipeline 서비스 팀에 요청을 보내세요.

  ```
  This issue will track the onboarding of [Name] in CodePipeline.
  
  
  [Contact engineer] will be the primary point of contact for this integration.
  
  Name of the action type as you want it to appear to customers: Example.com Testing
  
  Initial onboard checklist:
  
  1. Attach an action type definition file in JSON format. This includes the schema for the action type
  
  2. A list of test accounts for the allowlist which can access the new action type [{account, account_name}]
  
  3. The Lambda function ARN
  
  4. List of AWS 리전 where your action will be available
  
  5. Will this be available as a public action?
  ```

**작업자 통합 요청을 등록하려면**
+ 다음 양식을 사용하여 CodePipeline 서비스 팀에 요청을 보내세요.

  ```
  This issue will track the onboarding of [Name] in CodePipeline.
  
  [Contact engineer] will be the primary point of contact for this integration.
  
  
  Name of the action type as you want it to appear to customers: Example.com Testing
  
  Initial onboard checklist:
  
  1. Attach an action type definition file in JSON format. This includes the schema for the action type.
  
  2. A list of test accounts for the allowlist which can access the new action type [{account, account_name}]
  
  3. URL information:
  Website URL: https://www.example.com/%TestThirdPartyName%/%TestVersionNumber%
  
  Example URL pattern where customers will be able to review their configuration information for the action: https://www.example.com/%TestThirdPartyName%/%customer-ID%/%CustomerActionConfiguration%
  
  Example runtime URL pattern: https://www.example.com/%TestThirdPartyName%/%customer-ID%/%TestRunId%
  
  4. List of AWS 리전 where your action will be available
  
  5. Will this be available as a public action?
  ```

### 4단계: 새 통합 활성화
<a name="action-types-activate"></a>

새 통합을 공개적으로 사용할 준비가 되면 CodePipeline 서비스 팀에 문의하세요.

## 파이프라인에 사용 가능한 작업 유형 추가(콘솔)
<a name="action-types-in-pipelines"></a>

테스트할 수 있도록 파이프라인에 작업 유형을 추가합니다. 새 파이프라인을 만들거나 기존 파이프라인을 편집하여 이 작업을 수행할 수 있습니다.

**참고**  
작업 유형이 소스, 빌드 또는 배포 카테고리 작업인 경우 파이프라인을 생성하여 추가할 수 있습니다. 작업 유형이 테스트 범주에 있는 경우 기존 파이프라인을 편집하여 추가해야 합니다.

**CodePipeline 콘솔에서 기존 파이프라인에 작업 유형을 추가하려면**

1. 에 로그인 AWS Management Console 하고 [http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home) CodePipeline 콘솔을 엽니다.

1. 파이프라인 목록에서 작업 유형을 추가할 파이프라인을 선택합니다.

1. 파이프라인의 요약 보기 페이지에서 **편집**을 선택합니다.

1. 단계를 편집하려면 선택합니다. 작업 유형을 추가하려는 단계에서 **작업 그룹 추가**를 선택합니다. **작업 편집** 페이지가 표시됩니다.

1. **작업 편집** 페이지의 **작업 이름**에 작업 이름을 입력합니다. 파이프라인의 단계에 표시되는 이름입니다.

1. **작업 공급자**의 목록에서 작업 유형을 선택합니다.

   목록의 값은 작업 유형 정의 파일에 지정된 `provider`를 기반으로 한다는 점에 유의하세요.

1. **입력 아티팩트**에 이 형식으로 아티팩트 이름을 입력합니다.

   `Artifactname::FileName`

   단, 허용되는 최소 및 최대 수량은 작업 유형 정의 파일에 지정된 `inputArtifactDetails`을 기준으로 정의됩니다.

1. **<Action\$1Name>에 연결**을 선택합니다.

   브라우저 창이 열리고 작업 유형에 맞게 생성한 웹 사이트로 연결됩니다.

1. 웹 사이트에 고객으로 로그인하고 고객이 작업 유형을 사용하기 위해 수행하는 단계를 완료하세요. 단계는 작업 범주, 웹 사이트 및 구성에 따라 다르지만 일반적으로 고객을 **작업 편집** 페이지로 돌아가게 하는 완료 작업이 포함됩니다.

1. CodePipeline **작업 편집** 페이지에는 작업에 대한 추가 구성 필드가 표시됩니다. 표시되는 필드는 작업 정의 파일에 지정한 구성 속성입니다. 작업 유형에 맞게 사용자 지정된 필드에 정보를 입력합니다.

   예를 들어, 작업 정의 파일에서 `Host`라는 이름의 속성을 지정한 경우 해당 작업에 대한 **작업 편집** 페이지에 **호스트**라는 레이블이 있는 필드가 표시됩니다.

1. **출력 아티팩트**에 이 형식으로 아티팩트 이름을 입력합니다.

   `Artifactname::FileName`

   단, 허용되는 최소 및 최대 수량은 작업 유형 정의 파일에 지정된 `outputArtifactDetails`을 기준으로 정의됩니다.

1. **완료**를 선택하여 파이프라인 세부 정보 페이지로 돌아가십시오.
**참고**  
고객은 선택적으로 CLI를 사용하여 파이프라인에 작업 유형을 추가할 수 있습니다.

1. 작업을 테스트하려면 파이프라인의 소스 단계에서 지정된 소스에 변경 사항을 커밋하거나 [수동으로 파이프라인 시작](https://docs.aws.amazon.com/codepipeline/latest/userguide/how-to-manually-start.html)의 단계를 따르세요.

작업 유형으로 파이프라인을 생성하려면 [파이프라인 스테이지 및 작업 생성](pipelines-create.md)의 단계에 따라 테스트할 여러 단계에서 작업 유형을 선택합니다.

## 작업 유형 보기
<a name="action-types-view-cli"></a>

CLI를 사용하여 작업 유형을 확인할 수 있습니다. **get-action-type** 명령을 사용하면 통합 모델을 사용하여 생성된 작업 유형을 볼 수 있습니다.

**작업 유형을 보려면**

1. 입력 JSON 파일을 만들고 파일 이름을 `file.json`으로 지정합니다. 다음 예와 같이 JSON 형식으로 작업 유형 ID를 추가합니다.

   ```
   {
       "category": "Test",
       "owner": "ThirdParty",
       "provider": "TestProvider",
       "version": "1"
   }
   ```

1. 터미널 창 또는 명령줄에서 **get-action-type** 명령을 실행합니다.

   ```
   aws codepipeline get-action-type --cli-input-json file://file.json
   ```

   이 명령은 작업 유형에 대한 작업 정의 출력을 반환합니다. 이 예제는 Lambda 통합 모델로 생성된 작업 유형을 보여줍니다.

   ```
   {
       "actionType": {
           "executor": {
               "configuration": {
                   "lambdaExecutorConfiguration": {
                       "lambdaFunctionArn": "arn:aws:lambda:us-west-2:<account-id>:function:my-function"
                   }
               },
               "type": "Lambda"
           },
           "id": {
               "category": "Test",
               "owner": "ThirdParty",
               "provider": "TestProvider",
               "version": "1"
           },
           "inputArtifactDetails": {
               "minimumCount": 0,
               "maximumCount": 1
           },
           "outputArtifactDetails": {
               "minimumCount": 0,
               "maximumCount": 1
           },
           "permissions": {
               "allowedAccounts": [
                   "<account-id>"
               ]
           },
           "properties": []
       }
   }
   ```

## 작업 유형 업데이트
<a name="action-types-update-cli"></a>

CLI를 사용하여 통합 모델로 만든 작업 유형을 편집할 수 있습니다.

퍼블릭 작업 유형의 경우 소유자를 업데이트할 수 없고, 선택적 속성을 필수로 변경할 수 없으며, 새 선택적 속성만 추가할 수 있습니다.

1. `get-action-type` 명령을 사용하여 작업 유형의 구조를 가져올 수 있습니다. 구조를 복사합니다.

1. 입력 JSON 파일을 생성하고 이름을 `action.json`으로 지정합니다. 이전 단계에서 복사한 작업 유형 구조를 해당 구조에 붙여넣습니다. 변경할 파라미터를 업데이트합니다. 또한 옵션 파라미터를 추가할 수 있습니다.

   입력 파일의 파라미터에 대한 자세한 내용은 [2단계: 작업 유형 정의 파일 생성](#action-type-definition-file)의 작업 정의 파일 설명을 참조하세요.

   다음 예제는 Lambda 통합 모델로 생성된 예제 작업 유형을 업데이트하는 방법을 보여줍니다. 이 예제에서는 다음을 변경합니다.
   + `provider` 이름을 `TestProvider1`으로 변경합니다.
   + 작업 제한 시간을 900초로 추가합니다.
   + 작업을 사용하는 고객에게 표시되는 `Host`로 이름이 지정된 작업 구성 속성을 추가합니다.

     ```
     {
         "actionType": {
             "executor": {
                 "configuration": {
                     "lambdaExecutorConfiguration": {
                         "lambdaFunctionArn": "arn:aws:lambda:us-west-2:<account-id>:function:my-function"
                     }
                 },
                 "type": "Lambda",
                 "jobTimeout": 900 
             },
             "id": {
                 "category": "Test",
                 "owner": "ThirdParty",
                 "provider": "TestProvider1",
                 "version": "1"
             },
             "inputArtifactDetails": {
                 "minimumCount": 0,
                 "maximumCount": 1
             },
             "outputArtifactDetails": {
                 "minimumCount": 0,
                 "maximumCount": 1
             },
             "permissions": {
                 "allowedAccounts": [
                     "account-id"
                 ]
             },
             "properties": {
              "description": "Owned build action parameter description",
              "optional": true,
              "noEcho": false,
              "key": true,
              "queryable": false,
              "name": "Host"
              }
         }
     }
     ```

1. 터미널 또는 명령줄에서 **update-action-type** 명령 실행

   ```
   aws codepipeline update-action-type --cli-input-json file://action.json
   ```

   이 명령은 업데이트된 파라미터와 일치하는 작업 유형 출력을 반환합니다.