使用 Java 的 AWS Lambda - 设置配置 connection/socket 超时
AWS Lambda using Java - setting the configuration connection/socket timeouts
看这里:
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 秒以上。
请指教
我发现了问题。事实证明 lambda 从 AWS 控制台成功。它只是在 Eclipse 中失败了。包含 AWS SDK 的 AWS 工具包给出了这个错误:
com.amazonaws.SdkClientException: Unable to execute HTTP request: Read timed out
我进行了上述代码和 AWS 控制台更改,但没有成功。 AWS Toolkit > Preferences 中的设置是什么,如下所示:
以上超时都设置为 20000 秒,限制了我如上所述进行的 HTTPS 调用。我将这个值更新得滑稽地高以测试它,现在它在大约 93 秒内解决。 Postman那个时间段的同一个调用也是93s
看这里: 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 秒以上。
请指教
我发现了问题。事实证明 lambda 从 AWS 控制台成功。它只是在 Eclipse 中失败了。包含 AWS SDK 的 AWS 工具包给出了这个错误:
com.amazonaws.SdkClientException: Unable to execute HTTP request: Read timed out
我进行了上述代码和 AWS 控制台更改,但没有成功。 AWS Toolkit > Preferences 中的设置是什么,如下所示:
以上超时都设置为 20000 秒,限制了我如上所述进行的 HTTPS 调用。我将这个值更新得滑稽地高以测试它,现在它在大约 93 秒内解决。 Postman那个时间段的同一个调用也是93s