我有一个运行AWS的非常基本的node.js示例,我需要修改代码以在“请求”模块上添加依赖项。
我已经明白你需要把它打包成一个带有必要节点模块的zip文件。
我下载了index.js并添加了代码。我创建了package.json:
{
"name": "function",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"zip": "zip function.zip package.json *.js node_modules"
},
"dependencies": {
"aws-sdk": "^2.4.10",
"request": "^1.0"
}
}
我使用npm install来引入依赖项。这将使用模块及其依赖项填充node_modules子文件夹。
然后我把它压缩了,但AWS控制台不会上传它。
这个Q& A Creating a lambda function in AWS from zip file告诉我不要正常压缩,但要像这样使用npm: `npm run zip
> function@1.0.0 zip /Users/paul_tanner/Desktop/index
> zip function.zip package.json *.js node_modules
adding: package.json (deflated 36%)
adding: index.js (deflated 73%)
adding: node_modules/ (stored 0%)`
在尝试上传和测试之前,我打开它以检查是否包含了依赖项。他们不是。
为了它的地狱,我也尝试上传生成的“function.zip”。同样,AWS Lambda也不会上传它。
所以问题是如何创建和上传具有依赖关系的AWS Lambda函数?
答案 0 :(得分:0)
Linux zip实用程序对我来说很好用, 查看您显示的zip命令的输出,我认为您唯一缺少的是递归选项(-r)。试试这个:
# zip -r function.zip package.json *.js node_modules
如果文件太大,则无法直接上传,在这种情况下,请使用S3存储打包的函数,最后将其加载到Lambda中。
答案 1 :(得分:0)
另一种选择是“静态地”将所有模块链接到一个大的.js
文件中并上传。
此问题描述了如何:Packaging code for AWS Lambda