如何使用依赖项创建AWS nodejs lambda函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用依赖项创建AWS nodejs lambda函数相关的知识,希望对你有一定的参考价值。

我有一个运行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函数?

答案

Linux zip实用程序对我来说很好用,看看你显示的zip命令的输出,我认为你唯一缺少的是递归选项(-r)。试试这个:

# zip -r function.zip package.json *.js node_modules 

如果文件太大,则无法直接上传,在这种情况下,使用S3存储打包的函数,最后将其加载到Lambda中。

另一答案

另一种选择是“静态地”将所有模块链接到一个大的.js文件中并上传。

这个问题描述了如何:Packaging code for AWS Lambda

以上是关于如何使用依赖项创建AWS nodejs lambda函数的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic Beanstalk NodeJS 和日志

如何使用 Amazon AWS Elastic Beanstalk 部署私有 python pip 依赖项?

使用类处理NodeJS 4中的循环依赖项[重复]

无法安装 sqlite3 作为对 AWS 的依赖项

来自执行环境的 AWS Lambda 凭证没有执行角色的权限

AWS Elastic Beanstalk 中的 Python:私有包依赖项