Amazon web services 无法从ec2连接到rds
我无法从ec2实例连接到我的rds实例,我收到的错误是connect:连接超时。但是,我可以从本地机器上运行的mysql工作台进行连接Amazon web services 无法从ec2连接到rds,amazon-web-services,go,amazon-ec2,amazon-rds,Amazon Web Services,Go,Amazon Ec2,Amazon Rds,我无法从ec2实例连接到我的rds实例,我收到的错误是connect:连接超时。但是,我可以从本地机器上运行的mysql工作台进行连接 RDS实例设置为公共可用 RDS实例和ec2实例在同一个安全组中 安全组在配置为允许从任何位置进行连接时仍会产生相同的错误 当从ec2运行到rds时,跟踪路由输出***,但当从本地计算机运行时,提供正常输出,显示未被防火墙阻止 RDS实例和ec2实例在同一可用区,不是多区域RDS 使用以下golang打开连接: conn,err=sql.Open(“mysql”
conn,err=sql.Open(“mysql”,fmt.Sprintf(“%s:%”)s@tcp(%s:%s)/%s”、os.Getenv(“db_用户”)、os.Getenv(“db_通行证”)、os.Getenv(“db_端点”)、os.Getenv(“db_端口”)、os.Getenv(“db_名称”)+“?parseTime=true”)
这似乎是防火墙问题,但更改安全组权限没有帮助。将资源放在同一安全组中不会授予这些资源之间的访问权限。这是因为安全组规则分别应用于每个资源。因此,安全组需要“允许从自身访问”以允许连接。但是,由于您的RDS数据库配置为公共访问,这实际上无法工作,因为RDS数据库将具有公共IP地址
鉴于您的数据库是可公开访问的,其DNS名称将解析为公共IP地址。因此,您的配置应该是:
- 为Amazon EC2实例创建一个安全组(
),该安全组允许适当的入站权限(例如HTTP、SSH)并具有默认的出站规则(Allow All)App SG
- 为Amazon RDS数据库创建一个安全组(
),允许从EC2实例的公共IP地址进行入站访问DB-SG
- 但是,如果RDS数据库未配置为公共访问,您将配置安全组以允许从
进行入站访问。也就是说,App SG
将具体指DG-SG
App SG