すべてのプロダクト
Search
ドキュメントセンター

API Gateway:カスタムドメイン名を介してAPI呼び出しを行う

最終更新日:Dec 25, 2024

このトピックでは、API GatewayでホストされているAPIグループにドメイン名をバインドする方法について説明します。 このように、クライアントがドメイン名を介してAPIグループ内のAPIを呼び出すことを許可することで、外部サービスを提供できます。

概要

ドメイン名とAPIグループの関係とドメイン名とAPIの関係

  • ドメイン名とAPIグループの間のマッピングを作成するには、ドメイン名をAPI GatewayでホストされているAPIグループにバインドする必要があります。

  • API GatewayがクライアントからHTTPリクエストを受信すると、API Gatewayは、リクエスト内のドメイン名、HTTPメソッド、およびパスに基づいて、リクエストが転送されるAPIグループとAPIを識別します。

重要

デフォルトでは、API Gatewayは各APIグループにパブリックの第2レベルドメイン名を提供します。 クライアントが既定のパブリック第2レベルドメイン名を使用してAPIグループ内のAPIを呼び出す場合、1日のAPI呼び出しの数は制限されます。 制限は、中国 (香港) リージョンおよび中国本土以外のリージョンで1日あたり100回のAPI呼び出しです。制限は、中国本土内のリージョンで1日あたり1,000回のAPI呼び出しです。 API Gatewayによって提供されるパブリック第2レベルドメイン名を介してAPIを呼び出すために開始される各要求への応答は、ヘッダ内に「Content-Disposition: attachment; filename=ApiResponseForInnerDomain」情報を含む。 運用環境でAPIを公開する場合は、対応するAPIグループに別のドメイン名をバインドする必要があります。 この場合、毎日のAPI呼び出しの数は制限されません。

ドメイン名のICPファイリング

中国本土内のリージョンのAPIグループに別のドメイン名をバインドする場合は、インターネットコンテンツプロバイダー (ICP) 番号を申請するか、別のドメイン名のICP登録情報にサービスプロバイダーとしてAlibaba Cloudを追加する必要があります。 中国本土以外でホストされているドメイン名については、ICP申請は必要ありません。

説明

内部ドメイン名をAPIグループにバインドする場合、ICPファイリングは必要ありません。

ドメイン名の所有権の検証

ドメイン名は、同じインスタンスに属し、現在のAPIグループと同じベースパスを使用する別のAPIグループにバインドされていません。ドメイン名は、APIグループにバインドされている他のワイルドカードドメイン名と競合しません。 次のいずれかの方法を使用して、ドメイン名の所有権を確認できます。

  1. CNAMEレコードを追加して、ドメイン名をシステムによって割り当てられた第2レベルドメイン名にマッピングします。

  2. APIグループにバインドされているドメイン名のTXTレコードを追加します。 レコードの名前は「APIグループID. ドメイン名」形式で、レコード値は「apigateway-Domain-verification=Public second-level domain name」形式です。

    例:

    APIグループのIDはb7eb2f79e64f4431b08bbb948ed2567eです。 パブリックの第2レベルドメイン名がb7eb2f79e64f4431b08bbb948ed2567e-cn-hangzhou.alicloudapi.comです。 APIグループにバインドされているドメイン名は、youdomain.comなどの単一ドメイン名、または *.yourdomainなどのワイルドカードドメイン名です。 ホスト名 (RR) がb7eb2f79e64f4431b08bbb948ed2567e.yourdomain.comで、レコード値がドメイン名のapigateway-domain-verficatio n=b7eb2f79e64f4431b08bbb948ed2567e-cn-hangzhou.alicloudapi.comであるTXTレコードを追加する必要があります。

