gpt4 book ai didi

amazon-web-services - AWS Lambda 函数无法从 EC2 实例 : SequelizeConnectionError connect ETIMEDOUT 访问 MySQL 数据库

转载 作者:行者123 更新时间:2023-12-03 22:26:27 27 4
gpt4 key购买 nike

我正在尝试访问安装在 EC2 实例中的 MySQL 数据库。我在 express js 中编写了一个简单的 AWS Lambda 函数。 lambda 函数需要访问 MySQL。当它尝试在 EC2 上建立数据库连接时,我得到以下所有人:

{
"errorType": "SequelizeConnectionError",
"errorMessage": "connect ETIMEDOUT",
"name": "SequelizeConnectionError",
"parent": {
"errorType": "Error",
"errorMessage": "connect ETIMEDOUT",
"code": "ETIMEDOUT",
"errorno": "ETIMEDOUT",
"syscall": "connect",
"fatal": true,
"stack": [
"Error: connect ETIMEDOUT",
" at Connection._handleTimeoutError (/var/task/node_modules/mysql2/lib/connection.js:173:17)",
" at ontimeout (timers.js:436:11)",
" at tryOnTimeout (timers.js:300:5)",
" at listOnTimeout (timers.js:263:5)",
" at Timer.processTimers (timers.js:223:10)"
]
},
"original": {
"errorType": "Error",
"errorMessage": "connect ETIMEDOUT",
"code": "ETIMEDOUT",
"errorno": "ETIMEDOUT",
"syscall": "connect",
"fatal": true,
"stack": [
"Error: connect ETIMEDOUT",
" at Connection._handleTimeoutError (/var/task/node_modules/mysql2/lib/connection.js:173:17)",
" at ontimeout (timers.js:436:11)",
" at tryOnTimeout (timers.js:300:5)",
" at listOnTimeout (timers.js:263:5)",
" at Timer.processTimers (timers.js:223:10)"
]
},
"stack": [
"SequelizeConnectionError: connect ETIMEDOUT",
" at Utils.Promise.tap.then.catch.err (/var/task/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:149:19)",
" at tryCatcher (/var/task/node_modules/bluebird/js/release/util.js:16:23)",
" at Promise._settlePromiseFromHandler (/var/task/node_modules/bluebird/js/release/promise.js:512:31)",
" at Promise._settlePromise (/var/task/node_modules/bluebird/js/release/promise.js:569:18)",
" at Promise._settlePromise0 (/var/task/node_modules/bluebird/js/release/promise.js:614:10)",
" at Promise._settlePromises (/var/task/node_modules/bluebird/js/release/promise.js:689:18)",
" at Async._drainQueue (/var/task/node_modules/bluebird/js/release/async.js:133:16)",
" at Async._drainQueues (/var/task/node_modules/bluebird/js/release/async.js:143:10)",
" at Immediate.Async.drainQueues [as _onImmediate] (/var/task/node_modules/bluebird/js/release/async.js:17:14)",
" at runCallback (timers.js:705:18)",
" at tryOnImmediate (timers.js:676:5)",
" at processImmediate (timers.js:658:5)"
]
}

ec2 配置是:-

EC2 Instance configuration

入站规则:
Inbound rules

出站规则
Outbound Rules*

Lambda 函数
Lambda management console

注意:vpc、子网和安全组在 EC2 和 lambda 中相同

这是我的代码:-
Lambda Function Code


任何帮助表示高度赞赏!

最佳答案

如果您想从 lambda 函数连接到 ec2 实例。

首先,Ec2 instances 和 lambda 函数在同一个 VPC 中,并且

其次,您必须为 lambda 函数创建 NAT gateway。 EC2 实例的子网和 lambda 函数的子网应该通过相同的 NAT gateway 路由。

例如 :

enter image description here

enter image description here

关于amazon-web-services - AWS Lambda 函数无法从 EC2 实例 : SequelizeConnectionError connect ETIMEDOUT 访问 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58931934/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com