

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

# 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 간접 호출 작업이 있는 파이프라인을 생성하는 방법을 보여줍니다.