メニュー
Amazon API Gateway
開発者ガイド

API Gateway で API のカスタムドメイン名を設定する

API のデプロイ後、お客様 (およびその顧客) は、以下の形式のデフォルトのベース URL を使用して API を呼び出すことができます。

Copy
https://api-id.execute-api.region.amazonaws.com/stage

api-id は ABP によって生成されます。region は API の作成時に、stage は API のデプロイ時に、お客様が指定します。

URL のホスト名部分 (api-id.execute-api.region.amazonaws.com など) は API エンドポイント (エッジ最適化またはリージョン) を参照します。デフォルトの API エンドポイントは再呼び出しが難しく、ユーザーフレンドリではありません。よりシンプルで直観的な URL を API ユーザーに提供するには、API のホスト名としてカスタムドメイン名 (api.example.com など) を設定し、この API に代替 URL をマップする基本パス (myservice など) を選択します。これで、以下のように API ベース URL はよりユーザーフレンドリになりました。

Copy
https://api.example.com/myservice

カスタムドメイン名でベースマッピングを設定しないと、返される API のベース URL はカスタムドメインと同じになります (https://api.example.com など)。この場合、カスタムドメイン名は複数の API をサポートできません。

エッジ最適化 API をデプロイすると、API Gateway は、API ドメイン名を CloudFront ディストリビューションドメイン名にマップするように、Amazon CloudFront ディストリビューションと DNS レコードを設定します。その後、API へのリクエストは、マップされた CloudFront ディストリビューションを介して API Gateway にルーティングされます。

エッジ最適化 API のカスタムドメイン名を作成すると、API Gateway は CloudFront ディストリビューションを設定します。しかし、カスタムドメイン名を CloudFront ディストリビューションドメイン名にマップするように DNS レコードを設定することで、カスタムドメイン名宛ての API リクエストが、マップされた CloudFront ディストリビューション経由で、API Gateway にルーティングされるようにする必要があります。カスタムドメイン名の証明書を提供する必要もあります。

リージョン API のカスタムドメイン名を作成すると、API Gateway は、API のリージョンのドメイン名を作成します。しかし、カスタムドメイン名をリージョンのドメイン名にマップするように DNS レコードを設定することで、カスタムドメイン名宛ての API リクエストが、マップされたリージョン API エンドポイント経由で、API Gateway にルーティングされるようにする必要があります。しかし、カスタムドメイン名をリージョンのドメイン名にマップするように DNS レコードを設定することで、カスタムドメイン名宛ての API リクエストが、マップされたリージョン API エンドポイント経由で、API Gateway にルーティングされるようにする必要があります。

注記

API Gateway で作成した CloudFront ディストリビューションは、API Gateway と関連するリージョン固有のアカウントによって所有されます。このような CloudFront ディストリビューションの作成および更新オペレーションを CloudWatch ログで追跡する場合は、この API Gateway アカウント ID を使用する必要があります。詳細については、「CloudTrail におけるカスタムドメイン名の作成のロギング」を参照してください。

エッジ最適化のカスタムドメイン名を設定したり、その証明書を更新したりするには、CloudFront ディストリビューションを更新するためのアクセス権限が必要です。そのためには、次の IAM ポリシーステートメントをアカウントの IAM ユーザー、グループ、またはロールにアタッチします。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontUpdateDistribution", "Effect": "Allow", "Action": [ "cloudfront : updateDistribution" ], "Resource": [ "*" ] } ] }

API Gateway は、CloudFront ディストリビューションで Server Name Indication (SNI) を利用することで、エッジ最適化のカスタムドメイン名をサポートしています。証明書の必須の形式や証明書の最大キー長など、CloudFront ディストリビューションでのカスタムドメイン名の使用の詳細については、Amazon CloudFront 開発者ガイド の「Using Alternate Domain Names and HTTPS」を参照してください。

API のホスト名としてカスタムドメイン名を設定するには、API 所有者として、カスタムドメイン名の SSL/TLS 証明書を提供する必要があります。

エッジ最適化のカスタムドメイン名の証明書を提供するには、AWS Certificate Manager (ACM) にリクエストして新しい証明書を ACM で生成するか、サードパーティー認証機関から発行された証明書を ACM にインポートできます。

ACM がサポートされているリージョンで、リージョンのカスタムドメイン名の証明書を提供するには、ACM に証明書をリクエストする必要があります。ACM がサポートされていないリージョンで、リージョンのカスタムドメイン名の証明書を提供するには、そのリージョン内の API Gateway に証明書をインポートする必要があります。

SSL/TLS 証明書をインポートするには、カスタムドメイン名の PEM 形式の SSL/TLS 認証本文、そのプライベートキー、およびカスタムドメイン名の証明書チェーンを提供する必要があります。ACM に保存された各証明書は ARN によって識別されます。ドメイン名に AWS に管理された証明書を使用するには、ARN を参照します。

ACM により、API にカスタムドメイン名を設定し、使用するのが簡単になります。指定されたドメイン名の証明書を ACM で作成するかインポートする。ACM により提供される証明書の ARN で API Gateway にドメイン名を設定する。API のデプロイされたステージにカスタムドメイン名でベースパスをマッピングする。ACM 発行の証明書により、プライベートキーなど証明書の機密の詳細が漏れる心配はありません。

注記

API Gateway は CloudFront によってサポートされない自己署名の SSL/TLS 証明書についてはサポートしていません。

API のカスタムドメイン名を設定するためには、登録されたインターネットのドメイン名が必要です。必要に応じ、Amazon Route 53 またはお好みのサードパーティーのドメインレジストラを使用して、インターネットのドメインを登録できます。API のカスタムドメイン名は、登録したインターネットドメインのサブドメイン名か、またはルートドメイン名 (例:zone apex) を使用できます。

API Gateway でカスタムドメイン名を作成したら、エッジ最適化のカスタムドメイン名をその CloudFront ディストリビューションドメイン名にマップするか、またはリージョンのカスタムドメイン名をリージョンの API エンドポイントにマップするように、ドメインネームサービス (DNS) プロバイダーのリソースレコードを作成または更新する必要があります。このようなマッピングがないと、カスタムドメイン名宛ての API リクエストは API Gateway に到達できません。

注記

エッジ最適化のカスタムドメイン名は、特定のリージョンに作成され、特定の AWS アカウントによって所有されます。リージョン間または AWS アカウント間のそのようなカスタムドメイン名の移動には、既存の CloudFront ディストリビューションの削除および新規作成が含まれます。新しいカスタムドメイン名が使用できるようになるまで、およそ 30 分かかる場合があります。詳細については、「CloudFront ディストリビューションの更新」を参照してください。

このセクションでは、ACM を使用してカスタムドメイン名の SSL/TLS 証明書を作成する方法、API のカスタムドメイン名を設定する方法、カスタムドメイン名で特定の API をベースパスと関連付ける方法、カスタムドメイン名のために ACM へインポートしていた期限切れとなる証明書を更新 (別名で更新) する方法について説明します。