java - 使用 Java 的 AWS Lambda - 设置配置连接/套接字超时

标签 java amazon-web-services aws-lambda connection-timeout

看这里: AWS Documentation

The connection timeout is the amount of time (in milliseconds) that the HTTP connection will wait to establish a connection before giving up. The default is 50,000 ms. To set this value yourself, use the ClientConfiguration.setConnectionTimeout method.

我正在尝试自己设置该值,使用:

ClientConfiguration configuration = new ClientConfiguration();
configuration.setConnectionTimeout(1900000);
configuration.setSocketTimeout(1900000);

问题是,我正在尝试从 AWS Lambda Java 函数内更新此值。如果我调用外部 lambda 函数,我可以在调用之前进行配置。这就是所有文档所显示的示例。

有没有办法可以添加环境变量以编程方式从自身内部更新当前的 AWS Lambda Java 函数连接和套接字超时?

进一步说明:

没有“客户端”调用此 lambda 函数。它旨在按小时安排,由事件类型“CloudWatch Events - Schedule”触发。 lambda 本身会发出一个 GET 调用请求,该调用可能需要 65 秒到 140 秒的时间才能运行。总体 lambda 时间目前延长至 5 分钟。 lambda 的 GET 调用在第 50 秒处失败。上面提供的 AWS 文档引用了默认的 50 秒限制,可重试 3 次,据说这两次限制都可以修改。但是,我无法通过 lambda 自己的代码或 lambda 本身的任何参数以编程方式修改连接或套接字超时。必须有一种方法来正确配置它。

通过 HTTPS 到外部服务。我向它提供了代理设置,并验证了连接是否正确并且这是正确的调用。在 Postman 中,任何输入或限制都需要 65 秒以上。

请指教。

最佳答案

我发现了这个问题。事实证明,从 AWS 控制台来看 lambda 是成功的。只是在 Eclipse 中失败了。包含 AWS 开发工具包的 AWS 工具包出现此错误:

com.amazonaws.SdkClientException: Unable to execute HTTP request: Read timed out

我对代码和 AWS 控制台进行了上述更改,但它不起作用。 AWS Toolkit > 首选项中的设置如下所示:

AWS Toolkit Preferences

Timeout configurations

上述超时均设置为 20000 秒,限制了我如上所述进行的 HTTPS 调用。我将这个值更新得高得可笑,以进行测试,现在它在大约 93 秒内解决。 Postman 在该时间段内的同一调用也是 93 秒。

关于java - 使用 Java 的 AWS Lambda - 设置配置连接/套接字超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48958499/

相关文章:

java - 编写Java代码进行安全ftp

amazon-web-services - 如何配置 Amazon AWS Lambda 函数以防止在响应中拖尾日志?

node.js - AWS Lambda 函数在 context.fail 之后继续运行一段时间

amazon-web-services - 通过 CloudFormation ZipFile 部署 Lambda 函数时出现错误处理程序

aws-lambda - AWS Lambda : creating the trigger

java - 无法模拟 volatile 字段修饰符的使用

java - Java 中的 "primitive interface method"是什么?

python - 为什么 Elastic Beanstalk 不更新?

java - View 未添加到应用程序

PHP 安装 Amazon Linux Cloud Formation