

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 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 。该 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 操作会发送一个 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 事件为中的 Lambda 操作提供了以下任务详情： CodePipeline
+ `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 简单存储服务）。有关更多信息，请参阅 [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 简单存储服务）。有关更多信息，请参阅 [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 工件的更多信息，请参阅在管道中[使用参数覆盖函数](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)和构件。 CodePipeline AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-cfn-artifacts.html)
+ [在中调用管道中的 AWS Lambda 函数 CodePipeline](actions-invoke-lambda-function.md)：此过程提供了一个示例 Lambda 函数，展示了如何使用控制台创建包含 Lambda 调用操作的管道。