Lambda 函数在代码管道中永远不会成功
Lambda function never succeeds in codepipeline
当我 运行 我在 Codepipeline 中的 Lambda 函数正确结束并执行我想要的,正如我在日志中看到的,但它从不在管道 中成功。它只是显示 进行中 当我的 Lambda 函数实际上在日志中完成它的工作时。
我错过了什么?也许我需要将 'putJobSuccessResult' 如图所示 here 发送到 CodePipeline?但如果是这样,那为什么不是自定义操作呢?
自定义操作到底是什么?它们和非自定义操作有什么区别?
Maybe I need to send 'putJobSuccessResult' as shown here to CodePipeline?
是的,您需要从 Lambda 函数调用 putJobSuccessResult。
But if so then why if it's not a custom action?
这会告诉 CodePipeline 您的 Lambda 函数已完成,以及接下来要做什么。
CodePipeline 具有一项功能,如果您传递 'continuation token',那么 CodePipeline 将重新调用您的函数并将延续令牌中的状态传递到下一次调用。这允许您的操作比 Lambda 调用超时长 运行ning。您可以在调用 putJobSuccessResult 时传递此信息。
此外,它将 "failing an action" 与 "failing the function" 分开。这允许您在不使 lambda 函数失败的情况下使操作失败。这是可取的,因为如果函数失败,Lambda 有一个 retry behavior。
And what are custom actions at all?
对于自定义操作,您需要自己的代码来调用 PollForJobs,通常 运行s 例如。一个长 运行ning EC2 实例。 Lambda 调用操作将调用 Lambda 函数,您无需 运行 您自己的实例/主机。
当我 运行 我在 Codepipeline 中的 Lambda 函数正确结束并执行我想要的,正如我在日志中看到的,但它从不在管道 中成功。它只是显示 进行中 当我的 Lambda 函数实际上在日志中完成它的工作时。
我错过了什么?也许我需要将 'putJobSuccessResult' 如图所示 here 发送到 CodePipeline?但如果是这样,那为什么不是自定义操作呢?
自定义操作到底是什么?它们和非自定义操作有什么区别?
Maybe I need to send 'putJobSuccessResult' as shown here to CodePipeline?
是的,您需要从 Lambda 函数调用 putJobSuccessResult。
But if so then why if it's not a custom action?
这会告诉 CodePipeline 您的 Lambda 函数已完成,以及接下来要做什么。
CodePipeline 具有一项功能,如果您传递 'continuation token',那么 CodePipeline 将重新调用您的函数并将延续令牌中的状态传递到下一次调用。这允许您的操作比 Lambda 调用超时长 运行ning。您可以在调用 putJobSuccessResult 时传递此信息。
此外,它将 "failing an action" 与 "failing the function" 分开。这允许您在不使 lambda 函数失败的情况下使操作失败。这是可取的,因为如果函数失败,Lambda 有一个 retry behavior。
And what are custom actions at all?
对于自定义操作,您需要自己的代码来调用 PollForJobs,通常 运行s 例如。一个长 运行ning EC2 实例。 Lambda 调用操作将调用 Lambda 函数,您无需 运行 您自己的实例/主机。