

# カスタムドメイン名のルーティングモードを設定する
<a name="set-routing-mode"></a>

API Gateway が API にトラフィックをルーティングするために使用するルーティングモードを選択できます。詳細については、「[API Gateway のカスタムドメイン名を使用して API にトラフィックを送信します。](rest-api-routing-mode.md)」を参照してください。このセクションでは、カスタムドメイン名のルーティングモードについて説明します。API にトラフィックをルーティングするには、カスタムドメイン名のルーティングモードを設定する必要があります。次のルーティングモードがサポートされています。
+ **ROUTING\$1RULE\$1THEN\$1API\$1MAPPING** – このモードを使用して、ルーティングルールと API マッピングの両方を使用してトラフィックを API に送信します。このモードでは、すべてのルーティングルールがすべての API マッピングよりも優先されます。このモードの例については、「[例 2: ルーティングルールと API マッピング](rest-api-routing-rules-examples.md#rest-api-routing-rules-examples-rule-and-mappings)」を参照してください。
+ **ROUTING\$1RULE\$1ONLY** – このモードを使用すると、ルーティングルールのみが API にトラフィックを送信できるようにします。カスタムドメイン名がこのモードを使用する場合、API マッピングを作成することはできませんが、[get-api-mappings](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/get-api-mappings.html) コマンドを使用して表示することはできます。API 発信者は、API マッピングを使用してこのドメイン名にアクセスすることはできません。
+ **API\$1MAPPING\$1ONLY** – このモードを使用すると、API マッピングのみが API にトラフィックを送信できるようにします。カスタムドメイン名がこのモードを使用する場合、ルーティングルールを作成することはできませんが、`list-routing-rules` コマンドを使用して表示できます。API 発信者は、ルーティングルールを使用してこのドメイン名にアクセスすることはできません。

  これは、既存のすべてのドメイン名と、作成する新しいドメイン名のデフォルトのルーティングモードです。

`apigateway` を使用してカスタムドメイン名を作成すると、`API_MAPPING_ONLY` は `BASE_PATH_MAPPING_ONLY` と呼ばれ、`ROUTING_RULE_THEN_API_MAPPING` は `ROUTING_RULE_THEN_BASE_PATH_MAPPING` と呼ばれます。この動作は AWS CLI、CloudFormation、または任意の SDK にのみ表示され、AWS マネジメントコンソールには表示されません。

次の手順は、既存のカスタムドメイン名のルーティングモードを変更する方法を示しています。カスタムドメイン名のルーティングモードを変更すると、API 発信者はサポートされていないルーティングモードを使用してドメイン名にアクセスできなくなります。

------
#### [ AWS マネジメントコンソール ]

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway) で API Gateway コンソールにサインインします。

1. メインのナビゲーションペインから [**Custom Domain Names (カスタムドメイン名)**] を選択します。

1. カスタムドメイン名を選択します。

1. **[ドメインの詳細]** については、**[編集]** を選択します。

1. **[ルーティングモード]** については、**[ROUTING\$1RULE\$1THEN\$1API\$1MAPPING]** を選択します。

1. **[保存]** を選択します。

ルーティングモードを `ROUTING_RULE_ONLY` または `API_MAPPING_ONLY` に変更すると、作成した API マッピングまたはルーティングルールがコンソールのドメイン名の詳細ページから削除されます。ルーティングルールまたは API マッピングをサポートするようにルーティングモードを変更すると、これらのリソースが返されます。

------
#### [ AWS CLI - apigatewayv2 ]

次の [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-domain-name.html) コマンドは、ルーティングモード `ROUTING_RULE_THEN_API_MAPPING` を使用するようにドメイン名を更新します。

```
aws apigatewayv2 update-domain-name \
  --domain-name 'api.example.com' \
  --routing-mode "ROUTING_RULE_THEN_API_MAPPING"
```

出力は次のようになります。

```
{
"ApiMappingSelectionExpression": "$request.basepath",
"DomainName": "api.example.com",
"DomainNameArn": "arn:aws:apigateway:us-west-2::/domainnames/api.example.com",
"DomainNameConfigurations": [
  {
      "ApiGatewayDomainName": "d-abcdefg.execute-api.us-west-2.amazonaws.com",
      "CertificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/abcdefg-123456-abcdefg",
      "DomainNameStatus": "AVAILABLE",
      "EndpointType": "REGIONAL",
      "HostedZoneId": "Z2OJLYMUO9EFXC",
      "SecurityPolicy": "TLS_1_2"
   }
 ],
"RoutingMode": "ROUTING_RULE_THEN_API_MAPPING",
"Tags": {}
}
```

------
#### [ AWS CLI - apigateway ]

次の [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html) コマンドは、ルーティングモード `ROUTING_RULE_THEN_BASE_PATH_MAPPING` を使用するようにプライベートカスタムドメイン名を更新します。

```
aws apigateway update-domain-name \
  --domain-name 'private.example.com' \
  --patch-operations "op='replace',path='/routingMode',value='ROUTING_RULE_THEN_BASE_PATH_MAPPING'"
```

出力は次のようになります。

```
{
"domainName": "private.example.com",
"domainNameId": "abcd1234",
"domainNameArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234",
"certificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/a1b2c3d4-5678-90ab-cdef",
"certificateUploadDate": "2024-09-10T10:31:20-07:00",
"endpointConfiguration": {
  "types": [
    "PRIVATE"
   ],
  "ipAddressType": "dualstack"
  },
"domainNameStatus": "AVAILABLE",
"securityPolicy": "TLS_1_2",
"policy": "...",
"routingMode" : "ROUTING_RULE_THEN_BASE_PATH_MAPPING"
}
```

------