API Gateway でリージョン別カスタムドメイン名を設定する - Amazon API Gateway

API Gateway でリージョン別カスタムドメイン名を設定する

リージョン別カスタムドメイン名を使用して、ユーザーフレンドリーな API ベース URL を作成します。リージョン別カスタムドメイン名を使用すると、HTTP API と REST API のステージを同じカスタムドメイン名にマッピングして相互 TLS 認証を使用できます。

考慮事項

リージョン別カスタムドメイン名に関する考慮事項は、以下のとおりです。

  • リージョン固有の ACM 証明書を指定する必要があります。この証明書は API と同じリージョンに存在する必要があります。カスタムドメイン名の証明書を作成またはアップロードする方法の詳細については、「AWS Certificate Manager で証明書を準備する」を参照してください。

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

  • リージョン別カスタムドメイン名の作成後、カスタムドメイン名をリージョン別ドメインに関連付ける DNS レコードを作成する必要があります。これにより、カスタムドメイン名にバインドされるトラフィックが、API のリージョン別ホスト名にルーティングされます。

    DNS レコードには、CNAME または A エイリアスレコードを使用できます。Route 53 を DNS プロバイダーとして使用する場合は、A エイリアスレコードを作成します。サードパーティーの DNS プロバイダーを使用する場合は、CNAME レコードを使用します。CNAME レコードを使用し、プライベート API に対してプライベート DNS を有効にした API Gateway インターフェイス VPC エンドポイントを作成した場合、プライベート API をホストしている VPC 内でカスタムドメイン名を解決できなくなります。

リージョン別カスタムドメイン名を作成する

次の手順では、リージョン別カスタムドメイン名を作成する方法を示します。この手順を完了したら、API のステージをカスタムドメイン名にマッピングするためのベースパスマッピングを作成します。

AWS Management Console
  1. https://console.aws.amazon.com/apigateway で API Gateway コンソールにサインインします。

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

  3. [Create] を選択します。

  4. [ドメイン名] には、ドメイン名を入力します。

  5. [TLS の最小バージョン] で、バージョンを選択します。

  6. [エンドポイント設定] で、[API エンドポイントタイプ] として [リージョン] を選択します。

  7. ACM 証明書を選択します。証明書は API と同じリージョンに存在する必要があります。

  8. [作成] を選択します。

AWS CLI

次の create-domain-name コマンドは、カスタムドメイン名を作成します。

aws apigatewayv2 create-domain-name \ --domain-name 'regional.example.com' \ --domain-name-configurations CertificateArn=arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678

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

{ "ApiMappingSelectionExpression": "$request.basepath", "DomainName": "regional.example.com", "DomainNameConfigurations": [ { "ApiGatewayDomainName": "d-numh1z56v6.execute-api.us-west-2.amazonaws.com", "CertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678", "DomainNameStatus": "AVAILABLE", "EndpointType": "REGIONAL", "HostedZoneId": "Z2OJLYMUO9EFXC", "SecurityPolicy": "TLS_1_2" } ] }

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

リージョン別カスタムドメイン名のベースパスマッピングを作成する

カスタムドメイン名の作成後、API をカスタムドメイン名に関連付けるベースパスマッピングを作成します。例えば、abcd1234 の API ID のステージ test をカスタムドメイン名 regional.example.com にマッピングするには、myApi の API マッピングキーを使用できます。これにより、API https://abcd1234.execute-api.us-west-2.amazonaws.com/testhttps://regional.example.com/myApi にマッピングされます。

AWS Management Console
  1. https://console.aws.amazon.com/apigateway で API Gateway コンソールにサインインします。

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

  3. [Configure API mappings (API マッピングの設定)] を選択します。

  4. [Add new mapping (新しいマッピングを追加)] を選択します。

  5. マッピングの APIステージパスを指定します。

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

AWS CLI

次の create-api-mapping コマンドは、ベースパスマッピングを作成します。

aws apigatewayv2 create-api-mapping \ --domain-name 'regional.example.com' \ --api-mapping-key 'myApi' \ --api-id abcd1234 \ --stage 'test'

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

リージョン別カスタムドメイン名を使用すると、https://regional.example.com/orders/v1/items/123 などの複数のレベルで API マッピングを作成できます。HTTP API と REST API のステージを同じカスタムドメイン名にマッピングすることもできます。詳細については、「API ステージを REST API のカスタムドメイン名にマッピングする」を参照してください。

リージョン別カスタムドメイン名の DNS レコードを作成する

カスタムドメイン名を作成し、ベースパスマッピングを作成した後、カスタムドメイン名を新しく作成したリージョン別ドメイン名に関連付ける DNS レコードを作成します。

AWS Management Console

AWS Management Consoleを使用するには、Route 53 のドキュメントで「トラフィックを API Gateway にルーティングするように Route 53 を設定する」を参照してください。

AWS CLI

リージョン別カスタムドメイン名を特定のホストゾーン ID のホスト名にマッピングするように DNS レコードを設定するには、まずリージョン別ドメイン名の DNS レコードをセットアップするための設定を含む JSON ファイルを作成します。

次の setup-dns-record.json は、カスタムドメイン名の作成の一環としてプロビジョニングしたリージョン別ホスト名 (d-numh1z56v6.execute-api.us-west-2.amazonaws.com) にリージョン別カスタムドメイン名 (regional.example.com) をマッピングするための DNS レコードの作成方法を示しています。DNSNameHostedZoneId プロパティと AliasTarget プロパティは、カスタムドメイン名の regionalDomainNameregionalHostedZoneId の値をそれぞれ示しています。また、リージョン別 Route 53 ホストゾーン ID は、「Amazon 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 } } } ] }

次の change-resource-record-sets は、リージョン別カスタムドメイン名の DNS レコードを作成します。

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

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