AWS Lambda Java函数多次调用

dmc*_*len 4 clojure amazon-web-services aws-lambda

我有一个AWS用Java编写的Lambda函数(好吧,它实际上是用Clojure编写的),每次运行它时都会被调用3次.

我的函数在超时(设置为最多5分钟)内成功运行.当我在控制台中测试函数时,它返回一个我可以看到输出的字符串.

我在网上看到过一些关于不得不调用一些Context成功/完成函数但在Java SDK中看不到的内容(似乎只适用于Node?).

我错过了什么吗?

当我在控制台中单击测试(它只运行一次)但在通过CloudWatch Trigger触发或通过AWS SDK运行时确实发生这种情况.

谢谢,

多诺万

更新:道歉,只有通过SDK和CLI通过触发器运行时才会发生这种情况,所以可能在我正在进行的通话中有一些超时.

dmc*_*len 9

对于其他任何人的未来参考,问题是SDK和CLI达到一分钟的读取超时,然后重试请求.我手动将其设置为5分钟以匹配我的AWS Lambda超时.

这可以在CLI中通过添加所需超时的--cli-read-timeout int位置来完成int(或者只是--cli-read-timeout 0完全禁用超时).

在Java SDK可以通过调用来完成setSocketTimeout(int socketTimeout)的对ClientConfiguration对象

在使用Amazonica的Clojure中,添加:client-config {:socket-timeout xxx}到您的凭据映射.

  • 我希望SDK能够足够聪明地假设它所连接的服务的超时,所以对于lambda,如果我的超时为5分钟,SDK应该适应.不幸的是不是这样......在这方面损失了很多时间,但是非常感谢这个答案. (2认同)