Lambda 函数在代码管道中永远不会成功

Rus*_*tun 4 amazon-web-services aws-lambda aws-codepipeline

当我在 Codepipeline 中运行我的 Lambda 函数时,它会正常结束并执行我在日志中看到的我想要的操作,但它在管道中从未成功。当我的 Lambda 函数在日志中实际执行其工作时,它仅显示正在进行中。

我错过了什么?也许我需要将此处显示的“putJobSuccessResult”发送到 CodePipeline?但如果是这样,那为什么不是自定义操作呢?

什么是自定义操作?它们与非自定义操作有什么区别?

Tim*_*imB 9

也许我需要将此处显示的“putJobSuccessResult”发送到 CodePipeline?

是的,您需要从 Lambda 函数调用 putJobSuccessResult。

但如果是这样,那为什么不是自定义操作呢?

这会告诉 CodePipeline 您的 Lambda 函数已完成,以及接下来要做什么。

CodePipeline 有一个功能,如果您传递“延续令牌”,则 CodePipeline 将重新调用您的函数并将延续令牌中的状态传递给下一次调用。这允许您运行比 Lambda 调用超时更长的操作。您可以在调用 putJobSuccessResult 时传递此信息。

此外,它将“使操作失败”与“使功能失败”分开。这允许您在不使 lambda 函数失败的情况下使操作失败。这是可取的,因为如果函数失败,Lambda 具有重试行为

什么是自定义操作?

使用自定义操作,您需要自己的代码来调用 PollForJobs,它通常在例如上运行。长时间运行的 EC2 实例。Lambda 调用操作将调用 Lambda 函数,而您无需运行自己的实例/主机。