お使いのドメイン名を API Gateway グループにバインドすることで、クライアントはデフォルトのセカンドレベルドメインの代わりに、お使いのドメイン名を通じて API を呼び出すことができます。
概要
ドメイン名、API グループ、API
-
ドメイン名を API グループにバインドして、両者の間にマッピングを作成します。
-
API Gateway は、ドメイン名、HTTP メソッド、パスに基づいて、各受信 HTTP リクエストを正しい API グループと API にルーティングします。
API Gateway は各 API グループにデフォルトのパブリックセカンドレベルドメイン名を割り当てますが、このドメインを介した 1 日あたりの API 呼び出しには制限があります。中国本土リージョンでは 1 日あたり 1,000 回、その他のリージョンでは 1 日あたり 100 回です。また、レスポンスには "Content-Disposition: attachment; filename=ApiResponseForInnerDomain" ヘッダーが含まれます。これらの制限を解除するには、カスタムドメイン名を API グループにバインドします。
ドメイン名の ICP 登録
中国本土リージョンの API グループにドメイン名をバインドするには、ICP 番号を取得するか、ICP 登録で Alibaba Cloud をサービスプロバイダーとして追加する必要があります。中国本土以外のリージョンでは ICP 登録は不要です。
内部ドメイン名の場合、ICP 登録は不要です。
ドメイン名の所有権の検証
ドメイン名は、同じインスタンス上の同じベースパスを持つ別のグループにすでにバインドされておらず、既存のワイルドカードドメイン名と競合しない場合にのみ、API グループにバインドできます。次のいずれかの方法でドメインの所有権を検証します:
-
CNAME レコードを追加して、お使いのドメイン名をシステムが割り当てたセカンドレベルドメイン名にマッピングします。
-
TXT レコードを追加します。ホスト名には "API group ID.Domain name" の形式を使用し、レコード値には "apigateway-domain-verification=Public second-level domain name" の形式を使用します。
たとえば、API グループ ID が
b7eb2f79e64f4431b08bbb948ed2567e、パブリックセカンドレベルドメイン名がb7eb2f79e64f4431b08bbb948ed2567e-cn-hangzhou.alicloudapi.com、バインドされるドメインがyoudomain.comまたは*.yourdomainの場合、ホスト名 (RR) をb7eb2f79e64f4431b08bbb948ed2567e.yourdomain.com、レコード値をapigateway-domain-verification=b7eb2f79e64f4431b08bbb948ed2567e-cn-hangzhou.alicloudapi.comとして TXT レコードを追加します。
-
内部ドメイン名は所有権の検証を必要としません。
-
CNAME レコードを追加せずにドメイン名をバインドした場合、そのドメインへのクライアントリクエストは API Gateway に到達できません。
-
同じドメイン名を複数の API グループにバインドするには:
-
同じインスタンス:API グループはそれぞれ異なるベースパス (各 300 バイトまで) を持つ必要があります。
-
異なるインスタンス:クライアントは DNS 設定でターゲットインスタンスを指定する必要があります。
-
手順
「1. 単一ドメイン名のバインド」または「2. ワイルドカードドメイン名のバインド」に従って、パブリックドメイン名または内部ドメイン名をバインドします。主な手順は次のとおりです:
-
ドメイン名の名前解決:CNAME レコードまたは TXT レコードを追加して、お使いのドメイン名を API グループのセカンドレベルドメイン名にマッピングします。ドメイン名の名前解決
-
パブリックドメイン名の名前解決:パブリックドメイン名を API グループのパブリックセカンドレベルドメイン名にマッピングします。パブリックドメイン名の名前解決
-
内部ドメイン名の名前解決:内部ドメイン名を API グループの内部セカンドレベルドメイン名にマッピングします。内部ドメイン名の名前解決
-
-
ドメインバインディング:[Group Details] ページで、お使いのドメイン名を API グループにバインドします。ドメインバインディング
-
任意:複数の HTTPS ドメイン名が API グループにバインドされている場合は、デフォルトのドメイン名を設定します。API グループのデフォルトドメイン名を設定する
1. 単一ドメイン名のバインド
ドメイン名の名前解決
パブリックドメイン名の名前解決
-
API Gateway コンソールにログインします。 左側のナビゲーションペインで、[API の管理] > [API グループ] を選択し、リージョンを選択します。
-
[API グループ] ページで、対象の API グループをクリックします。[基本情報] セクションで、パブリックセカンドレベルドメイン名を探します。
-
DNS コンソールにログインします。[パブリック DNS] > [権威 DNS 解決] を選択します。[権威ドメイン名] タブをクリックし、次にドメイン名をクリックして [DNS 設定] タブを開きます。
-
[DNS 設定] タブで、[DNS レコードの追加] をクリックします。[レコードタイプ] を CNAME に、[ホスト名] をドメイン名のプレフィックスに、[レコード値] をパブリックセカンドレベルドメイン名に設定します。[OK] をクリックします。
内部ドメイン名の名前解決
-
API Gateway コンソールにログインします。左側のナビゲーションペインで、[API の管理] > [API グループ] を選択し、リージョンを選択します。
-
[API グループ] ページで、対象の API グループをクリックします。 [基本情報] セクションで、内部 VPC ドメイン名を探します。
-
DNS コンソールにログインします。 [プライベート DNS (PrivateZone)] をクリックします。 [プライベート DNS (PrivateZone)] ページの右上隅にある [設定モード] をクリックします。 [ユーザー定義ゾーン] タブで、[ゾーンの追加] をクリックします。
-
[ビルトイン権威ゾーンの追加] パネルで、[ビルトイン権威ゾーン] と [Alibaba Cloud VPC] を指定し、[OK] をクリックします。
[Domain Type] には、[Built-in Authoritative Acceleration Zone] を選択します。これは、名前解決のレイテンシーを最小限に抑えるために推奨されます。
説明[組み込み権威ゾーン] には、API グループにバインドされているカスタム (内部) ドメイン名を入力します。このドメイン名は、VPC 内の [プライベート DNS (PrivateZone)] のみに使用されます。
-
ゾーン名をクリックして[リソースレコード設定]タブを開きます。[レコードの追加]をクリックします。[レコードの追加]パネルで、[レコードタイプ]を CNAME に、[ホスト名]をドメイン名のプレフィックスに、[レコード値]を内部 VPC ドメイン名に設定します。[OK] をクリックします。
-
関連付けられた VPC 内の ECS インスタンスでは、プライベートゾーンレコードがパブリック DNS レコードを上書きします。内部ドメイン名は、プライベートゾーンレコードに基づいて名前解決されます。
-
パブリック DNS レコードは VPC 内では影響を受けません。プライベートゾーンレコードを追加すると、空の権威ゾーンがパブリック DNS レコードを上書きして名前解決エラーが発生するのを防ぐことができます。詳細については、「Alibaba Cloud DNS PrivateZone の有効化」をご参照ください。
ドメインバインディング
-
API Gateway コンソールにログオンします。左側のナビゲーションペインで、[API の管理] > [API グループ] を選択し、リージョンを選択します。
-
[API グループ] ページで、対象の API グループをクリックして [グループ詳細] ページを開き、[独立ドメイン] セクションで [ドメイン名のバインド] をクリックします。
-
[ドメイン名のバインド] ダイアログボックスで、次のパラメーターを設定し、[確認] をクリックします。
パラメーター
説明
ドメイン名
API グループにバインドするドメイン名。
環境
ドメイン名の環境。有効値:
-
Test:テスト環境の API のみを呼び出します。
-
Pre:ステージング環境の API のみを呼び出します。
-
Production:本番環境の API のみを呼び出します。
-
Default (X-Ca-Stage):任意の環境の API を呼び出します。X-Ca-Stage ヘッダーを追加して、ターゲット環境を指定します。
ネットワークタイプ
インターネット:インターネット経由でのみ API を呼び出します。内部ネットワーク:内部ネットワーク経由でのみ API を呼び出します。
-
-
内部ドメイン名は所有権の検証を必要としません。ただし、ドメイン名が同じインスタンス上の別の API グループにバインドされているドメイン名と競合する場合、バインドは失敗します。
-
バインド後にネットワークタイプを変更することはできません。修正するには、ドメイン名を削除して再バインドしてください。
ドメインバインディングに関する FAQ
ドメインバインディングが失敗するのはなぜですか?
-
ドメイン名が同じインスタンス上の別の API グループにすでにバインドされているか、ワイルドカードドメイン名が単一ドメイン名と競合しています。まず、競合するドメイン名のバインドを解除してください。
-
ドメイン名が別のユーザーが所有する API グループにバインドされているか、ワイルドカードドメイン名の競合が存在します。バインドする前に、ドメイン名の所有権の検証を完了してください。
API 呼び出しの検証
バインド後、ドメイン名を使用して API を呼び出します。curl リクエストの例:
curl http://yourdomain.com/apipath -i
HTTP/1.1 200 OK
Date: Mon, 23 Mar 2020 08:40:01 GMT
Connection: keep-alive
Keep-Alive: timeout=25
Server: Jetty(7.2.2.v20101205)
X-Ca-Request-Id: E2B8CBAB-D6EF-4576-838F-44DDC1A6B20D
内部ドメイン名がバインドされている場合は、関連付けられた VPC 内から API を呼び出します。
2. ワイルドカードドメイン名のバインド
ワイルドカードドメイン名を API グループにバインドできます。ワイルドカードドメイン名をパブリックセカンドレベルドメイン名に名前解決し、API Gateway コンソールでバインドします。バインド後、ワイルドカードドメイン名を使用してグループ内の API を呼び出します。
ワイルドカードドメイン名のバインド
手順は「1. 単一ドメイン名のバインド」と同様です。たとえば、abc.com のすべてのサブドメイン (1.abc.com や 2.abc.com など) を API Gateway にルーティングするには、次のようにします:
-
DNS コンソールで、*.abc.com をパブリックセカンドレベルドメイン名にマッピングする CNAME レコードを作成します。
-
API Gateway コンソールの [Group Details] ページで、*.abc.com を API グループにバインドします。

