【问题标题】:How to make RDS::DbInstance accessible from EC2::Instance?如何使 RDS::DbInstance 可以从 EC2::Instance 访问?
【发布时间】:2017-12-12 07:26:41
【问题描述】:

我目前正在使用 Cloud Formation 来部署我部署的堆栈,除其他外:

  • VPC
  • 创建的 VPC 内的子网
  • 创建的子网中的 EC2 实例
  • RDS Postgres 数据库

起初我无法连接到 DBInstance,因为它没有正确配置的 SecurityGroup。

当我尝试创建 SecurityGroup 时,部署失败,因为 DBInstance 和 SecurityGroup 是在不同的 VPC 上创建的。

但我在 Cloud Formation 上的任何 RDS 相关资源上都找不到属性来调整要在哪个 VPC 中创建我的数据库。环顾四周,我找到了创建 DBSubnetGroup 的替代方法。

但为了使用 DBSubnetGroup,我需要至少有两个子网(因为它需要覆盖至少 2 个可用区)。我希望避免在另一个 AZ 上创建一个空子网来完成这项工作。

还有更好的选择吗?让我的 EC2 实例仅使用 Cloud Formation 访问我的 DBInstance 的最简单方法是什么?

【问题讨论】:

    标签: amazon-rds amazon-cloudformation amazon-vpc


    【解决方案1】:

    如果您不想使用 DBSubnetGroup 方式,创建 RDS 实例的唯一可能性是使用默认 VPC。如果您不指定 DBSubnetGroup,您的 RDS 实例将在默认 VPC 中创建。

    现在您的 EC2 实例可以通过两种方式访问​​ RDS 实例。

    1. 让您的 RDS 实例可公开访问。确保您有严格的安全组配置以拒绝攻击的可能性。然后EC2实例应该能够访问数据库实例。

    2. 将可公开访问标记为false。将默认 VPC 与您使用 VPC 对等连接创建的 VPC 连接。我推荐这种方式,因为您的 RDS 实例不会公开访问,并且您可以完成工作。

    最重要的是,你提到了

    但为了使用 DBSubnetGroup,我需要至少有两个子网(因为它需要覆盖至少 2 个可用区)。我希望避免在另一个 AZ 上创建一个空子网来完成这项工作。

    RDS 不是这样工作的。当您在 RDS 模板中指定 MultiAZ = true 并具有 DBSubnetGroup 时,您的 DBInstance 的副本将在不同可用区可用的另一个子网中维护。当您的主节点出现故障时,此副本节点会启动并充当主节点。牢记这一点,我强烈建议您在创建 RDS 实例时使用 DBSubnetGroup。

    更多阅读可here

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      相关资源
      最近更新 更多