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

时间:2018-08-28 14:09:09

标签: amazon-web-services aws-lambda aws-codepipeline

当我在Codepipeline中运行Lambda函数时,它会正常结束并按照我在日志中看到的所要执行的操作,但它在管道中永远不会成功。当我的Lambda函数实际上在日志中执行工作时,它只会显示 In Progress

我想念什么?也许我需要将here所示的'putJobSuccessResult'发送到CodePipeline?但是如果是这样,那为什么不是自定义操作呢?

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

1 个答案:

答案 0 :(得分:2)

  

也许我需要将此处所示的'putJobSuccessResult'发送给CodePipeline?

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

  

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

这将告诉CodePipeline您的Lambda函数已完成,以及下一步该做什么。

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

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

  

什么是自定义操作?

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