微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

安装无服务器框架以在 aws lambda 中执行 nodejs 应用程序

如何解决安装无服务器框架以在 aws lambda 中执行 nodejs 应用程序

在 api 网关中测试 lambda 函数时,我收到以下错误消息。 让我在这里介绍一些我正在做的事情的背景。

我创建了一个堆栈,用于创建 apigateway、lambda 和 dynamo db。 该项目有 serverless.yml,由以下配置组成

我是这个设置的新手,我知道我必须在 lambda 上安装无服务器框架(可能使用“sudo npm -i -g serverless”)。您能否帮助我了解我可以在哪里以及如何完成这项工作,或者这是开发人员必须处理的事情吗?

如果您有任何其他详细信息,请告诉我。

serverless.yml

service: ps-hbo-api
plugins: ${file(./serverless-${self:provider.stage}.yml):plugins}
custom: ${file(./serverless-${self:provider.stage}.yml):custom}
vfg: ${file(./serverless-${self:provider.stage}.yml):vfg}
logs: ${file(./serverless-${self:provider.stage}.yml):logs}

serverless-prod.yml

plugins:
  - serverless-prune-plugin
  - serverless-pseudo-parameters
#Testing otherwise has to be removed  
  - serverless-http 

index.js

const serverless = require('serverless-http');
const bodyParser = require('body-parser');
const express = require('express');
const app = express();

错误信息

    {"errorType":"Runtime.ImportModuleError","errorMessage":"Error: Cannot find module 'serverless-http'\nRequire stack:\n- /var/task/index.js\n- /var/runtime/UserFunction.js\n- /var/runtime/index.js","trace":["Runtime.ImportModuleError: Error: Cannot find module 'serverless-http'","Require stack:","- /var/task/index.js","- /var/runtime/UserFunction.js","- /var/runtime/index.js","    at _loadUserApp (/var/runtime/UserFunction.js:100:13)","    at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)","    at Object.<anonymous> (/var/runtime/index.js:43:30)","    at Module._compile (internal/modules/cjs/loader.js:999:30)","    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)","    at Module.load (internal/modules/cjs/loader.js:863:32)","    at Function.Module._load (internal/modules/cjs/loader.js:708:14)","    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)","    at internal/main/run_main_module.js [TruncATED]
Fri May 14 07:53:59 UTC 2021 : Lambda execution Failed with status 200 due to customer function error: Error: Cannot find module 'serverless-http'
        Require stack:
        - /var/task/index.js
        - /var/runtime/UserFunction.js
        - /var/runtime/index.js. Lambda request id: 2fe67c72-8d94-4011-b274-c7c91f10cdcf
        Fri May 14 07:53:59 UTC 2021 : Method completed with status: 502    

解决方法

在您部署 lambda 函数之后,它似乎无法找到 serverless-http npm 依赖项。因此,我建议在您的 serverless-plugin-include-dependencies 中添加 serverless-prod.yml 插件,以便在部署您的项目时下载并安装必要的依赖项。

添加插件后,它应该是这样的。

plugins:
  - serverless-prune-plugin
  - serverless-pseudo-parameters
  - serverless-plugin-include-dependencies

您可以查看依赖插件here from the serverless documentation的详细信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。