I am creating new lambda functions using nodejs. And this lambda functions works well without aws-lambda. But when I require 'aws-sdk' package, it occurs the error and stop running. The error is that they can't require the 'aws-sdk' package. But aws-sdk was already in node_module folder.
I want you to solve this problem. Many thanks.
答案 0 :(得分:3)
这是一个非常有趣和奇怪的问题。 我也遇到过这个问题。 起初,当我遇到这个问题时,我非常担心,看起来真的很奇怪。 我花了几天时间来解决这个问题。
原因很简单。 由于lambda函数超时,您遇到了这个问题。
默认超时为3秒,加载aws-sdk软件包的时间太短,为3秒。
要加载aws-sdk包,它至少需要6秒钟。 因此,我建议您在需要使用aws-sdk函数时将超时设置为6秒以上。
答案 1 :(得分:0)
如果此功能每天运行数千次,持续5秒左右,那么它的成本会非常高。如果你的lambda目前在完成执行之前等待另一个任务完成,那么最好考虑一个消息传递系统,例如SNS。
我有一个需要aws-sdk的lambda函数,然后更新DynamoDB,并在完成该请求后调用另一个lambda函数,我从未见过所有这些都超过1秒。如果你正在调用另一个lambda函数,请确保包含InvocationType: 'Event'
,以便原来的lambda立即完成,而不是等待第二个lambda函数完成。
如果仍然无效,那么现在可以按照here
所述尝试SNS