重要
  • APIグループにバインドされている内部ドメイン名の所有権を確認する必要はありません。

  • ドメイン名をAPIグループにバインドしても、ドメイン名のCNAMEレコードを追加しない場合、クライアントからドメイン名に送信されたリクエストはAPI Gatewayにルーティングできません。

  • ドメイン名を異なるAPIグループにバインドする場合は、次の項目に注意してください。

    • APIグループが同じインスタンスに存在する場合、それらのベースパスは異なる必要があります。 ベースパスの長さは最大300バイトです。

    • APIグループが異なるインスタンスに存在する場合、クライアントはAlibaba Cloud DNS (DNS) 設定で要求されたインスタンスを指定する必要があります。

手順

パブリックドメイン名または内部ドメイン名をAPI Gatewayにバインドするには、単一ドメイン名のバインドまたはワイルドカードドメイン名のバインドの手順を実行します。

  1. ドメイン名の解決: CNAMEレコードまたはTXTレコードを追加して、パブリックまたは内部ドメイン名を、APIグループによって提供されるパブリックまたは内部の第2レベルドメイン名にマップします。 詳細については、「ドメイン名解決」をご参照ください。

    • パブリックドメイン名の解決: DNSを使用して、パブリックドメイン名をAPI Gatewayグループのパブリック第2レベルドメイン名にマップできます。 詳細については、「パブリックドメイン名の解決」をご参照ください。

    • 内部ドメイン名の解決: DNSを使用して、内部ドメイン名をAPIグループの内部第2レベルドメイン名にマップします。 詳細については、「内部ドメイン名解決」をご参照ください。

  2. ドメイン名のバインド: API Gatewayコンソールの [グループの詳細] ページで、ドメイン名をAPIグループにバインドします。 詳細については、「ドメイン名のバインド」をご参照ください。

  3. 必要に応じて、 APIグループのデフォルトドメイン名を設定する: 複数のドメイン名がAPIグループにバインドされ、ドメイン名がHTTPSをサポートしている場合、デフォルトドメイン名を設定する必要があります。 詳細については、「APIグループのデフォルトドメイン名の設定」をご参照ください。

単一のドメイン名のバインド

ドメイン名解決

パブリックドメイン名解決

  1. API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの管理] > [APIグループ] を選択し、リージョンを選択します。

  2. [APIグループ] ページで、管理するAPIグループをクリックして詳細ページに移動します。 [基本情報] セクションで、APIグループのAPI Gatewayによって提供されるパブリックの第2レベルドメイン名を見つけます。

  3. DNSコンソールにログインします。 左側のナビゲーションウィンドウで、[パブリックDNS] > [権限のあるDNS解決] を選択します。 [権限DNS解決] ページで、[権限ドメイン名] タブをクリックします。 目的のドメイン名をクリックして、[DNS設定] タブに移動します。

  4. [DNS設定] タブで、[DNSレコードの追加] をクリックします。 表示されるダイアログボックスで、[レコードタイプ] をCNAME、[ホスト名] をドメイン名のプレフィックス、[レコード値] をパブリックの第2レベルドメイン名に設定します。 次に、[OK] をクリックします。

    image

内部ドメイン名解決

  1. API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの管理] > [APIグループ] を選択し、リージョンを選択します。

  2. [APIグループ] ページで、管理するAPIグループをクリックして詳細ページに移動します。 [基本情報] セクションで、APIグループ用にAPI Gatewayによって提供される内部仮想プライベートクラウド (VPC) ドメイン名を見つけます。

  3. DNSコンソールにログインします。 左側のナビゲーションウィンドウで、[プライベートDNS (PrivateZone)] をクリックします。 [プライベートDNS (PrivateZone)] ページの右上で、[設定モード] をクリックします。 [ユーザー定義ゾーン] タブで、[新しいゾーンの追加] をクリックします。

  4. [組み込み権限ゾーンの追加] パネルで、[組み込み権限ゾーン][Alibaba Cloud VPC] を指定し、[OK] をクリックします。

    添加zone

    説明

    [組み込み権限ゾーン] パラメーターには、APIグループにバインドされているカスタム (内部) ドメイン名を入力する必要があります。 ドメイン名は、VPCのプライベートDNS (PrivateZone) 専用です。

  5. 組み込みの権限ゾーンの名前をクリックして、[リソースレコードの設定] タブに移動します。 [レコードの追加] をクリックして、内部ドメイン名のCNAMEレコードを追加します。 [レコードの追加] パネルで、[レコードの種類] をCNAME、[ホスト名] をドメイン名のプレフィックス、[レコードの値] を内部VPCドメイン名に設定します。 次に、[OK] をクリックします。

    image

