API Gateway でエッジ最適化カスタムドメイン名を設定する
エッジ最適化 API のカスタムドメイン名を作成すると、API Gateway は、CloudFront ディストリビューションと DNS レコードを設定して API ドメイン名を CloudFront ディストリビューションドメイン名にマッピングします。API のリクエストは、マッピングされた CloudFront ディストリビューションを介して API Gateway にルーティングされます。このマッピングは、カスタムドメイン名宛ての API リクエストに使用され、そのリクエストは、マッピング先の CloudFront ディストリビューションを介して API Gateway にルーティングされます。
考慮事項
エッジ最適化カスタムドメイン名に関する考慮事項は、以下のとおりです。
-
エッジ最適化のカスタムドメイン名を設定したり、その証明書を更新したりするには、CloudFront ディストリビューションを更新するためのアクセス許可が必要です。
CloudFront ディストリビューションを更新するには、以下のアクセス許可が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontUpdateDistribution", "Effect": "Allow", "Action": [ "cloudfront:updateDistribution" ], "Resource": [ "*" ] } ] }
-
エッジ最適化カスタムドメイン名の証明書は、米国東部 (バージニア北部) –
us-east-1
リージョンでリクエストまたはインポートする必要があります。 -
API Gateway によって作成された CloudFront ディストリビューションは、API Gateway と提携しているリージョン固有のアカウントによって所有されています。このような CloudFront ディストリビューションを作成および更新するオペレーションを CloudTrail でトレースするときは、この API Gateway アカウント ID を使用する必要があります。詳細については、「CloudTrail におけるカスタムドメイン名の作成のログ記録」を参照してください。
-
API Gateway は、CloudFront ディストリビューションで Server Name Indication (SNI) を利用することで、エッジ最適化のカスタムドメイン名をサポートしています。証明書の必須の形式や証明書の最大キー長など、CloudFront ディストリビューションでのカスタムドメイン名の使用の詳細については、「Amazon CloudFront 開発者ガイド」の「代替ドメイン名と HTTPS を使用する」を参照してください。
-
エッジ最適化カスタムドメイン名の準備には約 40 分かかります。
-
エッジ最適化カスタムドメイン名を作成したら、DNS レコードを作成して、カスタムドメイン名を CloudFront ディストリビューション名にマッピングする必要があります。
エッジ最適化カスタムドメイン名を作成する
次の手順では、API のエッジ最適化カスタムドメイン名を作成する方法を示します。
エッジ最適化カスタムドメイン名の準備には約 40 分かかりますが、コンソールには、関連する CloudFront ディストリビューションドメイン名が、証明書 ARN と共に、
の形式ですぐに表示されます。その間に、次のステップに進み、カスタムドメイン名を関連する CloudFront ディストリビューションドメイン名にマッピングするように DNS レコードエイリアスを設定できます。distribution-id
.cloudfront.net
エッジ最適化カスタムドメイン名の DNS レコードを作成する
エッジ最適化カスタムドメイン名の作成を開始したら、DNS レコードエイリアスを設定します。
Route 53 を使用してカスタムドメイン名の A レコードエイリアスを作成し、エイリアス先として CloudFront ディストリビューションドメイン名を指定することをお勧めします。その結果、カスタムドメイン名が Zone Apex であっても、Route 53 はカスタムドメイン名をルーティングすることができます。詳細については、Amazon Route 53 デベロッパーガイドの「エイリアスリソースレコードセットと非エイリアスリソースレコードセットの選択」を参照してください。
代わりに、カスタムドメインを CNAME リソースレコードセットとしてホストゾーンに追加できます。CNAME レコードの名前では、[Domain Name (ドメイン名)] に先ほど入力したカスタムドメイン名 (api.example.com
など) を指定します。CNAME レコードの値では、CloudFront ディストリビューションのドメイン名を指定します。
ただし、カスタムドメインが Zone Apex である (つまり、example.com
ではなく api.example.com
である) 場合、CNAME レコードは動作しません。一般的に、Zone Apex は組織のルートドメインとしても知られています。zone apex には、A レコードのエイリアスを使用する必要があります (DNS プロバイダーによってサポートされている場合)。
Amazon Route 53 の手順については、Amazon Route 53 デベロッパーガイドの「ドメイン名を使用してトラフィックを Amazon API Gateway API にルーティングする 」を参照してください。
CloudTrail におけるカスタムドメイン名の作成のログ記録
アカウントによる API Gateway コールのログ記録に CloudTrail が有効になっている場合、API Gateway は、API のカスタムドメイン名が作成または更新されたときに、関連付けられた CloudFront ディストリビューションの更新を記録します。これらのログは us-east-1
にあります。これらの CloudFront ディストリビューションは API Gateway が所有しているため、報告された各 CloudFront ディストリビューションは、API 所有者のアカウント ID ではなく、次のいずれかのリージョン固有の API Gateway アカウント ID によって識別されます。
リージョン |
アカウント ID |
---|---|
us-east-1 | 392220576650 |
us-east-2 | 718770453195 |
us-west-1 | 968246515281 |
us-west-2 | 109351309407 |
ca-central-1 | 796887884028 |
eu-west-1 | 631144002099 |
eu-west-2 | 544388816663 |
eu-west-3 | 061510835048 |
eu-central-1 | 474240146802 |
eu-central-2 | 166639821150 |
eu-north-1 | 394634713161 |
eu-south-1 | 753362059629 |
eu-south-2 | 359345898052 |
ap-northeast-1 | 969236854626 |
ap-northeast-2 | 020402002396 |
ap-northeast-3 | 360671645888 |
ap-southeast-1 | 195145609632 |
ap-southeast-2 | 798376113853 |
ap-southeast-3 | 652364314486 |
ap-southeast-4 | 849137399833 |
ap-south-1 | 507069717855 |
ap-south-2 | 644042651268 |
ap-east-1 | 174803364771 |
sa-east-1 | 287228555773 |
me-south-1 | 855739686837 |
me-central-1 | 614065512851 |
カスタムドメイン名をホスト名として API のベースパスマッピングを設定する
ベースパスマッピングを通じて、単一のカスタムドメイン名を複数の API のホスト名として使用できます。これにより、カスタムドメイン名および関連するベースパスを組み合わせて API にアクセスできます。
例えば、API Gateway で、PetStore
という名前の API と Dogs
という名前の別の API を作成し、api.example.com
のカスタムドメイン名を設定すると、PetStore
API の URL を https://api.example.com
として設定できます。
これにより、PetStore
API は空の文字列のベースパスに関連付けられます。PetStore
API の URL を https://api.example.com/PetStore
として設定すると、PetStore
API は PetStore
のベースパスに関連付けられます。MyDogList
API には、ベースパスとして Dogs
を割り当てることができます。URL https://api.example.com/MyDogList
は、Dogs
API のルート URL となります。
複数のレベルで API マッピングを設定するには、リージョン別カスタムドメイン名のみを使用できます。エッジ最適化カスタムドメイン名はサポートされません。詳細については、「API ステージを REST API のカスタムドメイン名にマッピングする」を参照してください。
以下の手順では、カスタムドメイン名から API ステージにパスをマップするための API マッピングをセットアップします。
ACM にインポートされた証明書を更新
ACM は使用する証明書の更新を自動的に処理します。カスタムドメイン名に ACM 使用の証明書を更新する必要はありません。CloudFront はユーザーに代わって処理します。
ただし、証明書を ACM にインポートし、カスタムドメイン名に使用すると、期限切れ前に証明書を更新する必要があります。これにはドメイン名に関する新しいサードパーティーの証明書のインポートも含まれ、既存の証明書は新規更新されます。期限切れの証明書を新しくインポートするときはそのプロセスを繰り返す必要があります。また、ACM にドメイン名に関する新しい証明書を発行するようリクエストもでき、既存のものを ACM 発行の新しい証明書に更新します。その後で、ACM と CloudFront により証明書の更新を自動的に処理するようにできます。新しい ACM 証明書を作成またはインポートするには、「SSL/TLS 証明書を作成または ACM にインポートするには」の手順に従います。
次の手順では、ドメイン名の証明書をローテーションする方法を示します。
注記
ACM にインポートした証明書のローテーションには約 40 分かかります。
カスタムドメイン名を使用して API を呼び出す
カスタムドメイン名で API を呼び出すことは、正しい URL を使用する場合、デフォルトのドメイン名で API を呼び出すことと同じです。
次の例では、指定されたリージョン (udxjef
) で、指定されたカスタムドメイン名 (qf3duz
) の 2 つの API (us-east-1
および api.example.com
) のデフォルトの URL と対応するカスタム URL を比較し、違いを示します。
API ID | ステージ | デフォルト URL | 基本パス | カスタム URL |
---|---|---|---|---|
udxjef | prod | https://udxjef.execute-api.us-east-1.amazonaws.com/prod | /petstore | https://api.example.com/petstore |
udxjef | tst | https://udxjef.execute-api.us-east-1.amazonaws.com/tst | /petdepot | https://api.example.com/petdepot |
qf3duz | dev | https://qf3duz.execute-api.us-east-1.amazonaws.com/dev | /bookstore | https://api.example.com/bookstore |
qf3duz | tst | https://qf3duz.execute-api.us-east-1.amazonaws.com/tst | /bookstand | https://api.example.com/bookstand |
API Gateway では、Server Name Indication (SNI)
API Gateway では、CloudFront ディストリビューションで SNI を実施します。CloudFront でのカスタムドメイン名の使用の詳細については、「Amazon CloudFront カスタム SSL