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
https://console.aws.amazon.com/apigateway で API Gateway コンソールにサインインします。
-
メインのナビゲーションペインから [Custom Domain Names (カスタムドメイン名)] を選択します。
-
[Create] を選択します。
-
[Domain name (ドメイン名)] には、ドメイン名を入力します。
-
[TLS の最小バージョン] で、バージョンを選択します。
-
[エンドポイント設定] で、[API エンドポイントタイプ] として [リージョン] を選択します。
-
ACM 証明書を選択します。証明書は API と同じリージョンに存在する必要があります。
-
[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 レコードの作成方法を示しています。DNSName
の HostedZoneId
プロパティと AliasTarget
プロパティは、カスタムドメイン名の regionalDomainName
と regionalHostedZoneId
の値をそれぞれ示しています。また、リージョン別 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/test
が https://regional.example.com/myApi
にマッピングされます。
- AWS Management Console
API Gateway コンソール (https://console.aws.amazon.com/apigateway) にサインインします。
-
カスタムドメイン名を選択します。
-
[Configure API mappings (API マッピングの設定)] を選択します。
-
[Add new mapping (新しいマッピングを追加)] を選択します。
-
マッピングの API、ステージ、パスを指定します。
-
[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 のカスタムドメイン名にマッピングする」を参照してください。