构建NodeJS Lambda - 相同的源,不同的SHA哈希

时间:2017-10-19 07:36:45

标签: npm aws-lambda node-modules terraform circleci

我有一个有趣的问题,我无法指出原因。这是故事。

我的目标是使用Terraform管理Lambda函数,使用CircleCI作为编排器。流程如下所示:

  

GitHub存储库 - > CircleCI构建(npm install&& zip) - > aws s3同步ZIP到S3 - > Terraform从S3中获取ZIP - >如果SHA不同,请部署到Lambda。

这一切都很好用一个小问题。如果我运行整个过程两次,而GitHub存储库没有变化,Terraform总会报告新的SHA哈希:

  

source_code_hash:“mx56e7pMbBdftYHes + pETvjFZInvKsP92vtZ5URqyJY =”=> “dhe66opfifDLEr7wI + Ie9UE6ioUiG8hTajuPhctA + W0 =”

似乎问题出现在npm install进程附近,这可能总是略有不同,因此结果也不同。我不认为,ZIPing文件夹应该会引起麻烦,这很简单zip -r file.zip *

对此行为有何解释?

1 个答案:

答案 0 :(得分:4)

版本为4或更低版本的

npm install是不确定的,因此无法保证不同版本中的npm install将是相同的。

npm使用版本5 package-lock.json解决了这个问题。请使用最新版本的npm再次尝试。

或者,您可以尝试yarnpnpm。两者都是旨在使用确定性安装的替代包管理器。