Amazon web services AWS VPC识别专用子网和公用子网

Amazon web services AWS VPC识别专用子网和公用子网,amazon-web-services,amazon-emr,amazon-vpc,subnet,Amazon Web Services,Amazon Emr,Amazon Vpc,Subnet,我在AWS帐户中有一个专有网络,有5个子网与该专有网络关联。子网有两种类型-公共和私有。如何识别哪个子网是公共的,哪个子网是私有的?每个子网都有CIDR 10.249。?。?射程 “基本上,当我在该子网中启动一个包含EC2子网ID列表的EMR时,”它说 ***子网配置无效:提供的子网列表包含公用子网和专用子网。只允许一种类型的子网 如何识别此错误。问题是如何识别公共子网和私有子网,答案在于AWS中专有网络的子网是“公共”还是“私有”的含义 公共子网有一个默认的路由到;专用子网不支持 因此,要确

我在AWS帐户中有一个专有网络,有5个子网与该专有网络关联。子网有两种类型-公共和私有。如何识别哪个子网是公共的,哪个子网是私有的?每个子网都有CIDR 10.249。?。?射程

“基本上,当我在该子网中启动一个包含EC2子网ID列表的EMR时,”它说 ***子网配置无效:提供的子网列表包含公用子网和专用子网。只允许一种类型的子网



如何识别此错误。

问题是如何识别公共子网和私有子网,答案在于AWS中专有网络的子网是“公共”还是“私有”的含义

公共子网有一个默认的路由到;专用子网不支持

因此,要确定给定子网是公用的还是专用的,需要描述与该子网关联的路由表。这将告诉您路由,您可以测试网关ID为igw-XXXXXXXXXXXXXXXXXX的
0.0.0.0/0
路由(与
local
相反)

通过查看子网的路由表,可以在AWS VPC控制台中判断子网是否为公共子网,例如:

您还可以使用awscli对给定的子网ID执行以下操作:

aws ec2 describe-route-tables \
    --filter Name=association.subnet-id,Values=subnet-0a123fc414ad5b999 \
    --query "RouteTables[].Routes[]"
输出如下所示:

[
    {
        "DestinationCidrBlock": "10.0.0.0/16",
        "GatewayId": "local",
        "Origin": "CreateRouteTable",
        "State": "active"
    },
    {
        "DestinationCidrBlock": "0.0.0.0/0",
        "GatewayId": "igw-0fca21fadaa22a1b2",
        "Origin": "CreateRoute",
        "State": "active"
    }
]

在这里,您可以看到目标路由为
0.0.0.0/0
,目标为Internet网关(其网关ID为
igw-XXXXXXXXXXXXXX
)。这确认您正在查看一个公共子网。

最好的解决方案是只指定一个子网,这样您就不会产生交叉数据费用

如果不查看公用子网和专用子网的路由表,就无法确定它们的身份:公用子网将路由到Internet网关,而专用子网则不会。如果你是通过某个程序创建集群,那么这可能是一个合理的检查,但我不会去那里

最好的替代方法是在创建子网时给它起一个名称:对于可用性区域B(us-east-1b、us-west-1b等)中的私有子网,类似于“Private B”。如果您是通过控制台启动集群,那么该名称应该显示在可用子网列表中(我已经多年没有手动启动过EMR集群了,所以不确定)


或者,您可以为子网提供任意标记。如果您以编程方式访问它们,这可能最有用。

您可以检查子网中的NAT和IGW。IGW建议公共子网,而NAT建议私人子网。@ ValunCHANDAK,我认为您的意思是“检查子网的默认路由”,而不是“检查子网”。@ JARMOD对于丢失语义的道歉,请考虑接受答案,如果它解决了您的问题。并且在识别了私有子网之后,由于EMR不允许混合使用私有子网和公共子网,我从列表中删除了公共子网,只保留了私有子网,然后在子网-***中显示一条警告:未找到Amazon S3端点。建议EMR使用S3端点访问S3中的数据。这个问题的解决办法是什么。NatGateway与子网相关联。对于网关ID为igw-xxxxxxxx(与“本地”相反)的“0.0.0.0/0”路由,您如何实际执行此“测试”部分?@TheMIDLEST添加了一个使用awscli的示例。