【问题标题】:How to create AWS nodejs lambda function with dependency如何创建具有依赖关系的 AWS nodejs lambda 函数
【发布时间】:2017-12-22 17:23:08
【问题描述】:

我有一个运行 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 运行压缩包

> 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 函数?

【问题讨论】:

    标签: node.js amazon-web-services lambda dependencies zip


    【解决方案1】:

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

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

    如果文件太大,你不能直接上传,这种情况下使用S3来存储你打包的函数,最后加载到Lambda中。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-31
        • 2021-11-01
        • 2017-10-28
        • 2015-10-11
        • 1970-01-01
        • 1970-01-01
        • 2016-07-31
        相关资源
        最近更新 更多