我的学校项目要求我们编写一个在 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 在这种特定情况下无法将文件写入其临时目录并且它可以与其他人一起使用吗?
最佳答案
Amazon Lambda 旨在用作响应事件的事件驱动系统。流程是:
- 某处发生触发 Lambda 的事情(例如上传到 Amazon S3、数据进入 Amazon Kinesis 流、直接调用 Lambda 函数的应用程序)
- 创建了 Lambda 函数,传递了来自触发事件的数据
- Lambda 函数运行
Lambda 函数的最大执行时间限制为 15 分钟(最近从最初的 5 分钟超时时间增加)。 实际限制是在创建 Lambda 函数时配置的。限制已经到位,因为 Lambda 函数旨在小而快,而不是大型应用程序。
您的错误消息显示 Task 在 15.00 秒后超时
。这意味着 AWS 在运行时间达到 15 秒后故意停止任务。它与函数当时正在做什么无关,也与正在处理的文件无关。
解决方法:增加 Lambda 函数配置页面上的超时设置。
关于java - AWS Lambda : Task timed out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43577746/