チュートリアル: コマンドラインを使用して AWSAWS Transit Gateway を作成する - Amazon VPC

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: コマンドラインを使用して AWSAWS Transit Gateway を作成する

このチュートリアルでは、 を使用してトランジットゲートウェイ AWS CLI を作成し、2 つの VPCsを接続する方法について説明します。トランジットゲートウェイを作成し、両方の VPCsをアタッチしてから、トランジットゲートウェイと VPCs 間の通信を有効にするために必要なルートを設定します。

前提条件

開始する前に、以下を確認してください。

  • AWS CLI をインストールし、適切なアクセス許可で設定します。がインストールされていない場合は AWS CLI 、AWS 「 コマンドラインインターフェイスドキュメント」を参照してください。

  • VPCsは、同一または重複CIDRs を持つことはできません。詳細については、Amazon VPC ユーザーガイドの「VPC を作成する」を参照してください。

  • 各 VPC に 1 つの EC2 インスタンス。VPC で EC2 インスタンスを起動する手順については、Amazon EC2 ユーザーガイド」の「インスタンスの起動」を参照してください。

  • インスタンス間の ICMP トラフィックを許可するように設定されたセキュリティグループ。セキュリティグループを使用してトラフィックを制御する手順については、「Amazon VPC ユーザーガイド」の「セキュリティグループを使用して AWS リソースへのトラフィックを制御する」を参照してください。

  • トランジットゲートウェイを操作するための適切な IAM アクセス許可。トランジットゲートウェイの IAM アクセス許可を確認するには、「 AWS Transit Gateway ガイド」の「Amazon VPC Transit Gateway での Identity and Access Management」を参照してください。

ステップ 1: トランジットゲートウェイを作成する

トランジットゲートウェイを作成すると、 はデフォルトのトランジットゲートウェイルートテーブルAWS を作成し、それをデフォルトの関連付けルートテーブルとデフォルトの伝播ルートテーブルとして使用します。以下は、 us-west-2リージョンでのcreate-transit-gatewayリクエストの例です。リクエストで追加の が渡optionsされました。リクエストで渡すことができるオプションのリストなど、create-transit-gatewayコマンドの詳細については、「create-transit-gateway」を参照してください。

aws ec2 create-transit-gateway \ --description "My Transit Gateway" \ --region us-west-2

次に、トランジットゲートウェイが作成されたことがレスポンスに表示されます。レスポンスでは、返Optionsされる はすべてデフォルト値です。

{ "TransitGateway": { "TransitGatewayId": "tgw-1234567890abcdef0", "TransitGatewayArn": "arn:aws:ec2:us-west-2:123456789012:transit-gateway/tgw-1234567890abcdef0", "State": "pending", "OwnerId": "123456789012", "Description": "My Transit Gateway", "CreationTime": "2025-06-23T17:39:33+00:00", "Options": { "AmazonSideAsn": 64512, "AutoAcceptSharedAttachments": "disable", "DefaultRouteTableAssociation": "enable", "AssociationDefaultRouteTableId": "tgw-rtb-abcdef1234567890a", "DefaultRouteTablePropagation": "enable", "PropagationDefaultRouteTableId": "tgw-rtb-abcdef1234567890a", "VpnEcmpSupport": "enable", "DnsSupport": "enable", "SecurityGroupReferencingSupport": "disable", "MulticastSupport": "disable" } } }
注記

このコマンドは、ID を含む新しいトランジットゲートウェイに関する情報を返します。以降のステップで必要になるため、トランジットゲートウェイ ID (tgw-1234567890abcdef0) を書き留めます。

ステップ 2: Transit Gateway の可用性状態を確認する

トランジットゲートウェイを作成すると、 pending状態になります。状態は自動的に保留中から使用可能に変わりますが、状態が変わるまで VPCsをアタッチすることはできません。状態を確認するには、新しく作成された Transit Gateway ID とフィルターオプションを使用して describe-transit-gatweways コマンドを実行します。filters オプションでは、 Name=stateValues=availableペアを使用します。その後、 コマンドは を検索して、トランジットゲートウェイの状態が使用可能な状態かどうかを確認します。その場合は、レスポンスに が表示されます"State": "available"。他の状態にある場合は、まだ使用できません。コマンドを実行する前に数分待ちます。

