我正在学习如何在aws上创建lambda。我遵循这个官方教程。
我运行的命令:
sam init
(所有默认值,我选择模板8-webapp后端(
cd sam-app
sam build
我得到的输出是:
Building codeuri: /home/sam-app runtime: nodejs14.x metadata: {} functions: ['getAllItemsFunction', 'getByIdFunction', 'putItemFunction']
Running NodejsNpmBuilder:NpmPack
Build Failed
Error: NodejsNpmBuilder:NpmPack - NPM Failed: npm ERR! code Z_DATA_ERROR
npm ERR! errno -3
npm ERR! zlib: invalid distance too far back
npm ERR! A complete log of this run can be found in:
npm ERR! /home/username/.npm/_logs/2021-05-20T14_02_59_425Z-debug.log
节点版本:16.2.0
npm版本:7.13.0
sam版本:1.23.0
zlib版本:1:1.2.11-4
我没有修改任何文件-它们都是由sam.生成的
尝试在容器中构建它。使用sam build -u
这对我来说很有效,但我不确定为什么没有它就无法构建。
我在wsl2中遇到了同样的问题,我通过安装带有nvm的新版本nodejs(v14.17.1(解决了这个问题https://learn.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-wslhttps://github.com/nvm-sh/nvm#git-安装
我也遇到了同样的问题。我通过lambda文件夹中的npm init
命令修复了它,该文件夹是我们为各个lambda函数创建的。这将通过创建package.json.来修复版本
也许在template
文件中,您可能使用以下类型的
Type: AWS::Lambda::Function
如果是这种情况,那么将类型更改为低于一个
Type: AWS::Serverless::Function
我怀疑您受到了https://github.com/aws/aws-sam-cli/issues/3965这反过来可能与zlib 1.2.11问题有关,该问题应该通过更新使用zlib 1.2.12 来解决
我在Fedora 36和Arch Linux上都遇到过这种情况。
正如Mark所建议的,您可能可以通过使用构建容器来解决这个问题。这是通过将-u
添加到sam build
的参数中来完成的。
根据您使用的发行版,您可能能够更新zlib。
请注意,如果您在Fedora上,zlib更新可能需要一段时间:
- Bug 2069002-zlib-1.2.12可用
- Bug 2068066-CVE-2018-25032 zlib:在压缩(而不是解压缩(某些输入时在zlib中发现一个缺陷