Amazon Lambda - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon Lambda

允许您执行 Lambda 函数以作为管道中的操作。使用作为此函数输入的事件对象,函数可以访问操作配置、输入构件位置、输出构件位置以及访问构件所需的其他信息。有关传递到 Lambda 调用函数的示例事件,请参阅JSON 事件示例。在 Lambda 函数实施中,必须有对 PutJobSuccessResult APIPutJobFailureResult API 的调用。否则,此操作的执行将挂起,直至操作超时。如果您为操作指定输出构件,则必须将其上传到 S3 存储桶作为函数实施的一部分。

重要

不要记录 CodePipeline 发送到 Lambda 的 JSON 事件,因为这可能会导致用户凭证记录到日志中 CloudWatch 。该 CodePipeline 角色使用 JSON 事件将临时证书传递给该artifactCredentials领域的 Lambda。有关示例事件,请参阅JSON 事件示例

操作类型

  • 类别:Invoke

  • 拥有者:AWS

  • 提供方:Lambda

  • 版本:1

配置参数

FunctionName

必需:是

FunctionName 是在 Lambda 中创建的函数的名称。

UserParameters

必需:否

一个供 Lambda 函数作为输入进行处理的字符串。

输入构件

  • 构件数:0 to 5

  • 描述:要提供给 Lambda 函数的一组构件。

输出构件

  • 构件数:0 to 5

  • 描述:Lambda 函数作为输出而生成的一组构件。

输出变量

此操作将生成包含在 PutJobSuccessResult API 请求outputVariables部分中的所有键值对作为变量。

有关中变量的更多信息 CodePipeline,请参阅Variables

操作配置示例

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 事件示例

Lambda 操作会发送一个 JSON 事件,其中包含作业 ID、管道操作配置、输入和输出构件位置,以及构件的任何加密信息。作业辅助角色将访问这些详细信息以完成 Lambda 操作。有关更多信息,请参阅:作业详细信息。以下是示例事件。

{ "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:与任务关联的 Amazon 账户 ID。

  • data:作业辅助角色完成作业所需的其他信息。

    • actionConfiguration:Lambda 操作的操作参数。有关定义,请参阅配置参数

    • inputArtifacts:提供给操作的构件。

      • location:构件存储位置。

        • s3Location:操作的输入构件位置信息。

          • bucketName:操作的管道工件存储名称(例如,名为 codepipeline-us-east -2-1234567890 的 Amazon S3 存储桶)。

          • objectKey:应用程序的名称(例如,CodePipelineDemoApplication.zip)。

        • type:位置中构件的类型。目前,S3 是唯一有效的构件类型。

      • revision:构件的修订 ID。根据对象的类型,它可以是提交 ID (GitHub) 或修订版 ID(Amazon 简单存储服务)。有关更多信息,请参阅ArtifactRevision

      • 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

      • name:构件的输出的名称,如 MyApp

    • artifactCredentials:用于访问 Amazon S3 存储桶中输入和输出项目的 Amazon 会话证书。这些凭证是临时凭证,由 Amazon Security Token Service (Amazon STS) 发布。

      • secretAccessKey:会话的秘密访问密钥。

      • sessionToken:令牌的会话。

      • accessKeyId:会话的秘密访问密钥。

    • continuationToken:操作生成的令牌。以后的操作使用此令牌来标识操作的正在运行的实例。操作完成时,不应提供延续令牌。

    • encryptionKey:用于加密工件存储区中的数据的加密密钥,例如密 Amazon KMS 钥。如果未定义此密钥,将使用 Amazon Simple Storage Service 的默认密钥。

      • id:用于标识密钥的 ID。对于 Amazon KMS 密钥,您可以使用密钥 ID、密钥 ARN 或别名 ARN。

      • type:加密密钥的类型,如 Amazon KMS 密钥。

下列相关资源在您使用此操作的过程中会有所帮助。