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 がアタッチされます。サービスにリンクされたロールの詳細な使用方法については、「サービスにリンクされたロールの使用」を参照してください。

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

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

次の手順では、リージョン別カスタムドメイン名を作成する方法を示します。この手順を完了したら、カスタムドメイン名をリージョン別ドメイン名にポイントするための DNS レコードを作成する必要があります。

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

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

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

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

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

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

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

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

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 のホスト名にルーティングされます。

リージョン別カスタムドメイン名の 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) を指しています。

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

DNS レコードを作成したら、API をカスタムドメイン名にマッピングするためのベースパスマッピングを作成します。例えば、abc123 の 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. API Gateway コンソール (https://console.aws.amazon.com/apigateway) にサインインします。

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

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

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

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

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

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 のカスタムドメイン名にマッピングする」を参照してください。