説明
  • 組み込みの権限ゾーンに関連付けられているVPCにデプロイされているElastic Compute Service (ECS) インスタンスでは、プライベートゾーンレコードがパブリックDNSレコードをオーバーライドします。 内部ドメイン名は、プライベートゾーンレコードに基づいて解決されます。

  • VPCでは、組み込み権限ゾーンのパブリックDNSレコードは影響を受けません。 組み込み権限ゾーンに追加されたプライベートゾーンレコードは、DNSレコードが空である組み込み権限ゾーンがパブリックDNSレコードを上書きするのを防ぐことができます。 それ以外の場合、DNS解決エラーが発生します。 詳細については、「Alibaba Cloud DNS PrivateZoneの有効化」をご参照ください。

ドメイン名バインディング

  1. API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの管理] > [APIグループ] を選択し、リージョンを選択します。

  2. [APIグループ] ページで、ドメイン名にバインドするAPIグループをクリックし、[グループの詳細] ページに移動します。 [独立ドメイン] セクションで、[ドメイン名のバインド] をクリックします。

  3. [ドメイン名のバインド] ダイアログボックスで、次のパラメーターを設定し、[確認] をクリックします。

    パラメーター

    説明

    ドメイン名

    APIグループにバインドするドメイン名を指定します。

    環境

    ドメイン名に関連付けられている環境。 有効な値:

    • テスト: テスト環境のAPIのみを呼び出すことができます。

    • Pre: ステージング環境のAPIのみを呼び出すことができます。

    • 本番環境: 本番環境でAPIのみを呼び出すことができます。

    • デフォルト (X-Ca-Stage): 上記の環境ですべてのAPIを呼び出すことができます。 APIを呼び出すときに、X-Ca-Stageパラメーターをリクエストのヘッダーに追加して、APIを呼び出す環境を指定します。

    ネットワークタイプ

    インターネット: インターネット経由でのみAPIを呼び出すことができます。 内部ネットワーク: 内部ネットワーク経由でのみAPIを呼び出すことができます。

説明
  • 内部ドメイン名の所有権を確認する必要はありません。 ドメイン名が、現在のAPIグループと同じインスタンスに属する別のAPIグループにバインドされているドメイン名と競合する場合、現在のドメイン名はAPIグループにバインドされません。

  • ドメイン名がAPIグループにバインドされた後は、ドメイン名のネットワークタイプを変更することはできません。 設定が正しくない場合は、ドメイン名を削除し、ドメイン名をAPIグループに再度バインドできます。

ドメイン名バインディングに関するFAQ

ドメイン名をAPIグループにバインドできない場合はどうすればよいですか。

  • バインドするドメイン名が、現在のインスタンスの別のAPIグループにバインドされているか、その範囲がバインドした別のドメイン名と競合しています。 範囲の競合とは、ワイルドカードドメイン名が単一のドメイン名を上書きすることを指します。 この場合、現在のドメイン名をバインドする前に、そのドメイン名のバインドを解除する必要があります。

  • バインドするドメイン名が別のユーザーによって作成されたAPIグループにバインドされているか、その範囲がバインドした別のドメイン名と競合しています。 範囲の競合とは、ワイルドカードドメイン名が単一のドメイン名を上書きすることを指します。 この場合、現在のドメイン名をバインドする前に、[ドメイン名の所有権の確認] セクションの指示に従ってドメイン名の所有権を確認する必要があります。

