AWS VPC はプライベートサブネットとパブリックサブネットを識別します 質問する

AWS VPC はプライベートサブネットとパブリックサブネットを識別します 質問する

AWS アカウントに VPC があり、その VPC に関連付けられたサブネットが 5 つあります。サブネットには、パブリックとプライベートの 2 種類があります。どのサブネットがパブリックで、どのサブネットがプライベートかを識別するにはどうすればよいでしょうか。各サブネットの CIDR 範囲は 10.249.?.? です。

基本的に、 ec2SubnetIds のリストを含むそのサブネットで EMR を起動すると、「***サブネット構成が無効です: 指定されたサブネット リストには、パブリック サブネットとプライベート サブネットの両方が含まれています。許可されるサブネットの種類は 1 つだけです。」というメッセージが表示されます。


このエラーを修正する方法。

ベストアンサー1

問題は、パブリックサブネットとプライベートサブネットをどのように識別するかであり、その答えは、AWS において VPC のサブネットが「パブリック」であるか「プライベート」であるかが何を意味するかにあります。

パブリックサブネットには、インターネットゲートウェイ; プライベートサブネットではそうではありません。

したがって、特定のサブネットがパブリックかプライベートかを判断するには、そのサブネットに関連付けられているルート テーブルを記述する必要があります。これによりルートがわかり、0.0.0.0/0ゲートウェイ ID がigw-xxxxxxxxxxxxxxxxx(ではなく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ここでは、インターネット ゲートウェイ (GatewayId は ) をターゲットとするの宛先ルートを確認できますigw-xxxxxxxxxxxxxxxxx。これにより、パブリック サブネットを参照していることが確認できます。

おすすめ記事