本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS Lambda
允许您执行 Lambda 函数以作为管道中的操作。使用作为此函数输入的事件对象,函数可以访问操作配置、输入构件位置、输出构件位置以及访问构件所需的其他信息。有关传递到 Lambda 调用函数的示例事件,请参阅JSON 事件示例。在 Lambda 函数实施中,必须有对 PutJobSuccessResult
API
或 PutJobFailureResult 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。
操作配置示例
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
:与任务关联的 AWS 账户 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 存储桶中输入和输出项目的 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 密钥。
-
-
另请参阅
下列相关资源在您使用此操作的过程中会有所帮助。
-
AWS CloudFormation 用户指南 — 有关管道的 Lambda 操作和 AWS CloudFormation 工件的更多信息,请参阅在管道中使用参数覆盖函数、自动部署基于 Lambda 的应用程序和构件。 CodePipeline AWS CloudFormation
-
在中调用管道中的 AWS Lambda 函数 CodePipeline:此过程提供了一个示例 Lambda 函数,展示了如何使用控制台创建包含 Lambda 调用操作的管道。