

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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 函數處理為輸入的字串。

## Input artifacts (輸入成品)
<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 動作會傳送 JSON 事件，其中包含任務 ID、管道動作組態、輸入和輸出成品位置，以及成品的任何加密資訊。任務工作者會存取這些詳細資訊，以完成 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 調用動作的管道。