【发布时间】:2020-04-12 10:48:32
【问题描述】:
所以我在 us-east-1 中有一个主 RDS,在 us-west-1 中有一个副本。两者都在各自区域的 VPC 内。我想让us-east-1 中的一个 EC2 实例连接到副本实例。
一个简单的解决方案是为RDS副本启用公共访问并将EC2的IP添加到其安全组中并且它可以工作。
但我不想允许静态 IP,而是希望允许访问我的 us-east-1 VPC 的整个 CIDR 范围,而且我不希望我的实例可以公开访问。
为此,我在两个区域之间建立了一个 VPC 对等连接,并在两个 VPC 的路由表中添加了条目,以将到彼此的 CIDR 范围的流量转发到对等连接。
EC2 实例的 CIRD 范围是 172.31.0.0/16,我已将其添加到 us-west-1 区域中的 RDS 副本的安全组中。但由于某种原因,我的 EC2 无法访问 RDS。
我还有什么遗漏吗?谢谢!
总结一下我的设置:
美国东部:
- VPC CIDR:
172.31.0.0/16 - 路由表条目:目标
10.0.0.0/16路由到us-west-1VPC 的对等连接。 - EC2 IP:
172.31.5.234
美国西部:
VPC CIDR:
10.0.0.0/16路由表条目:目标
172.31.0.0/16路由到us-east-1VPC 的对等连接。-
RDS:
- 可公开访问:是
- 安全组:允许来自
172.31.0.0/16的连接
【问题讨论】:
-
您可以通过将 EC2 的安全组设置为 RDS 安全组上的入站规则的源来执行此操作。这将通过安全组打开您的 RDS 和 EC2 之间的通信,无需 IP
-
为清楚起见,您将应用程序安全组的组 ID,例如:
sg-4e2fcf31添加到数据库 (RDS) 安全组的入站源。这是我在生产中使用的设置,应该可以满足您的要求。 -
即使VPC位于不同的区域,这是否有效?
-
@RyanCharmley 不,只是试过它说“无法更新您的安全组规则(未进行任何更改):安全组不存在”
-
是的,我认为如果您不允许公共连接,那么您的应用程序和数据库服务器需要存在于同一个 VPC 上。也有兴趣知道是否有其他方法..
标签: amazon-web-services amazon-rds vpc aws-security-group