Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从AWS Lambda获取URL时出现无声错误_Java_Amazon Web Services_Aws Lambda - Fatal编程技术网

Java 从AWS Lambda获取URL时出现无声错误

Java 从AWS Lambda获取URL时出现无声错误,java,amazon-web-services,aws-lambda,Java,Amazon Web Services,Aws Lambda,我正在尝试从AWS Lambda获取网页内容,但它以静默方式失败,CloudWatch日志只包含以下行(超时设置为10秒,因此持续时间为10000ms): 启动请求ID:f101849f-1219-411b-8875-8944a76de937版本:$最新 结束请求ID:f101849f-1219-411b-8875-8944a76de937 报告请求ID:f101849f-1219-411b-8875-8944a76de937持续时间:10008.39毫秒 我运行的代码只是获取URL并读取内容。

我正在尝试从AWS Lambda获取网页内容,但它以静默方式失败,CloudWatch日志只包含以下行(超时设置为10秒,因此持续时间为10000ms):

启动请求ID:f101849f-1219-411b-8875-8944a76de937版本:$最新
结束请求ID:f101849f-1219-411b-8875-8944a76de937 报告请求ID:f101849f-1219-411b-8875-8944a76de937持续时间:10008.39毫秒

我运行的代码只是获取URL并读取内容。它在本地环境下工作正常,但在AWS Lambda上测试时却不行:

public class TestHandler implements RequestHandler<Object, String>{

    @Override
    public String handleRequest(Object o, Context context) {
        try {
            Connection con = HttpConnection.connect(new URL("https://www.google.com"));
            con.timeout(40000);
            return con.get().getAllElements().toString();
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }
}
公共类TestHandler实现RequestHandler{
@凌驾
公共字符串handleRequest(对象o,上下文){
试一试{
Connection con=HttpConnection.connect(新URL(“https://www.google.com"));
con.超时(40000);
返回con.get().getAllegements().toString();
}捕获(IOE异常){
System.out.println(e.getMessage());
}
}
}

在处理请求时我不知道的任何AWS限制?

Java容器需要时间来启动。在您的情况下,您也正在点击Lambda,并且您可能知道,如果没有请求,Lambda将保持在冷态。它只有在请求到来时才会唤醒。此外,Lambda配置中的超时设置为10秒。请从Lambda UI屏幕增加它。作为一名java开发人员,我建议您删除不必要的jar或maven依赖项(如果您能找到的话)。请先增加时间,然后重试。

问题来自设置为默认128MB的内存限制不足。 当我增加到256MB时,连接按预期工作,并检索页面内容。
因此,当lambda达到最大内存限制时,AWS会在CloudWatch中杀死它,而不会显示任何消息(如果它在超时时被杀死,您会得到它)

您的lambda是否在VPC中?您是否尝试增加Lambda的超时?Lambda是同步运行还是异步运行?它是否将承诺返回给调用方/运行时?在这种情况下,瓶颈来自内存约束