describe-transit-gateways コマンドの詳細については、describe-transit-gateways」を参照してください。

aws ec2 describe-transit-gateways \ --transit-gateway-ids tgw-1234567890abcdef0 \ --filters Name=state,Values=available

トランジットゲートウェイの状態が から pending に変わるまで待ってavailableから続行します。次のレスポンスでは、 Stateが に変更されましたavailable

{ "TransitGateways": [ { "TransitGatewayId": "tgw-1234567890abcdef0", "TransitGatewayArn": "arn:aws:ec2:us-west-2:123456789012:transit-gateway/tgw-1234567890abcdef0", "State": "available", "OwnerId": "123456789012", "Description": "My Transit Gateway", "CreationTime": "2022-04-20T19:58:25+00:00", "Options": { "AmazonSideAsn": 64512, "AutoAcceptSharedAttachments": "disable", "DefaultRouteTableAssociation": "enable", "AssociationDefaultRouteTableId": "tgw-rtb-abcdef1234567890a", "DefaultRouteTablePropagation": "enable", "PropagationDefaultRouteTableId": "tgw-rtb-abcdef1234567890a", "VpnEcmpSupport": "enable", "DnsSupport": "enable", "SecurityGroupReferencingSupport": "disable", "MulticastSupport": "disable" }, "Tags": [ { "Key": "Name", "Value": "example-transit-gateway" } ] } ] }

ステップ 3: VPCsをトランジットゲートウェイにアタッチする

トランジットゲートウェイが使用可能になったら、 を使用して各 VPC のアタッチメントを作成しますcreate-transit-gateway-vpc-attachmenttransit-gateway-id、、 vpc-idを含める必要がありますsubnet-ids

create-transit-vpc attachment コマンドの詳細については、create-transit-gateway-vpc-attachment」を参照してください。

次の例では、コマンドは VPC ごとに 1 回、2 回実行されます。

最初の VPC では、最初の vpc_idと を使用して以下を実行しますsubnet-ids

aws ec2 create-transit-gateway-vpc-attachment \ --transit-gateway-id tgw-1234567890abcdef0 \ --vpc-id vpc-1234567890abcdef0 \ --subnet-ids subnet-1234567890abcdef0

レスポンスには、成功した添付ファイルが表示されます。アタッチメントは pending状態で作成されます。この状態は自動的に 状態に変更されるため、このavailable状態を変更する必要はありません。この処理には数分かかることがあります。

{ "TransitGatewayVpcAttachment": { "TransitGatewayAttachmentId": "tgw-attach-1234567890abcdef0", "TransitGatewayId": "tgw-1234567890abcdef0", "VpcId": "vpc-1234567890abcdef0", "VpcOwnerId": "123456789012", "State": "pending", "SubnetIds": [ "subnet-1234567890abcdef0", "subnet-abcdef1234567890" ], "CreationTime": "2025-06-23T18:35:11+00:00", "Options": { "DnsSupport": "enable", "SecurityGroupReferencingSupport": "enable", "Ipv6Support": "disable", "ApplianceModeSupport": "disable" } } }

2 番目の VPC では、2 番目vpc_idと を使用して上記と同じコマンドを実行しますsubnet-ids

aws ec2 create-transit-gateway-vpc-attachment \ --transit-gateway-id tgw-1234567890abcdef0 \ --vpc-id vpc-abcdef1234567890 \ --subnet-ids subnet-abcdef01234567890

このコマンドのレスポンスには、添付ファイルが成功したことも示され、その添付ファイルは現在 pending状態です。

