【问题标题】:Connecting AWS EC2 API to AWS RDS on same VPC, works externally将 AWS EC2 API 连接到同一 VPC 上的 AWS RDS,在外部工作
【发布时间】:2021-04-07 09:58:10
【问题描述】:

AWS 新手,我正在尝试将我的 EC2 实例上的 API 与我的 RDS 连接。尝试返回 500 错误

我能够成功做到的事情:

使用托管在外部服务器上的 API 连接到 RDS。 在我的 EC2 实例上运行 API,而不是连接到数据库的 API。

我尝试了哪些解决方案: 添加了新的 MYSQL/Aurora 入站和出站规则以包括: EC2 私有 IPv4 地址/32 EC2 公共 IPv4/32 EC2 安全组

因为我可以从外部访问数据库并在服务器上运行 PHP 脚本,所以我认为问题在于 EC2 与 RDS 的连接,尽管我确信它可能是其他问题。

*我正在使用 PHP API 连接 MySQL RDS

感谢您的时间和帮助。

【问题讨论】:

  • 500 错误是超时错误吗?您有任何与错误代码相关的消息吗?
  • @Marcin 这是一个没有消息的 500 内部服务器错误
  • 如果您只使用mysql 客户端连接到您的数据库怎么办?它也不起作用,或者问题是您的 API 调用?
  • @Marcin 我通过 mysql 客户端连接到数据库没有问题。问题似乎只是来自 EC2 API,我能够确认它是从外部服务器工作的。

标签: amazon-web-services amazon-ec2 amazon-rds aws-security-group


【解决方案1】:

如果您的连接方式与外部服务器相同(可能通过端口 3306),那么 EC2 也应该通过端口 3306 连接。

如果您的安全组阻止了 3306 端口,并且您通过公共端点连接,那么您可能无法连接到数据库。

我建议在 RDS 上禁用公共端口 3306 访问,并且只允许“内部”IP 地址通过端口 3306 访问数据库,这样您就可以将 EC2 配置为使用内部 IP 地址访问 RDS。

内部是指 RDS 的 LAN IP,假设它们在同一个 VPC 和 AZ 中(也可以允许跨 AZ,这取决于您如何设置)。

【讨论】:

  • 谢谢,我检查了它我同意连接到同一个端口。但是,它似乎仍然不起作用。我也在使用两个单独的 VPC。
  • 如果您使用两个 VPC,它将无法工作,因为它们将有不同的 LAN IP 地址池,彼此分开。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-20
  • 2015-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
  • 2015-01-29
相关资源
最近更新 更多