

# API Gateway でのパブリック REST API のカスタムドメイン名
<a name="how-to-custom-domains"></a>

*カスタムドメイン名*は、API ユーザーに提供できる、よりシンプルで直感的な URL です。

API のデプロイ後、お客様 (およびその顧客) は、以下の形式のデフォルトのベース URL を使用して API を呼び出すことができます。

```
https://{{api-id}}.execute-api.{{region}}.amazonaws.com/{{stage}}
```

{{api-id}} は API Gateway が生成します。{{region}} は AWS リージョンであり、{{stage}} は API のデプロイ時にユーザーが指定します。

URL のホスト名の部分 (`{{api-id}}.execute-api.{{region}}.amazonaws.com`) は、API エンドポイントを参照します。デフォルトの API エンドポイント名は、ランダムに生成され、再呼び出しが難しく、ユーザーフレンドリではありません。

カスタムドメイン名を使用すると、API のホスト名を設定し、代替パスを API にマッピングするための基本パス (`myservice` など) を選択できます。たとえば、API のよりわかりやすい ベース URL は以下のようになります。

```
https://api.example.com/myservice
```

**注記**  
プライベート API のカスタムドメイン名の詳細については、「[API Gateway でのプライベート API のカスタムドメイン名](apigateway-private-custom-domains.md)」を参照してください。

## 考慮事項
<a name="custom-domain-considerations"></a>

