多次调用 AWS Lambda Java 函数

AWS Lambda Java function invoked multiple times

我有一个 AWS Lambda 函数,我用 Java 编写(好吧,它实际上是用 Clojure 编写的),每次我 [=31] 它似乎被调用 3 次=]它。

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

我在网上看到一些关于必须调用某些上下文成功/完成函数的内容,但在 Java SDK 中看不到(似乎仅适用于 Node?)。

我是不是漏掉了什么?

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

谢谢,

多诺万

更新:抱歉,当通过触发器 运行 时不会发生这种情况,只会通过 SDK 和 CLI,所以我正在进行的调用可能有一些超时。

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

这可以在 CLI 中通过添加 --cli-read-timeout int 来完成,其中 int 是您想要的超时(或者只是 --cli-read-timeout 0,它会完全禁用超时)。

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

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