构建 NodeJS Lambda - 相同的源,不同的 SHA 哈希
Building NodeJS Lambda - same source, different SHA hash
我遇到了一个有趣的问题,我无法指出原因。这是故事。
我的目标是使用 CircleCI 作为编排器,使用 Terraform 管理 Lambda 函数。过程如下所示:
GitHub repository -> CircleCI build (npm install && zip) -> aws s3 sync ZIP to S3 -> Terraform picks up ZIP from S3 -> if SHA is different, deploy to Lambda.
除了一个小问题,一切都很好。如果我 运行 整个过程两次,GitHub 存储库没有变化,Terraform 总是报告新的 SHA 哈希:
source_code_hash: "mx56e7pMbBdftYHes+pETvjFZInvKsP92vtZ5URqyJY=" => "dhe66opfifDLEr7wI+Ie9UE6ioUiG8hTajuPhctA+W0="
似乎问题出在npm install
过程中,可能总是做一些略有不同的事情,因此结果也不同。我不认为 ZIPing 文件夹会造成麻烦,这很简单 zip -r file.zip *
。
请解释一下这种行为?
npm install
版本 4 或更低版本是不确定的,因此无法保证您在不同版本中的 npm install
是相同的。
npm
用版本 5 的 package-lock.json
解决了它。使用最新版本的 npm
.
再试一次
或者,您可以尝试 yarn
或 pnpm
。两者都是旨在使用确定性安装的替代包管理器。
我遇到了一个有趣的问题,我无法指出原因。这是故事。
我的目标是使用 CircleCI 作为编排器,使用 Terraform 管理 Lambda 函数。过程如下所示:
GitHub repository -> CircleCI build (npm install && zip) -> aws s3 sync ZIP to S3 -> Terraform picks up ZIP from S3 -> if SHA is different, deploy to Lambda.
除了一个小问题,一切都很好。如果我 运行 整个过程两次,GitHub 存储库没有变化,Terraform 总是报告新的 SHA 哈希:
source_code_hash: "mx56e7pMbBdftYHes+pETvjFZInvKsP92vtZ5URqyJY=" => "dhe66opfifDLEr7wI+Ie9UE6ioUiG8hTajuPhctA+W0="
似乎问题出在npm install
过程中,可能总是做一些略有不同的事情,因此结果也不同。我不认为 ZIPing 文件夹会造成麻烦,这很简单 zip -r file.zip *
。
请解释一下这种行为?
npm install
版本 4 或更低版本是不确定的,因此无法保证您在不同版本中的 npm install
是相同的。
npm
用版本 5 的 package-lock.json
解决了它。使用最新版本的 npm
.
或者,您可以尝试 yarn
或 pnpm
。两者都是旨在使用确定性安装的替代包管理器。