以下の考慮事項は、カスタムドメイン名の使用に影響する可能性があります。
+ API のデフォルトのエンドポイントを無効にすることができます。クライアントは引き続きデフォルトのエンドポイントに接続できますが、`403 Forbidden` ステータスコードを受け取ります。
+ リージョン別カスタムドメイン名は、REST API や HTTP API に関連付けることができます。[API Gateway バージョン 2 の API](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/api-reference.html) を使用すると、REST API のリージョン別カスタムドメイン名を作成および管理できます。
+ カスタムドメイン名は、すべての AWS アカウントにおいてリージョン内で一意である必要があります。
+ カスタムドメイン名をエッジ最適化エンドポイントとリージョンエンドポイントの間で移行することはできますが、パブリックカスタムドメイン名をプライベートカスタムドメイン名に移行することはできません。
+ API エンドポイントにマッピングするために DNS プロバイダーのリソースレコードを作成または更新する必要があります。このマッピングを行わないと、カスタムドメイン名宛ての API リクエストが API Gateway に届きません。
+ ワイルドカード証明書を使用すると、デフォルトのクォータを超えることなく、ほぼ無数のドメイン名をサポートできます。詳細については、「[ワイルドカードカスタムドメイン名](#wildcard-custom-domain-names)」を参照してください。
+ カスタムドメイン名のセキュリティポリシーを選択できます。詳細については、「[API Gateway でカスタムドメインのセキュリティポリシーを選択する](apigateway-custom-domain-tls-version.md)」を参照してください。
+ 複数のレベルで API マッピングを設定するには、リージョン別カスタムドメイン名と TLS 1.2 セキュリティポリシーを使用する必要があります。

## カスタムドメイン名の前提条件
<a name="how-to-custom-domains-prerequisites"></a>

パブリックまたはプライベートカスタムドメイン名を作成するには、次のような前提条件があります。プライベート API のカスタムドメイン名の詳細については、「[API Gateway でのプライベート API のカスタムドメイン名](apigateway-private-custom-domains.md)」を参照してください。

### ドメイン名を登録する
<a name="custom-domain-names-register"></a>

API のカスタムドメイン名を設定するには、登録されたインターネットドメイン名が必要です。インターネットドメインを登録するには、[Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/) を使用するか、任意のサードパーティのドメインレジストラを使用できます。カスタムドメイン名は、登録したインターネットドメインのサブドメイン名またはルートドメイン名 ("Zone Apex" とも呼ばれます) にすることができます。

ドメイン名は [RFC 1035](https://tools.ietf.org/html/rfc1035#section-2.3.4) 仕様に準拠している必要があり、ラベルあたり最大 63オクテット、合計 255 オクテットを含めることができます。

### カスタムドメイン名の証明書を指定する
<a name="custom-domain-names-certificates"></a>

API のカスタムドメイン名を設定する前に、ACM で SSL/TLS 証明書を準備する必要があります。カスタムドメイン名を作成する AWS リージョンで ACM を使用できない場合は、そのリージョンの API Gateway に証明書をインポートする必要があります。

SSL/TLS 証明書をインポートするには、カスタムドメイン名の PEM 形式の SSL/TLS 認証本文、そのプライベートキー、およびカスタムドメイン名の証明書チェーンを提供する必要があります。

ACM に保存された各証明書は ARN によって識別されます。ACM 発行の証明書により、プライベートキーなど証明書の機密の詳細が漏れる心配はありません。AWS で管理された証明書をドメイン名で使用するには、その ARN を単に参照します。

アプリケーションで証明書ピンニング (SSL ピンニングとも呼ばれる) を使用して ACM 証明書を固定すると、AWS が証明書を更新した後にアプリケーションがドメインに接続できないことがあります。詳細については、「*AWS Certificate Manager ユーザーガイド*」の「[証明書のピンニングの問題](https://docs.aws.amazon.com/acm/latest/userguide/troubleshooting-pinning.html)」を参照してください。

## ワイルドカードカスタムドメイン名
<a name="wildcard-custom-domain-names"></a>

ワイルドカードカスタムドメイン名を使用すると、[デフォルトのクォータ](limits.md)を超えずにほぼ無数のドメイン名をサポートできます。たとえば、各お客様に個別のドメイン名を付けることができます `{{customername}}.example.com`。

ワイルドカードカスタムドメイン名を制作するためには、ルートドメインの可能なすべてのサブドメインを表すカスタムドメインの最初のサブドメインとして、ワイルドカード (`*`) を指定します。

たとえば、ワイルドカードカスタムドメイン名として `*.example.com` を使用すると、`a.example.com`、`b.example.com`、`c.example.com` などのサブドメインが生成されます。ワイルドカードカスタムドメイン名を作成すると、そのすべてのサブドメインはワイルドカードドメイン名のルーティングモードによってルーティングされます。サブドメインを異なる API にルーティングするには、次のいずれかを実行します。
+ ルーティングルールを使用し、`Host` ヘッダーを使用して `*.example.com` への受信リクエストを異なるターゲット REST API にルーティングします。詳細については、「[例 4: ワイルドカードドメイン名のルーティングルール](rest-api-routing-rules-examples.md#rest-api-routing-rules-examples-rule-for-wildcard-domains)」を参照してください。
+ 異なるエンドポイントにルーティングするサブドメインのドメイン名を作成します。1 つの AWS アカウントで、`*.example.com` と `a.example.com` の両方を持つことができます。

コンテキスト変数 `$context.domainName` と `$context.domainPrefix` コンテキスト変数を使用して、クライアントが API を呼び出すために使用したドメイン名を判断できます。コンテキスト変数の詳細については、「[API Gateway のデータ変換の変数](api-gateway-mapping-template-reference.md)」を参照してください。

ワイルドカードカスタムドメイン名を作成するには、DNS または E メール検証方法を使用して検証された証明書を ACM から発行してもらう必要があります。

**注記**  
別の AWS アカウントで作成済みのカスタムドメイン名と競合するようなワイルドカードカスタムドメイン名を作成することはできません。たとえば、アカウント A で `a.example.com` が作成済みである場合、アカウント B はワイルドカードカスタムドメイン名として `*.example.com` を作成できません。  
アカウント A とアカウント B の所有者が同じである場合は、[AWS サポートセンター](https://console.aws.amazon.com/support/home#/)に連絡して例外をリクエストできます。

## カスタムドメイン名に関する次のステップ
<a name="how-to-custom-domains-next-steps"></a>

カスタムドメイン名に関する次のステップは、以下のとおりです。

**次のステップ**
+ SSL/TLS 証明書を設定する方法については、「[AWS Certificate Manager で証明書を準備する](how-to-specify-certificate-for-custom-domain-name.md)」を参照してください。
+ リージョン別カスタムドメイン名の作成方法については、「[API Gateway でリージョン別カスタムドメイン名を設定する](apigateway-regional-api-custom-domain-create.md)」を参照してください。
+ エッジ最適化カスタムドメイン名を作成する方法については、「[API Gateway でエッジ最適化カスタムドメイン名を設定する](how-to-edge-optimized-custom-domain-name.md)」を参照してください。
+ リージョン別カスタムドメイン名とエッジ最適化カスタムドメイン名の間での移行方法については、「[API Gateway でカスタムドメイン名を別の API エンドポイントタイプに移行する](apigateway-regional-api-custom-domain-migrate.md)」を参照してください。
+ API ステージをカスタムドメイン名に接続する方法については、「[API Gateway のカスタムドメイン名を使用して API にトラフィックを送信します。](rest-api-routing-mode.md)」を参照してください。
+ カスタムドメイン名のセキュリティポリシーを選択する方法については、「[API Gateway でカスタムドメインのセキュリティポリシーを選択する](apigateway-custom-domain-tls-version.md)」を参照してください。
+ カスタムドメイン名のデフォルトエンドポイントを無効にする方法については、「[REST API のデフォルトのエンドポイントを無効にする](rest-api-disable-default-endpoint.md)」を参照してください。
+ Route 53 のヘルスチェックを使用して API Gateway API からの DNS フェイルオーバーを制御する方法については、「[API Gateway API の DNS フェイルオーバーのカスタムヘルスチェックの設定](dns-failover.md)」を参照してください。

カスタムドメイン名を初めて作成する場合は、「[AWS Certificate Manager で証明書を準備する](how-to-specify-certificate-for-custom-domain-name.md)」から始めて、証明書を指定し、次に「[API Gateway でリージョン別カスタムドメイン名を設定する](apigateway-regional-api-custom-domain-create.md)」に従ってリージョン別カスタムドメイン名を作成することをお勧めします。