

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

# チュートリアル: AWS コマンドラインを使用して AWS Transit Gateway を作成する
<a name="tgw-getting-started-cli"></a>

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

## 前提条件
<a name="prerequisites"></a>

開始する前に、以下の準備が整っていることを確認します。
+ AWS CLI 適切なアクセス許可でインストールおよび設定されている。 AWS CLI がインストールされていない場合は、「AWS コマンドラインインターフェイスドキュメント」を参照してください。
+ VPC は、同一のまたは重複する CIDR を持つことはできません。詳細については、「Amazon VPC ユーザーガイド」の「[VPC を作成する](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html)」を参照してください。
+ 各 VPC で 1 つの EC2 インスタンス。VPC で EC2 インスタンスを起動する手順については、「Amazon EC2 ユーザーガイド」の「[インスタンスの起動](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance)」を参照してください。
+ インスタンス間の ICMP トラフィックを許可するように設定されたセキュリティグループ。セキュリティグループ使用の詳細については、「Amazon VPC ユーザーガイド」の「[セキュリティグループを使用して AWS リソースへのトラフィックを制御する](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)」を参照してください。
+ Transit Gateway を操作するための適切な IAM アクセス許可。Transit Gateway IAM アクセス許可を確認するには、「 *AWS Transit Gateway ガイド*」の[AWS 「Transit Gateway での Identity and Access Management](https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-authentication-access-control.html)」を参照してください。

**Topics**
+ [前提条件](#prerequisites)
+ [ステップ 1: トランジットゲートウェイを作成する](#create-transit-gateway)
+ [ステップ 2: Transit Gateway の可用性状態を確認する](#verify-state)
+ [ステップ 3: VPCsをトランジットゲートウェイにアタッチする](#attach-vpcs)
+ [ステップ 4: Transit Gateway アタッチメントが使用可能であることを確認する](#configure-routes)
+ [ステップ 5: Transit Gateway と VPC の間にルートを追加する](#create-routes)
+ [ステップ 6: トランジットゲートウェイをテストする](#test-connectivity)
+ [ステップ 7: Transit Gateway アタッチメントと Transit Gateway を削除する](#cleanup)
+ [結論](#conclusion)

## ステップ 1: トランジットゲートウェイを作成する
<a name="create-transit-gateway"></a>

トランジットゲートウェイを作成すると、 はデフォルトのトランジットゲートウェイルートテーブル AWS を作成し、それをデフォルトの関連付けルートテーブルとデフォルトの伝播ルートテーブルとして使用します。`us-west-2` リージョンで `create-transit-gateway` リクエストの例を次に示します。リクエストで追加の `options` が渡されました。リクエストで渡すことができるオプションのリストなど、`create-transit-gateway` コマンドの詳細については、[create-transit-gateway](https://docs.aws.amazon.com/cli/latest/reference/ec2/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 の可用性状態を確認する
<a name="verify-state"></a>

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](https://docs.aws.amazon.com/cli/latest/reference/ec2/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: VPCsをトランジットゲートウェイにアタッチする
<a name="attach-vpcs"></a>

Transit Gateway が使用可能になったら、`create-transit-gateway-vpc-attachment` を使用して各 VPC のアタッチメントを作成します。`transit-gateway-id`、`vpc-id`、`subnet-ids` を含める必要があります。

`create-transit-vpc attachment` コマンドの詳細については、[create-transit-gateway-vpc-attachment](https://docs.aws.amazon.com/cli/latest/reference/ec2/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 アタッチメントが使用可能であることを確認する
<a name="configure-routes"></a>

Transit Gateway アタッチメントは初期の `pending` 状態で作成されます。状態が `available` に変わるまで、これらのアタッチメントをルートで使用することはできません。これは自動的に行われます。`describe-transit-gateways` コマンドと `transit-gateway-id` を使用して、`State` を確認します。`describe-transit-gateways` コマンドの詳細については、[describe-transit-gateways](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route) を参照してください。

次のコマンドを実行して、ステータスを確認します。この例では、オプションの `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 の間にルートを追加する
<a name="create-routes"></a>

コマンド `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](https://docs.aws.amazon.com/cli/latest/reference/ec2/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: トランジットゲートウェイをテストする
<a name="test-connectivity"></a>

Transit Gateway が正常に作成されたことを確認するには、ある VPC の EC2 インスタンスに接続し、その他の VPC のインスタンスに ping を送信してから、 `ping` コマンドを実行します。

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

1. 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 を削除する
<a name="cleanup"></a>

不要になった Transit Gateway は削除できます。まず、すべてのアタッチメントを削除する必要があります。各アタッチメントの `transit-gateway-attachment-id` を使用して、`delete-transit-gateway-vpc-attachment` コマンドを実行します。コマンドを実行したら、`delete-transit-gateway` を使用して Transit Gateway を削除します。以下では、前のステップで作成した 2 つの VPC アタッチメントと 1 つの Transit Gateway を削除します。

**重要**  
Transit Gateway アタッチメントをすべて削除すると、料金の発生が停止します。

1. `delete-transit-gateway-vpc-attachment` コマンドを使用して VPC アタッチメントを削除します。`delete-transit-gateway-vpc-attachment` コマンドの詳細については、[delete-transit-gateway-vpc-attachment](https://docs.aws.amazon.com/cli/latest/reference/ec2/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"
       }
   }
   ```

1. アタッチメントは、削除されるまで `deleting` 状態になります。削除すると、Transit Gateway を削除できます。`transit-gateway-id` と一緒に `delete-transit-gateway` コマンドを使用します。`delete-transit-gateway` コマンドの詳細については、[delete-transit-gateway](https://docs.aws.amazon.com/cli/latest/reference/ec2/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"
               }
           ]
       }
   }
   ```

## 結論
<a name="conclusion"></a>

Transit Gateway を正常に作成し、2 つの VPC がアタッチされると、それらの間のルーティングを設定し、接続を確認できます。この簡単な例は、 AWS トランジットゲートウェイの基本機能を示しています。オンプレミスネットワークへの接続や高度なルーティング設定の実装など、より複雑なシナリオについては、「[AWS Transit Gateway ガイド](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html)」を参照してください。