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

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

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

重要

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

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

重要

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

API Gateway コンソールで ACM 証明書を使用してリージョン別カスタムドメイン名を設定する

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

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

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

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

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

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

  5. [設定] で、[Regional (リージョン)] を選択します。

  6. TLS の最小バージョンを選択します。

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

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

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

以下の手順では、カスタムドメイン名から API ステージにパスをマップするための API マッピングをセットアップします。

API Gateway コンソールを使用して API マッピング名を作成するには

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

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

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

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

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

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

カスタムドメインの BasePath マッピングの設定については、「カスタムドメイン名をホスト名として API のベースパスマッピングを設定する」を参照してください。

AWS CLI で ACM 証明書を使用してリージョン別カスタムドメイン名を設定する

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

  1. カスタムドメイン名とリージョン別証明書の ARN を指定する 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

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

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

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

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

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

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

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

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

  4. DNS レコードを設定して、リージョン別カスタムドメイン名を指定されたホストゾーン ID のホスト名にマッピングします。まず、リージョン別ドメイン名の DNS レコードを設定するための設定を含む JSON ファイルを作成します。次の例に、カスタムドメイン名の作成時にプロビジョニングされたリージョン別のホスト名 (d-numh1z56v6.execute-api.us-west-2.amazonaws.com) にリージョン別のカスタムドメイン名 (regional.example.com) をマッピングする DNS A レコードの作成方法を示します。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 } } } ] }
  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) を指しています。