无法部署NodeJS AWS Lambda函数。 Object.fs.openSync出错

时间:2018-06-07 09:11:01

标签: node.js amazon-web-services aws-lambda alexa

因此,直到几天前,我曾经通过一个简短的shell脚本部署我的Node.JS AWS Lambda函数,该脚本运行得非常好。

现在我不知道为什么或者我做了什么不同,但由于某种原因,在每次部署我的lambda函数后,我现在得到以下错误,当通过Alexa调用函数时:

19:47:58
module initialization error Error
module initialization error
Error

19:47:59
START RequestId: 596b2724-68f9-11e8-aaa7-d9ff3044ed9d Version: $LATEST
START RequestId: 596b2724-68f9-11e8-aaa7-d9ff3044ed9d Version: $LATEST

19:47:59
module initialization error: Error at Object.fs.openSync (fs.js:646:18) 
at Object.fs.readFileSync (fs.js:551:33) 
at Object.Module._extensions..js (module.js:662:20) 
at Module.load (module.js:565:32) 
at tryModuleLoad (module.js:505:12) 
at Function.Module._load (module.js:497:3) 
at Module.require (module.js:596:17) 
at require (internal/module.js:11:18)

module initialization error: Error
at Object.fs.openSync (fs.js:646:18)
at Object.fs.readFileSync (fs.js:551:33)
at Object.Module._extensions..js (module.js:662:20)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)

19:47:59
END RequestId: 596b2724-68f9-11e8-aaa7-d9ff3044ed9d

19:47:59
REPORT RequestId: 596b2724-68f9-11e8-aaa7-d9ff3044ed9d  
Duration: 218.74 ms  Billed Duration: 300 ms 
Memory Size: 128 MB Max Memory Used: 20 MB

REPORT RequestId: 596b2724-68f9-11e8-aaa7-d9ff3044ed9d  
Duration: 218.74 ms Billed Duration: 300 ms 
Memory Size: 128 MB Max Memory Used: 20 MB  

现在这里出现的部分确实让我无法理解我是如何解决这个问题的(我想这可能是我Mac上本地的东西)。 如果我从Lambda函数下载/导出以前工作的部署包,直接重新上载Zip文件,则可以

如果我解压缩文件并再次重新压缩,我会收到错误

没有我改变代码的任何内容。这就是让我想知道我的mac或者文件系统上的压缩是否有问题的原因?

我通过nvm使用Mac OSX High Sierra,节点6.10 / 8.10。 lambda上的代码以6.10和8.10

运行

任何建议表示赞赏:)

编辑:最后一次工作提交是在Windows PC上完成的......我有点担心文件系统是否会以某种方式改变了打包/上传。我会尝试深入研究一下。

4 个答案:

答案 0 :(得分:3)

我们正在将代码的.zip存档上传到AWS Lambda。

对我们来说,问题在于.zip文件中的文件没有世界可读的权限。

答案 1 :(得分:0)

好的,只有能够解决这个问题的事情才回到我从OSX做的最后一次提交,而忽略了我在Windows上做的最后3次提交。

看起来有一些路径或编码更改是通过提交在此错误中解决的窗口引入的。不幸的是,我无法在提交差异中看到这些。

因此,寻找操作系统之间的差异可能非常重要。

答案 2 :(得分:0)

过去,我遇到了Lambda和Windows计算机中的代码的问题。解决方案(对我而言)是从目录外部chmod -R 644 lambdaDirectory,将Windows所做的所有操作都修复为权限。我不知道是什么原因导致下载/重新上传工作,也许AWS正在对清单做些事情?

我还遇到了来自使用第三方压缩工具的其他计算机的zip文件的问题,因为它们将整个目录压缩到一个命名为相同而不是内容的存档中。即,您不希望lambdaDirectory/包含在lambdaDirectory.zip中。要解决此问题,请从目录内部运行zip -r lambdaDirectory.zip ./*

答案 3 :(得分:0)

我面临着同样的问题。这在Windows上对我有用-

  1. 导出lambda函数(可下载.zip文件)
  2. 提取文件
  3. 再次压缩这些文件
  4. 将此新拉链上传到lambda