【问题标题】:Amazon RDS and VPC Endpoints ConnectivityAmazon RDS 和 VPC 终端节点连接
【发布时间】:2021-04-03 21:56:54
【问题描述】:

我有一个驻留在默认 VPC 中的 Amazon RDS Postgres 实例。
为了连接到它,我使用了在 ElasticBeanstalk 中运行的不同 EC2 实例(Java Spring Boot 和 NodeJs)。这些实例也驻留在默认 VPC 中。
这些 EC2 实例是否通过 Internet 连接/查询 RDS 实例,或者调用不会离开 AWS 网络?
如果他们离开 AWS 网络并且呼叫通过 Internet,创建 VPC 终端节点是正确的解决方案吗?或者我的整体理解是不正确的。
非常感谢您的帮助。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-elastic-beanstalk amazon-rds amazon-vpc


    【解决方案1】:

    这些 EC2 实例是否通过 Internet 连接/查询 RDS 实例,或者调用不会离开 AWS 网络?

    在 VPC 内使用时,RDS 终端节点的 DNS 将解析为 私有 IP 地址。因此,即使您使用公有子网或将您的 RDS 实例设置为公开可用,通信也是私有。但是,对于来自 AWS 外部的连接,如果数据库实例是公开可用的,则 RDS 端点将解析为公共 IP 地址。

    如果他们离开 AWS 网络并通过互联网进行呼叫,那么创建 VPC 终端节点是正确的解决方案吗?

    没有用于 RDS 客户端连接的 VPC 端点,仅用于管理操作(创建 db-instance、终止等)。相比之下,Aurora Serverless 具有带有相应 VPC 端点的 Data API。

    【讨论】:

    • 我的数据库实例可公开访问(出于某些管理目的)。但是根据您的说明,这意味着我不需要使用 VPC 端点,来自 EC2 实例的连接将解析为私有 IP 地址并且不会离开 VPC(即使我在应用程序配置/属性文件)。那是对的吗?非常感谢@Marcin
    • @AleksandarT 没错。如果要确保从实例查询时返回哪个 IP,以及从 aws 外部 dig 时返回什么,可以使用 dig <db-endpoint> 命令检查它。如果您的数据库是公开可用的,请确保将其安全组正确设置为仅您的外部 IP,而不是 0.0.0.0/0sg-of-the-instance,以免阻止来自您的实例的连接。为了最终的安全,最好将 rds 放在私有子网中并从外部使用 vpn。
    【解决方案2】:

    为了保护您的 DB-Instances 通信,您至少需要确保以下几点:

    • 在私有子网中定位您的 RD(路由表不包含到 Internet 网关的默认出站路由)。
    • RDS 安全组仅接受来自 PostgreSQL 的 TCP 端口(通常为 5432)上的实例安全组/组的入站流量。

    在这种情况下,Traffice 到 RDS 将在您的 vpc 中本地化,对于 vpc 端点,它可用于私下访问 RDS API 操作,这不是您的情况(您只需使用连接字符串将您的应用程序连接到数据库)

    【讨论】:

      猜你喜欢
      • 2020-10-11
      • 1970-01-01
      • 2014-02-01
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 2020-02-07
      • 2021-06-17
      • 2021-10-16
      相关资源
      最近更新 更多