翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS コマンドラインを使用して AWS Transit Gateway を作成する
このチュートリアルでは、AWS CLI を使用して Transit Gateway を作成し、2 つの VPC を接続する方法について説明します。Transit Gateway を作成し、両方の VPC をアタッチしてから、Transit Gateway と VPC 間の通信を有効化するために必要なルートを設定します。
前提条件
開始する前に、以下の準備が整っていることを確認します。
適切なアクセス許可でインストールされ設定された AWS CLI。AWS CLI がインストールされていない場合は、「AWS コマンドラインインターフェイスドキュメント」を参照してください。
VPC は、同一のまたは重複する CIDR を持つことはできません。詳細については、「Amazon VPC ユーザーガイド」の「VPC を作成する」を参照してください。
各 VPC で 1 つの EC2 インスタンス。VPC で EC2 インスタンスを起動する手順については、「Amazon EC2 ユーザーガイド」の「インスタンスの起動」を参照してください。
インスタンス間の ICMP トラフィックを許可するように設定されたセキュリティグループ。セキュリティグループ使用の詳細については、「Amazon VPC ユーザーガイド」の「セキュリティグループを使用して AWS リソースへのトラフィックを制御する」を参照してください。
Transit Gateway を操作するための適切な IAM アクセス許可。Transit Gateway IAM アクセス許可を確認するには、「AWS Transit Gateway ガイド」の「AWS Transit Gateway における ID およびアクセス管理」を参照してください。
ステップ
ステップ 1: トランジットゲートウェイを作成する
Transit Gateway を作成すると、AWS がデフォルトの Transit Gateway ルートテーブルを作成し、デフォルトの関連付けルートテーブルおよびデフォルトの伝達ルートテーブルとして使用します。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
次に、Transit Gateway が作成されたことがレスポンスに表示されます。レスポンスでは、返される 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 を含む新しい Transit Gateway に関する情報を返します。後続のステップで必要になるため、Transit Gateway ID (tgw-1234567890abcdef0) を書き留めます。
ステップ 2: Transit Gateway の可用性状態を確認する
Transit Gateway を作成すると、pending 状態になります。状態は自動的に保留中から使用可能に変わりますが、状態が変わるまで VPC をアタッチすることはできません。状態を確認するには、新しく作成された Transit Gateway ID とフィルターオプションを使用して describe-transit-gatweways コマンドを実行します。filters オプションでは、Name=state と Values=available のペアを使用します。その後、コマンドは検索して、Transit Gateway の状態が使用可能な状態かどうかを確認します。その場合は、レスポンスに "State": "available" が表示されます。他の状態にある場合は、まだ使用できません。コマンドを実行する前に数分待ちます。
describe-transit-gateways コマンドの詳細については、describe-transit-gateways を参照してください。
aws ec2 describe-transit-gateways \ --transit-gateway-ids tgw-1234567890abcdef0 \ --filters Name=state,Values=available
Transit Gateway の状態が 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: VPC をトランジットゲートウェイに接続します
Transit Gateway が使用可能になったら、create-transit-gateway-vpc-attachment を使用して各 VPC のアタッチメントを作成します。transit-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 アタッチメントが使用可能であることを確認する
Transit Gateway アタッチメントは初期の pending 状態で作成されます。状態が available に変わるまで、これらのアタッチメントをルートで使用することはできません。これは自動的に行われます。describe-transit-gateways コマンドと transit-gateway-id を使用して、State を確認します。describe-transit-gateways コマンドの詳細については、describe-transit-gateways を参照してください。
次のコマンドを実行して、ステータスを確認します。この例では、オプションの Name フィールドと Values フィルターフィールドがリクエストに渡されます。
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: Transit Gateway と VPC の間にルートを追加する
コマンド create-route と各 VPC ルートテーブルの transit-gateway-id を使用して、Transit Gateway 経由でトラフィックを他の VPC に転送するように各 VPC のルートテーブルにルートを設定します。次の例では、各ルートテーブルごとに 1 回ずつ、計 2 回コマンドを実行します。リクエストには、作成する各 VPC ルートの route-table-id、destination-cidr-block、transit-gateway-id が含まれます。
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 とは異なる route-table-id と destination-cidr-block を使用します。ただし、単一の Transit Gateway のみを使用しているため、同じ 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 ブロックを VPC の実際の CIDR ブロックに置き換えます。
ステップ 6: トランジットゲートウェイをテストする
Transit Gateway が正常に作成されたことを確認するには、ある VPC の EC2 インスタンスに接続し、その他の VPC のインスタンスに ping を送信してから、 ping コマンドを実行します。
-
SSH または EC2 Instance Connect を使用して最初の VPC の EC2 インスタンスに接続する
-
2 番目の VPC の EC2 インスタンスのプライベート IP アドレスに対する ping を実行します。
ping 10.2.0.50注記
10.2.0.50を 2 番目の VPC の EC2 インスタンスの実際のプライベート IP アドレスに置き換えます。
ping が成功すると、Transit Gateway が正しく設定され、VPC 間のトラフィックをルーティングします。
ステップ 7: Transit Gateway アタッチメントと Transit Gateway を削除する
不要になった Transit Gateway は削除できます。まず、すべてのアタッチメントを削除する必要があります。各アタッチメントの transit-gateway-attachment-id を使用して、delete-transit-gateway-vpc-attachment コマンドを実行します。コマンドを実行したら、delete-transit-gateway を使用して Transit Gateway を削除します。以下では、前のステップで作成した 2 つの VPC アタッチメントと 1 つの Transit Gateway を削除します。
重要
Transit Gateway アタッチメントをすべて削除すると、料金の発生が停止します。
-
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-abcdef12345678902 番目の 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" } } -
アタッチメントは、削除されるまで
deleting状態になります。削除すると、Transit Gateway を削除できます。transit-gateway-idと一緒にdelete-transit-gatewayコマンドを使用します。delete-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" } ] } }
結論
Transit Gateway を正常に作成し、2 つの VPC がアタッチされると、それらの間のルーティングを設定し、接続を確認できます。この簡単な例は、AWS Transit Gateway の基本的な機能を示しています。オンプレミスネットワークへの接続や高度なルーティング設定の実装など、より複雑なシナリオについては、「AWS Transit Gateway ガイド」を参照してください。