我目前正在使用Cloud Formation部署我部署的堆栈,其中包括:
起初我无法连接到DBInstance,因为它没有正确配置的SecurityGroup。
当我尝试创建SecurityGroup时,部署失败,因为正在不同的VPC上创建DBInstance和SecurityGroup。
但我无法在Cloud Formation上的任何RDS相关资源上找到属性来调整将在哪个VPC中创建数据库。搜索,我找到了创建DBSubnetGroup的替代方法。
但是为了使用DBSubnetGroup,我需要至少有两个子网(因为它需要覆盖至少2个可用区)。我希望避免在另一个AZ上创建一个空子网,只是为了使其工作。
有更好的选择吗?什么是让我的EC2实例仅使用Cloud Formation访问我的DBInstance的最简单方法?
答案 0 :(得分:2)
如果您不想使用 DBSubnetGroup 方式,则创建RDS实例的唯一可能性是使用默认VPC。如果未指定DBSubnetGroup,则将在默认VPC中创建RDS实例。
现在,您的EC2实例有两种方式可以访问RDS实例。
让您的RDS实例可公开访问。确保您拥有严密的SecurityGroup配置以拒绝攻击的可能性。然后EC2实例应该能够访问数据库实例。
将公开标记为false
。将默认VPC与使用VPC对等连接创建的VPC连接。我推荐这种方式,因为您的RDS实例无法公开访问,您可以完成工作。
除此之外,你已经提到了
但是为了使用DBSubnetGroup,我需要至少有两个子网(因为它需要覆盖至少2个可用区)。我希望避免在另一个AZ上创建一个空子网,只是为了使其工作。
RDS不会这样做。当您指定MultiAZ = true
并拥有DBSubnetGroup
时,在您的RDS模板中,DBInstance的副本将保留在另一个可用于不同AZ的子网中。当主节点关闭时,此副本节点将启动并充当主节点。记住这一点,我强烈建议您在创建RDS实例时使用DBSubnetGroup。
更多阅读材料here
希望这会有所帮助。