jan*_*nsv 36 java amazon-web-services aws-lambda
我们已经要求我的学校项目编写一个在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 ");
}
Run Code Online (Sandbox Code Playgroud)
最奇怪的是,当我在本地测试代码时,一切正常.文件在我的计算机上的/ tmp目录中创建,然后上传到S3存储桶.但是,当我在Lambda中运行代码时,我收到以下错误:
Task timed out after 15.00 seconds
Run Code Online (Sandbox Code Playgroud)
知道为什么Lambda在这个特定情况下无法将文件写入临时目录并且与其他人一起使用?
Joh*_*ein 64
Amazon Lambda旨在用作响应事件的事件驱动系统.流程是:
Lambda函数的最大执行时间限制为5分钟.创建Lambda函数时配置实际限制.限制已经到位,因为Lambda函数意味着小而快,而不是大型应用程序.
您的错误消息说Task timed out after 15.00 seconds.这意味着AWS 在达到15秒的运行时间后故意停止任务.它与当时函数的功能无关,也与正在处理的文件无关.
修复:增加Lambda函数配置页面上的超时设置.
jpe*_*zov 13
对于那些在使用 时遇到此超时问题的人async,请注意异步函数的处理程序的模式不同。
代替
exports.handler = function (event, context, callback) {
callback(null, {
statusCode: 200,
body: JSON.stringify({/* return stuff here */})
});
};
Run Code Online (Sandbox Code Playgroud)
它是
exports.handler = async function (event, context) {
return {
statusCode: 200,
body: JSON.stringify({/* return stuff here */})
};
};
Run Code Online (Sandbox Code Playgroud)
lal*_*war 13
您可以将 lambda 函数的超时时间增加到 15 分钟,或者您可以增加对 lambda 函数的内存分配以使其更快。您可以将内存增加到 3008MB。其最小值为 128MB。如果您有以下情况,它会像这样: 为您的 lambda 函数分配大内存分配比执行该 lambda 函数所需的时间更少,反之亦然。每次执行 lambda 函数时,大内存分配会花费更多。您需要计算超时时间和分配给 lambda 函数的内存的平衡。不要只是分配大块内存,以便您可以很快看到结果,分析成本和您的需求。附一张图,其中更改超时和内存分配。转到您的 Lambda 函数 -> 配置 -> 基本设置以查找设置。

小智 7
我通过将 AWS-SDK 放在函数体之外解决了这个问题:
var AWS = require("aws-sdk");
exports.handler = function(event, context, callback)
{
//var AWS = require("aws-sdk"); //Error: Task timed out after 3.00 seconds
var docClient = new AWS.DynamoDB.DocumentClient();
console.log("Lambda starts");
...Run Code Online (Sandbox Code Playgroud)
小智 7
最近,我正在开发一个与 AWS Lambda 函数配合使用的 POC。我也遇到了同样的问题(任务在 15.01 秒后超时)。我只是增加了内存分配,就解决了问题。美妙之处在于我可以在几秒钟内得到回复。所以,我认为错误几乎没有误导性。它应该提供失败的确切根本原因。
| 归档时间: |
|
| 查看次数: |
47233 次 |
| 最近记录: |