{ { "TransitGatewayVpcAttachment": { "TransitGatewayAttachmentId": "tgw-attach-abcdef1234567890", "TransitGatewayId": "tgw-1234567890abcdef0", "VpcId": "vpc-abcdef1234567890", "VpcOwnerId": "123456789012", "State": "pending", "SubnetIds": [ "subnet-fedcba0987654321", "subnet-0987654321fedcba" ], "CreationTime": "2025-06-23T18:42:56+00:00", "Options": { "DnsSupport": "enable", "SecurityGroupReferencingSupport": "enable", "Ipv6Support": "disable", "ApplianceModeSupport": "disable" } } }

ステップ 4: Transit Gateway アタッチメントが使用可能であることを確認する

トランジットゲートウェイアタッチメントは初期状態で作成されますpending。状態が に変わるまで、これらのアタッチメントをルートで使用することはできませんavailable。これは自動的に行われます。コマンドdescribe-transit-gatewaysと を使用してtransit-gateway-id、 を確認しますStatedescribe-transit-gateways コマンドの詳細については、describe-transit-gateways」を参照してください。

次のコマンドを実行して、ステータスを確認します。この例では、オプションフィールドNameValuesフィルターフィールドがリクエストに渡されます。

aws ec2 describe-transit-gateway-vpc-attachments \ --filters Name=transit-gateway-id,Values=tgw-1234567890abcdef0

次のレスポンスは、両方のアタッチメントが available状態にあることを示しています。

{ "TransitGatewayVpcAttachments": [ { "TransitGatewayAttachmentId": "tgw-attach-1234567890abcdef0", "TransitGatewayId": "tgw-1234567890abcdef0", "VpcId": "vpc-1234567890abcdef0", "VpcOwnerId": "123456789012", "State": "available", "SubnetIds": [ "subnet-1234567890abcdef0", "subnet-abcdef1234567890" ], "CreationTime": "2025-06-23T18:35:11+00:00", "Options": { "DnsSupport": "enable", "SecurityGroupReferencingSupport": "enable", "Ipv6Support": "disable", "ApplianceModeSupport": "disable" }, "Tags": [] }, { "TransitGatewayAttachmentId": "tgw-attach-abcdef1234567890", "TransitGatewayId": "tgw-1234567890abcdef0", "VpcId": "vpc-abcdef1234567890", "VpcOwnerId": "123456789012", "State": "available", "SubnetIds": [ "subnet-fedcba0987654321", "subnet-0987654321fedcba" ], "CreationTime": "2025-06-23T18:42:56+00:00", "Options": { "DnsSupport": "enable", "SecurityGroupReferencingSupport": "enable", "Ipv6Support": "disable", "ApplianceModeSupport": "disable" }, "Tags": [] } ] }

ステップ 5: トランジットゲートウェイと VPCsの間にルートを追加する

コマンドcreate-routeと各 VPC ルートテーブルの を使用して、トランジットゲートウェイ経由でトラフィックを他の VPC に転送するように各 VPC のルートテーブルtransit-gateway-idにルートを設定します。次の例では、コマンドはルートテーブルごとに 1 回、2 回実行されます。リクエストにはroute-table-id、作成する各 VPC ルートtransit-gateway-iddestination-cidr-block、、 が含まれます。

create-route コマンドの詳細については、「create-route」を参照してください。

最初の VPC のルートテーブルで、次のコマンドを実行します。

aws ec2 create-route \ --route-table-id rtb-1234567890abcdef0 \ --destination-cidr-block 10.2.0.0/16 \ --transit-gateway-id tgw-1234567890abcdef0

2 番目の VPC のルートテーブルで、次のコマンドを実行します。このルートは、最初の VPC destination-cidr-blockとは異なる route-table-id と を使用します。ただし、単一のトランジットゲートウェイのみを使用しているため、同じtransit-gateway-idものが使用されます。

aws ec2 create-route \ --route-table-id rtb-abcdef1234567890 \ --destination-cidr-block 10.1.0.0/16 \ --transit-gateway-id tgw-1234567890abcdef0

レスポンスは、ルートが作成されたことを示す各ルートtrueに対して を返します。

{ "Return": true }
注記

送信先 CIDR ブロックを VPCs の実際の CIDR ブロックに置き換えます。

ステップ 6: トランジットゲートウェイをテストする

トランジットゲートウェイが正常に作成されたことを確認するには、ある VPC の EC2 インスタンスに接続し、別の VPC のインスタンスに ping を送信してから、 ping コマンドを実行します。

  1. SSH または EC2 Instance Connect を使用して最初の VPC の EC2 インスタンスに接続する

  2. 2 番目の VPC の EC2 インスタンスのプライベート IP アドレスへの Ping:

    ping 10.2.0.50
    注記

    を 2 番目の VPC の EC2 インスタンスの実際のプライベート IP アドレス10.2.0.50に置き換えます。

ping が成功すると、トランジットゲートウェイが正しく設定され、VPCs。

ステップ 7: Transit Gateway アタッチメントと Transit Gateway を削除する

トランジットゲートウェイが不要になった場合は、削除できます。まず、すべての添付ファイルを削除する必要があります。アタッチメントtransit-gateway-attachment-idごとに を使用して delete-transit-gateway-vpc-attachment コマンドを実行します。コマンドを実行したら、 delete-transit-gateway を使用してトランジットゲートウェイを削除します。以下では、前のステップで作成した 2 つの VPC アタッチメントと 1 つのトランジットゲートウェイを削除します。

重要

トランジットゲートウェイアタッチメントをすべて削除すると、料金が発生しなくなります。

  1. delete-transit-gateway-vpc-attachment コマンドを使用して VPC アタッチメントを削除します。delete-transit-gateway-vpc-attachment コマンドの詳細については、delete-transit-gateway-vpc-attachment」を参照してください。

    最初のアタッチメントで、次のコマンドを実行します。

    aws ec2 delete-transit-gateway-vpc-attachment \ --transit-gateway-attachment-id tgw-attach-1234567890abcdef0

    最初の VPC アタッチメントの削除レスポンスは、以下を返します。

    { "TransitGatewayVpcAttachment": { "TransitGatewayAttachmentId": "tgw-attach-1234567890abcdef0", "TransitGatewayId": "tgw-1234567890abcdef0", "VpcId": "vpc-abcdef1234567890", "VpcOwnerId": "123456789012", "State": "deleting", "CreationTime": "2025-06-23T18:42:56+00:00" } }

    2 番目のアタッチメントの delete-transit-gateway-vpc-attachment コマンドを実行します。

    aws ec2 delete-transit-gateway-vpc-attachment \ --transit-gateway-attachment-id tgw-attach-abcdef1234567890

    2 番目の VPC アタッチメントの削除レスポンスは、以下を返します。

    The response returns: { "TransitGatewayVpcAttachment": { "TransitGatewayAttachmentId": "tgw-attach-abcdef1234567890", "TransitGatewayId": "tgw-1234567890abcdef0", "VpcId": "vpc-abcdef1234567890", "VpcOwnerId": "123456789012", "State": "deleting", "CreationTime": "2025-06-23T18:42:56+00:00" } }
  2. 添付ファイルは、削除されるまで deleting状態になります。削除したら、トランジットゲートウェイを削除できます。コマンドを delete-transit-gatewayとともに使用しますtransit-gateway-iddelete-transit-gateway コマンドの詳細については、delete-transit-gateway」を参照してください。

    次の の例では、上記の最初のステップで作成した My Transit Gateway を削除します。

    aws ec2 delete-transit-gateway \ --transit-gateway-id tgw-1234567890abcdef0

    リクエストに対する応答を以下に示します。これには、削除された Transit Gateway ID と名前、および作成時に Transit Gateway に設定された元のオプションが含まれます。

    { "TransitGateway": { "TransitGatewayId": "tgw-1234567890abcdef0", "TransitGatewayArn": "arn:aws:ec2:us-west-2:123456789012:transit-gateway/tgw-1234567890abcdef0", "State": "deleting", "OwnerId": "123456789012", "Description": "My Transit Gateway", "CreationTime": "2025-06-23T17:39:33+00:00", "Options": { "AmazonSideAsn": 64512, "AutoAcceptSharedAttachments": "disable", "DefaultRouteTableAssociation": "enable", "AssociationDefaultRouteTableId": "tgw-rtb-abcdef1234567890a", "DefaultRouteTablePropagation": "enable", "PropagationDefaultRouteTableId": "tgw-rtb-abcdef1234567890a", "VpnEcmpSupport": "enable", "DnsSupport": "enable", "SecurityGroupReferencingSupport": "disable", "MulticastSupport": "disable" }, "Tags": [ { "Key": "Name", "Value": "example-transit-gateway" } ] } }

結論

トランジットゲートウェイが正常に作成され、2 つの VPCs がアタッチされ、それらの間のルーティングが設定され、接続が確認されました。この簡単な例は、Amazon VPC Transit Gateway の基本機能を示しています。オンプレミスネットワークへの接続やより高度なルーティング設定の実装など、より複雑なシナリオについては、「Amazon VPC Transit Gateways ユーザーガイド」を参照してください。