node.js - 通过 AWS Lambda 控制台编辑器导入模块

标签 node.js amazon-web-services aws-lambda

尝试 NodeJS 中的应用程序。有以下导入

var https = require('https'),
    aws4  = require('aws4')

但是,得到错误

“errorType”:“Runtime.ImportModuleError”, "errorMessage": "错误:找不到模块 'aws4'",

使用 npm install aws4 安装 aws4 后在桌面上本地执行时代码可以正常工作。在aws控制台lambda编辑器中编辑lambda脚本时如何安装模块?

最佳答案

您无法从 Lambda 控制台添加模块。您必须使用包管理器(例如 npmyarn )并安装所需的依赖项。这意味着在将函数上传到 AWS Lambda 之前,在 package.json 中声明它们并运行 npm/yarn install。将生成一个 node_modules 文件夹,其中包含所有打包的依赖项。压缩并上传。

你的package.json应该看起来像这样:

{
  "name": "your-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "aws4": "^1.8.0",
    "https": "^1.0.0"
  }
}

如果您想让部署生活更轻松,您可能需要查看 AWS SAMServerless Framework .

请记住,如果您的包太大(并且太大,根据 docs ,AWS 的控制台只有 2MB 3MB),在添加依赖项后,您可能会失去以下能力:通过 AWS 的控制台内联编辑代码,这意味着您必须使用自己的编辑器/IDE 来编辑代码,然后才能上传。

关于node.js - 通过 AWS Lambda 控制台编辑器导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56268117/

相关文章:

node.js - 我的 Node.js 本地应用程序无法连接到 Azure SQL DB

amazon-web-services - Elasticsearch 的内部运作方式?

amazon-web-services - 我可以从多个 SQS 触发相同的 AWS lambda 吗?

javascript - swig for 循环 Node.js、express、mongodb

javascript - 将参数从 app.js 传递到 Route.js

css - --watching 时手写笔呈现空白文件

swift - 将 Cognito 用户池与 Amazon Cognito 身份集成

python - AWS CDK,为 Route53 中的现有托管区域创建别名记录

node.js - aws lambda : string yields empty buffer 中的 gm 错误

amazon-web-services - 如何在 AWS CloudWatch 中为 AWS SQS 添加偶数模式