多次调用 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}
添加到您的凭证映射。
我有一个 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}
添加到您的凭证映射。