AWS Lambda:任务超时

新手上路,请多包涵

我们被要求为我的学校项目编写在 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 许可协议

阅读 575
1 个回答

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

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

Lambda 函数的最长执行时间限制为 15 分钟(最近从最初的 5 分钟超时增加了)。 实际限制是在创建 Lambda 函数时配置的。存在限制是因为 Lambda 函数旨在小而快,而不是大型应用程序。

您的错误消息显示 Task timed out after 15.00 seconds 。这意味着 一旦任务达到 15 秒的运行时间,AWS 就会有意停止该任务。它与函数当时正在做什么无关,也与正在处理的文件无关。

解决方法: 增加 Lambda 函数配置页面上的超时设置。

原文由 John Rotenstein 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题