VPC ベースのインスタンスのみがワイルドカードドメイン名をサポートします。バインド後、クライアントは 1.abc.com や 2.abc.com などの任意のサブドメインを通じて API を呼び出すことができます。たとえば、匿名の GET 呼び出しをサポートする API には、任意の *.abc.com サブドメインを通じてもアクセスできます。
注意点
-
バインドする前に、ワイルドカードドメイン名の所有権を検証してください。ドメイン名の所有権の検証
-
バインド後、[Group Details] ページでワイルドカードドメイン名テンプレートを設定して、ワイルドカードドメイン経由での API 呼び出しを有効にします。
[操作] 列の [Edit Wildcard Domain Name Template] をクリックします。{groupId}.api.foo.com や {userId}.user.api.foo.com などの 1 つ以上の照合テンプレートを、Enter キー、カンマ、またはセミコロンで区切って入力します。[OK] をクリックします。
テンプレート内の可変フィールドは、パラメーターとしてバックエンドサービスに渡されます。
API グループのデフォルトドメイン名の設定
ドメイン名に HTTPS 証明書をアップロードできます。複数の HTTPS ドメイン名が 1 つの API グループにバインドされている場合は、いずれか 1 つをデフォルトとして設定します。SNI をサポートしないクライアントが SSL ハンドシェイクを開始すると、API Gateway はデフォルトのドメイン証明書を返します。それ以外の場合は、ランダムな証明書が返されます。この機能は、専有インスタンスでのみ利用可能です。共有インスタンスはデフォルト証明書をサポートしていないため、SNI 非対応のクライアントで証明書エラーが発生する可能性があります。
専有インスタンスで、複数の API グループにデフォルトドメイン名が設定されている場合、最初の API グループのデフォルトドメイン名のみがロードされます。