我在AWS账户中有一个VPC,并且有5个子网与该VPC相关联。子网有两种类型 - 公共和私有。如何识别哪个子网是公共的,哪个是私有的?每个子网都有CIDR 10.249。?。?范围。
基本上,当我在该子网中使用ec2SubnetIds列表启动EMR时,它说 ***子网配置无效:提供的子网列表包含公有子网和私有子网。只允许一种类型的子网。
如何重现此错误。
答案 0 :(得分:1)
问题是如何识别公共子网与私有子网,答案在于AWS中VPC的子网是公共子网的含义。与私人'。
公共子网具有到Internet Gateway的默认路由;私有子网没有。
因此,要确定给定子网是公共还是私有,您需要描述与该子网关联的路由表。这将告诉你路线,你可以测试" 0.0.0.0/0"网关ID为igw-xxxxxxxx的路由(而不是"本地")。
答案 1 :(得分:1)
最佳解决方案是仅指定一个子网,这样您就不会产生跨AZ数据费用。
在没有查看路由表的情况下,没有明确的方法来识别公共和私有子网:公共子网将路由到Internet网关,而私有子网则不会。如果您通过某个程序创建群集,那么这可能是一个合理的检查,但我不会去那里。
最好的选择是在创建子网时给子网命名:类似于&#34;私有B&#34;对于可用区B中的私有子网(us-east-1b,us-west-1b,无论如何)。如果您通过控制台启动群集,该名称应显示在可用子网列表中(我多年未手动启动EMR群集,因此不确定)。< / p>
或者,您可以为子网提供任意标记。如果您以编程方式访问它们,这可能是最有用的。