API呼び出しの検証

バインドが完了したら、ドメイン名を使用してAPIグループのAPIを呼び出すことができます。 次の例は、curlを使用してAPIを呼び出す方法を示しています。

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
重要

内部ドメイン名がAPIグループにバインドされている場合、ドメイン名に関連付けられているVPC内のAPIを呼び出す必要があります。

ワイルドカードドメイン名のバインド

API Gatewayでは、ワイルドカードドメイン名をAPIグループにバインドできます。 ワイルドカードドメイン名をパブリックの第2レベルドメイン名に解決し、API Gatewayコンソールでワイルドカードドメイン名をAPIグループにバインドできます。 バインドが完了したら、ワイルドカードドメイン名を使用してAPIグループのAPIを呼び出すことができます。

ワイルドカードドメイン名がAPIグループにバインドされる方法

ワイルドカードドメイン名は、[単一ドメイン名のバインド] セクションの手順と同様の方法でAPIグループにバインドされます。 たとえば、ドメインnam e abc.comの所有者であり、外部サービスを提供するためにAPI Gatewayにd 2.abc.com f abc.comなどのすべてのサブドメインを解決するs 1.abc.comは、次の手順を実行します。

  1. DNSコンソールで、CNAMEレコードを作成して * .abc.comをパブリックの第2レベルドメイン名にマッピングします。

  2. API Gatewayコンソールの [グループの詳細] ページで、* .abc.comをAPIグループにバインドします。

説明

VPCにデプロイされたインスタンスのみがワイルドカードドメイン名をサポートします。 バインディングが完了した後、クライアントは、d 2.abc.com s 1.abc.comなど、f abc.comのサブドメインの1つを使用してAPIグループ内のAPIを呼び出すことができます。 たとえば、APIグループ内のAPIをGETメソッドを使用して匿名で呼び出すことができる場合、* .abc.comのサブドメインを使用してAPIを呼び出すこともできます。

ワイルドカードドメイン名バインディングの使用に関する注意事項

  1. ワイルドカードドメイン名をバインドするときは、ワイルドカードドメイン名の所有権を確認する必要があります。 詳細については、「ドメイン名の所有権の確認」セクションをご参照ください。

  2. ワイルドカードドメイン名をバインドした後、[グループの詳細] ページでワイルドカードドメイン名テンプレートを設定する必要があります。 次に、ワイルドカードドメイン名を使用してAPIを呼び出すことができます。

説明

ワイルドカードドメイン名テンプレートは、ドメイン名パラメーターを設定するために使用されます。 テンプレートの変数フィールドは、バックエンドサービスにパラメーターとして渡すことができます。

APIグループのデフォルトドメイン名の設定

API Gatewayを使用すると、ドメイン名のHTTPS証明書をアップロードできます。 次に、ドメイン名を使用してHTTPS経由でAPIを呼び出すことができます。 複数のドメイン名がAPIグループにバインドされており、これらすべてのドメイン名がHTTPSをサポートしている場合、デフォルトのドメイン名を設定する必要があります。 このように、API Gatewayは、サーバー名表示 (SNI) をサポートしていないクライアントからSSLハンドシェイク要求を受信したときに、既定のドメイン名の証明書を返すことができます。 デフォルトドメイン名が設定されていない場合、API Gatewayはランダムにドメイン名の証明書を返します。 デフォルトのドメイン名設定は、専用インスタンスにのみ適用されます。 デフォルトでは、共有インスタンスはデフォルトドメイン名の証明書をサポートしていません。 SNIをサポートしていない以前のバージョンのクライアントがHTTPS経由でAPI呼び出しを行うと、証明書の混乱エラーが発生する可能性があります。

重要

専用インスタンスでは、複数のAPIグループがすべてデフォルトドメイン名で設定されている場合、最初のAPIグループに設定されているデフォルトドメイン名のみをロードできます。