Dan*_*noz 20 javascript amazon-web-services node.js aws-lambda
从zip文件上传代码时,我在aws-lambda控制台中不断收到此错误.我尝试上传其他zip文件,但它们正常工作..js文件在zip文件中名为"CreateThumbnail.js".我相信处理程序也正确命名为"CreateThumbnail.handler".node_modules子目录也已设置.任何人都有任何想法?
{
"errorMessage": "Cannot find module 'CreateThumbnail'",
"errorType": "Error",
"stackTrace": [
"Function.Module._resolveFilename (module.js:338:15)",
"Function.Module._load (module.js:280:25)",
"Module.require (module.js:364:17)",
"require (module.js:380:17)"
]
}
Run Code Online (Sandbox Code Playgroud)
Aar*_*ron 18
我能够让它工作的方式是:
好吧,我自己做了这个,只是确保你制作zip文件,使.js文件不会在文件夹中结束,因为AWS会解压缩你上传的文件,并试图找到一个名为的.js文件.你给的处理程序,如果它在一个文件夹中,它将无法帮助你.
一个可能的问题是,如果您将 lambda 作为通过 PowerShell 创建的 zip 文件上传Compress-Archive
。Compress-Archive
有一个错误导致 AWS 将文件提取到一个平面树(没有子目录)中,文件名中带有反斜杠:
小智 5
如果您的压缩文件没有全球读取权限,则可能会出现此确切错误。( chmod -R ugo+r
).
在压缩文件之前检查文件权限。不幸的是,AWS 并没有充分强调这一点,它给许多人带来了很多麻烦。
如果您使用AWS Lambda Layers,则需要验证您的目录结构是否位于层所需的结构上:
\n\n例如,对于moment.js node.js 模块,您需要以下结构:
\n\naws-lambda-layer.zip\n\xe2\x94\x82 nodejs\n\xe2\x94\x82 nodejs/node_modules\n\xe2\x94\x94 nodejs/node_modules/moment\n
Run Code Online (Sandbox Code Playgroud)\n\n因此,要创建具有正确结构的图层 zip 文件,我们可以在项目的根目录下使用以下命令:
\n\nmkdir -p nodejs && cp -r node_modules nodejs/ && zip -r aws-lambda-layer.zip nodejs\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
30664 次 |
最近记录: |