我有一个包含以下结构的zip文件(这是存档的根目录,而不是嵌套在顶级文件夹中,我理解这是aws-s3-lambda部署错误的常见原因):
- support/
- shared.js
- one.js
- two.js
然后在one.js和two.js中:
var shared = require("./support/shared");
// ...
当我在本地运行此代码时,它可以工作。我使用aws-sdk将zip文件上传到AWS-S3,然后使用aws.lambda.createFunction()创建一个具有该名称和处理程序以及所有内容的函数。创建的功能显示在我的Lambda仪表板中,但是当我测试它时,我得到"Cannot find module './support/shared'"
。我也尝试了var shared = require("./support/shared.js");
,并提供了"Cannot find module './support/shared.js'"
。
这适用于运行时node6.10
。文件名大小写对于区分大小写的lambda是正确的。
这不应该工作吗?问题是什么?
有没有办法验证Lambda正在使用的文件结构,以显示额外的./support/shared.js
文件实际上是否已将其发送到工作目录或其使用的任何内容?
答案 0 :(得分:0)
问题是,在Windows机器上创建的zip文件在其中设置了错误的chmod权限,以便AWS解压缩它。文件在那里,但无法访问,但节点只是提供了一个未找到的通用警告,而不是文件夹访问被拒绝。