app*_*her 1 mysql amazon-web-services node.js aws-lambda
我有以下代码要执行。我试过需要 mysql 和 node-mysql ,它们都给我同样的错误:
代码:
var AWS = require("aws-sdk");
var mysql = require("mysql");
exports.handler = (event, context, callback) => {
try {
console.log("GOOD");
}
catch (error) {
context.fail(`Exception: ${error}`)
}
};
Run Code Online (Sandbox Code Playgroud)
错误:
{
"errorMessage": "Cannot find module 'mysql'",
"errorType": "Error",
"stackTrace": [
"Function.Module._load (module.js:417:25)",
"Module.require (module.js:497:17)",
"require (internal/module.js:20:19)",
"Object.<anonymous> (/var/task/index.js:2:13)",
"Module._compile (module.js:570:32)",
"Object.Module._extensions..js (module.js:579:10)",
"Module.load (module.js:487:32)",
"tryModuleLoad (module.js:446:12)",
"Function.Module._load (module.js:438:3)"
]
}
Run Code Online (Sandbox Code Playgroud)
如何使用 lambda 将 mysql 导入节点或使其工作?
哦,所以这预计会发生。
问题在于 AWS Lambda 在不同的机器上运行,您无法配置该特定机器以在自定义环境中运行。但是,您可以将 Node Module 打包成 zipmysql或node-mysqlzip 文件,然后上传到 AWS Lambda。步骤是,
npm install mysql --save您还可以通过使用无服务器框架采取更好的方法。更多信息在这里。在这种方法中,您编写了一个 YAML 文件,其中包含要用于部署 lambda 的所有详细信息和配置。在您的 lambda 配置nodemodule/**下,在package->include部分下指定节点模块的路径(例如,)。这将打包您所需的代码。稍后使用命令行,您可以部署此 lambda。它使用 AWS Cloudformation 服务,是部署资源的首选方式之一。
可以在此处找到有关使用无服务器框架进行打包的更多信息。
注意:要使用无服务器框架,有几个步骤,例如为您的用户获取 API 密钥、在 IAM 中设置正确的权限等。这些只是初始设置,以后不需要。在使用无服务器框架进行部署之前,请务必执行这些操作。
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
7444 次 |
| 最近记录: |