首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lambda函数无法连接到同一子网、同一安全域中的RDS实例

问Lambda函数无法连接到同一子网、同一安全域中的RDS实例
EN

Stack Overflow用户
提问于 2018-01-26 16:50:54
回答 2查看 333关注 0票数 1

我在AWS上有一个lambda函数和一个RDS实例。我尝试了以下几种方法来连接它:

将它们放在同一个VPC、同一个安全组、同一个子网中。当我尝试从lambda函数连接到RDS实例(MariaDB)时,我得到了一个Error: connect ETIMEDOUT。我还为Lambda函数赋予了一个角色,该角色拥有完整的EC2、RDS、VPC和Lambda权限。

但是,如果我允许所有流量进入RDS实例安全组(我知道这很糟糕!)并将Lambda函数从VPC中移除后即可连接(验证凭证等是否正确)

编辑:我已经根据您的评论进行了更改,并包含了有关角色和安全组设置的额外信息。请看下面的屏幕截图。配置屏幕截图如下:

Lambda函数VPC设置:

​

​

RDS实例VPC设置:

​

​

安全组入站设置:

​

​

lambda函数角色:

​

​

EN

回答 2

Stack Overflow用户

发布于 2018-01-27 00:05:50

您是否已按照此URL中的说明配置了角色?

https://docs.aws.amazon.com/lambda/latest/dg/vpc-rds-create-iam-role.html

尝试按照https://docs.aws.amazon.com/lambda/latest/dg/vpc.html中的说明,在lambda函数中添加"--vpc-config SubnetIds=逗号分隔-vpc-子网ids,SecurityGroupIds=comma-separated-security-group-ids \“。

此外,RDS是公开的。你的设计需要这个吗?

票数 0
EN

Stack Overflow用户

发布于 2018-10-12 22:01:38

我在使用mysql npm包时遇到了类似的问题。在调试过程中,我尝试使用以下命令查看主机名解析为哪个ip地址:

代码语言:javascript
复制
const { lookup: lc } = require('dns');
const { promisify } = require('util');

const lookup = promisify(lc);
const { address } = await lookup('<my-hostname.com>');

然后,我检查了IP地址是否在为RDS实例和子网指定的范围内,并且与可用区匹配。

问题是mysql可能试图从公共DNS解析主机名。因此,我没有传递主机名,而是将解析后的IP地址传递到mysql的初始化过程中,它就起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48458144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档