Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 无法从ec2连接到rds_Amazon Web Services_Go_Amazon Ec2_Amazon Rds - Fatal编程技术网

Amazon web services 无法从ec2连接到rds

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”

我无法从ec2实例连接到我的rds实例,我收到的错误是connect:连接超时。但是,我可以从本地机器上运行的mysql工作台进行连接

  • RDS实例设置为公共可用
  • RDS实例和ec2实例在同一个安全组中
  • 安全组在配置为允许从任何位置进行连接时仍会产生相同的错误
  • 当从ec2运行到rds时,跟踪路由输出***,但当从本地计算机运行时,提供正常输出,显示未被防火墙阻止
  • RDS实例和ec2实例在同一可用区,不是多区域RDS
  • 使用以下golang打开连接:
  • 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实例创建一个安全组(
      App SG
      ),该安全组允许适当的入站权限(例如HTTP、SSH)并具有默认的出站规则(Allow All)
    • Amazon RDS数据库创建一个安全组(
      DB-SG
      ),允许从EC2实例的公共IP地址进行入站访问
    • 但是,如果RDS数据库未配置为公共访问,您将配置安全组以允许从
      App SG
      进行入站访问。也就是说,
      DG-SG
      将具体指
      App SG

    公开RDS实例是非常罕见的。您想这样做有什么特别的原因吗?想测试我是否可以从ec2实例以外的其他地方连接到rds实例为了简单起见,我更改了rds的安全组以允许从任何地方连接,但仍然收到相同的错误消息。SG配置如下:完整错误消息如下:“紧急:拨号tcp 172.31.12.153:0:连接:连接超时”。这使我相信DNS正在解析为私有ip地址,因为它以172开头。该错误消息是否表示它正在尝试使用端口0?|如果您从EC2实例解析IP地址,它会说什么?例如,ping mydb.cfnr64hlvtcp.us-east-1.rds.amazonaws.com(或其他任何东西)会有什么结果?如果它是一个私有IP地址,那么这两个安全组可以直接相互引用。是的,你是对的,我忘记在我的env文件中设置端口,它使用的是端口0。非常感谢你,你实际上是上帝赐予人类的礼物,真他妈的哈哈