AWS Lambda软件包部署的函数需要()找到相对路径的()

时间:2017-07-06 19:39:20

标签: amazon-s3 aws-lambda aws-sdk

我有一个包含以下结构的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文件实际上是否已将其发送到工作目录或其使用的任何内容?

1 个答案:

答案 0 :(得分:0)

问题是,在Windows机器上创建的zip文件在其中设置了错误的chmod权限,以便AWS解压缩它。文件在那里,但无法访问,但节点只是提供了一个未找到的通用警告,而不是文件夹访问被拒绝。