我们被要求为我的学校项目编写在 AWS Lambda 中运行的 Java 代码。它应该获取特定 URL 的源代码,然后将其上传到 S3 存储桶。 Java 代码应该在 AWS Lambda 上运行。
我得到了 Java 中 String 变量的源代码。然后我有 while 循环尝试将字符串写入 /tmp 目录中的文件。然后将文件上传到 S3。
一切正常,但我被一个特定的 URL 卡住了。我已经跟踪了这个问题:
try {
BufferedWriter out = new BufferedWriter(new FileWriter("/tmp/url.txt"));
out.write(source_code); //Replace with the string
//you are trying to write
out.close();
}
catch (IOException e) {
System.out.println("Exception ");
}
最奇怪的是,当我在本地测试代码时,一切正常。在我的计算机上的 /tmp 目录中创建文件,然后将其上传到 S3 存储桶。但是,当我在 Lambda 中运行代码时,出现以下错误:
Task timed out after 15.00 seconds
知道为什么 Lambda 在这种特定情况下无法将文件写入其临时目录并且它可以与其他人一起使用吗?
原文由 jansv 发布,翻译遵循 CC BY-SA 4.0 许可协议
Amazon Lambda 旨在用作响应事件的事件驱动系统。流程是:
Lambda 函数的最长执行时间限制为 15 分钟(最近从最初的 5 分钟超时增加了)。 实际限制是在创建 Lambda 函数时配置的。存在限制是因为 Lambda 函数旨在小而快,而不是大型应用程序。
您的错误消息显示
Task timed out after 15.00 seconds
。这意味着 一旦任务达到 15 秒的运行时间,AWS 就会有意停止该任务。它与函数当时正在做什么无关,也与正在处理的文件无关。解决方法: 增加 Lambda 函数配置页面上的超时设置。