编程语言
首页 > 编程语言> > 使用Java的AWS Lambda-设置配置连接/套接字超时

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

作者:互联网

看这里:
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开发工具包的AWS工具包给出了以下错误:

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

我进行了上面描述的代码和AWS控制台更改,但没有用.这是AWS Toolkit>中的设置.首选项如下所示:

AWS Toolkit Preferences

Timeout configurations

上面的超时都设置为20000,限制了我如上所述进行的HTTPS调用.我将该值更新为可笑的高值以对其进行测试,现在它的解析时间约为93s.在那个时期内,来自邮递员的相同呼叫也是93s.

标签:java,amazon-web-services,aws-lambda,connection-timeout
来源: https://codeday.me/bug/20191010/1884072.html