2016-03-21 54 views
12

我有这个简单的描述,我试图通过AWS LAMBDA在对的NodeJS运行的实例函数:AWS拉姆达描述情况下超时

var AWS = require('aws-sdk'); 
AWS.config.region = 'us-east-1'; 

exports.handler = function(event, context) { 
    console.log("\n\nLoading handler\n\n"); 
    var ec2 = new AWS.EC2(); 
    ec2.describeInstances(function(err, data) { 
     console.log("\nIn describe instances:\n"); 
     if (err) { 
     console.log(err, err.stack); 
     context.done(null, 'Function Finished from error!'); // an error occurred 
     }else { 
     console.log("\n\n" + data + "\n\n"); 
     context.done(null, 'Function Finished with data!'); // successful response 
     } 
    }); 
}; 

这不还给我任何错误,在CloudWatch的唯一输出是这样的:

2016-03-21T17:01:59.085Z xxxxxxx-xx.... Task timed out after 3.00 seconds 

任何人都有任何想法可能是什么问题?

+1

您是否为Lambda函数启用了VPC访问? –

+0

@MarkB是我选择了VPC,子网和安全组 – Tomas

+0

如果增加超时时间,它仍然超时? –

回答

0

检查:https://medium.com/@philippholly/aws-lambda-enable-outgoing-internet-access-within-vpc-8dd250e11e12#.2sdn5oyd1

如果您在VPC,你不能访问互联网!

您应该配置NAT以启用lambda中的传出Internet访问。

+2

请不要给只有链接的答案。您应始终在答案的正文中包含(最小)必要步骤以获得解决方案。链接可能会下降,然后你的答案变得毫无用处。因此,只需引用所需的步骤,并在信用到期时给予信贷。 –

2

确保执行角色具有EC2权限,并尝试使用:

context.fail()context.succeed()

VS

context.done()

+0

有没有一个来源可以解释更多关于此方法? – Doug

9

我也面临着同样的问题。我增加超时(LAMBDA - - >配置 - >高级设置)从3秒到5秒,它工作正常。

+0

另一种方法是增加内存配置并将超时时间设置为30秒。然后运行测试,它会显示它需要多长时间。 –