Amazon API Gateway
開発者ガイド

API Gateway でリージョン別 API 用のカスタムドメイン名をセットアップする

エッジ最適化 API エンドポイントを使用すると、リージョン別 API エンドポイント用にカスタムドメイン名を作成できます。リージョン別カスタムドメイン名をサポートするには、証明書を提供する必要があります。AWS Certificate Manager (ACM) 証明書を使用する場合は、リージョン固有のものである必要があります。ACM が利用可能なリージョンの場合は、リージョン固有の ACM 証明書を提供する必要があります。ACM がサポートされていないリージョンの場合は、リージョン別カスタムドメイン名を作成する際に、リージョン内の API Gateway に証明書をアップロードする必要があります。カスタムドメイン名の証明書を作成またはアップロードする方法の詳細については、「AWS Certificate Manager で証明書の準備をする」を参照してください。

重要

API Gateway リージョンのカスタムドメイン名については、API と同じリージョンで証明書を要求またはインポートする必要があります。

ACM 証明書でリージョン別カスタムドメイン名を作成または移行する際、アカウント内にすでにロールが存在していない場合、API Gateway はサービスにリンクされたロールをアカウント内に作成します。サービスにリンクされたロールは、ACM 証明書をリージョン別エンドポイントにアタッチするのに必要です。ロールの名前は AWSServiceRoleForAPIGateway です。また、管理ポリシーの APIGatewayServiceRolePolicy がアタッチされます。サービスにリンクされたロールの詳細な使用方法については、「サービスにリンクされたロールの使用」を参照してください。

重要

DNS レコードを作成し、カスタムドメイン名をこのリージョン別ドメイン名にポイントする必要があります。これにより、カスタムドメイン名にバインドされるトラフィックが、API のリージョン別ホスト名にルーティングされます。DNS レコードは、CNAME または A タイプになります。

API Gateway コンソールを使用してリージョンのカスタムドメイン名を設定する

API Gateway コンソールを使用してリージョンのカスタムドメイン名を設定するには、以下の手順を実行します。

API Gateway コンソールを使用してリージョンのカスタムドメイン名を設定する

  1. API Gateway コンソールにサインインし、プライマリナビゲーションペインで [カスタムドメイン名] を選択します。

  2. [カスタムドメイン名] 一覧で、[ +Create New Custom Domain Name (+新しいカスタムドメイン名の作成)] を選択します。

  3. [新しいカスタムドメイン名] で、[ドメイン名] にカスタムドメイン名 (my-api.example.com など) を入力します。

  4. [エンドポイント設定] で、[リージョン別] を選択します。

  5. [ACM Certificate (ACM 証明書)] ドロップダウンリストから証明書を選択します。証明書は、API がデプロイされているのと同じリージョンからのものである必要があります。

  6. このカスタムドメイン名を使用する API を作成してデプロイしている場合は、[マッピングの追加] を選択し、[パス] にカスタムドメイン名の基本パスを入力します。続いて、[送信先] で [API] ドロップダウンリストから API を選択した後、[ステージ] ドロップダウンリストからステージを選択します。別の基本パスマッピングを追加するには、この手順を繰り返します。

  7. [Save] を選択します。

  8. トラフィックを API Gateway にルーティングするための Route 53 の設定」の Route 53 ドキュメントに従います。

AWS CLI を使用したリージョン別カスタムドメイン名のセットアップ

AWS CLI を使用してリージョン別 API のカスタムドメイン名をセットアップするには、次の手順を実行します。

  1. create-domain-name タイプのカスタムドメイン名とリージョンの証明書の ARN を指定する REGIONAL を呼び出します。

    aws apigateway create-domain-name \ --domain-name 'regional.example.com' \ --endpoint-configuration types=REGIONAL \ --regional-certificate-arn 'arn:aws:acm:us-west-2:123456789012:certificate/c19332f0-3be6-457f-a244-e03a423084e6'

    指定された証明書は us-west-2 リージョンのものであり、この例では基盤となる API も同じリージョンのものであることを前提としていることに注意してください。

    成功すると、この呼び出しは以下のような結果を返します。

    { "certificateUploadDate": "2017-10-13T23:02:54Z", "domainName": "regional.example.com", "endpointConfiguration": { "types": "REGIONAL" }, "regionalCertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/c19332f0-3be6-457f-a244-e03a423084e6", "regionalDomainName": "d-numh1z56v6.execute-api.us-west-2.amazonaws.com" }

    regionalDomainName プロパティ値は、リージョン別 API のホスト名を返します。DNS レコードを作成し、カスタムドメイン名をこのリージョン別ドメイン名にポイントする必要があります。これにより、カスタムドメイン名にバインドされるトラフィックが、このリージョン別 API のホスト名にルーティングされます。

  2. DNS レコードを作成し、カスタムドメイン名とリージョン別ドメイン名を関連付けます。これにより、カスタムドメイン名にバインドされるリクエストが、API のリージョン別ホスト名にルーティングされます。

  3. 基本パスマッピングを追加し、指定のカスタムドメイン名 (0qzs2sy7bh など) のデプロイステージ (test など) で指定の API (regional.example.com など) を公開します。

    aws apigateway create-base-path-mapping \ --domain-name 'regional.example.com' \ --base-path 'RegionalApiTest' \ --rest-api-id 0qzs2sy7bh \ --stage 'test'

    その結果、ステージにデプロイされる API のカスタムドメイン名を使用するベース URL は https://regional.example.com/RegionalApiTest になります。

  4. DNS レコードを設定して、リージョン別のカスタムドメイン名を指定されたホストゾーン ID のホスト名にマッピングします。まず、リージョン別ドメイン名の DNS レコードをセットアップするための設定を含む JSON ファイルを作成します。次の例に、カスタムドメイン名の作成時にプロビジョニングされたリージョン別のホスト名 (A) にリージョン別のカスタムドメイン名 (regional.example.com) をマッピングする DNS d-numh1z56v6.execute-api.us-west-2.amazonaws.com レコードの作成方法を示します。DNSNameHostedZoneId プロパティと AliasTarget プロパティは、カスタムドメイン名の regionalDomainNameregionalHostedZoneId の値をそれぞれ示しています。また、リージョン別 Route 53 ホストゾーン ID は API Gateway のリージョンとエンドポイントで取得できます。

    { "Changes": [ { "Action": "CREATE", "ResourceRecordSet": { "Name": "regional.example.com", "Type": "A", "AliasTarget": { "DNSName": "d-numh1z56v6.execute-api.us-west-2.amazonaws.com", "HostedZoneId": "Z2OJLYMUO9EFXC", "EvaluateTargetHealth": false } } } ] }
  5. 次の CLI コマンドを実行します。

    aws route53 change-resource-record-sets \ --hosted-zone-id {your-hosted-zone-id} \ --change-batch file://path/to/your/setup-dns-record.json

    ここで {your-hosted-zone-id} は、アカウントに設定された DNS レコードの Route 53 ホストゾーン ID です。change-batch パラメータ値は、フォルダ (path/to/your) 内の JSON ファイル (setup-dns-record.json) を指しています。