AWS Lambda:任务超时

2022-08-31 10:17:38

我们被要求在我的学校项目中编写一个在AWS Lambda中运行的Java代码。它应该获取特定URL的源代码,然后将其上传到S3存储桶。Java 代码应在 AWS Lambda 上运行。

我获取Java中String变量的源代码。然后我有 while 循环,它尝试将 String 写入 /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无法将文件写入其临时目录,并且它与其他目录一起工作?


答案 1

Amazon Lambda 旨在用作响应事件的事件驱动系统。流程为:

  • 某个地方发生了触发 Lambda 的事情(例如,上传到 Amazon S3、数据进入 Amazon Kinesis 流、直接调用 Lambda 函数的应用程序)
  • 创建 Lambda 函数,传递来自触发器事件的数据
  • Lambda 函数运行

Lambda 函数的最大执行时间限制为 15 分钟(最近从原来的 5 分钟超时增加)。实际限制是在创建 Lambda 函数时配置的。之所以有此限制,是因为 Lambda 函数意味着小而快速,而不是大型应用程序。

您的错误消息显示 .这意味着 AWS 在任务达到 15 秒的运行时会故意停止该任务。它与函数当时正在执行的操作无关,也与正在处理的文件无关。Task timed out after 15.00 seconds

要修复:增加 Lambda 函数的配置页面上的超时设置。


答案 2

似乎您配置了 15 秒的超时。您可以按照此屏幕截图中的说明增加超时,并且根据 lambda 设置,它允许您执行的最长时间为 15 分钟。

timeout configuration


推荐