API Gateway でエッジ最適化カスタムドメイン名を設定する - Amazon API Gateway

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 のエッジ最適化カスタムドメイン名を作成する方法を示します。

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 証明書] で、ACM 証明書を選択します。

  8. [ドメイン名の作成] を選択します。

REST API
  1. domainname:create を呼び出し、カスタムドメイン名と AWS Certificate Manager に保存してある証明書の ARN を指定します。

    API コールが成功すると、証明書 ARN、および関連する CloudFront ディストリビューション名をペイロードに含む 201 Created レスポンスを返します。

  2. 出力に表示される CloudFront ディストリビューションドメイン名をメモしておきます。次のステップで、DNS でカスタムドメインの CNAME 値または A レコードのエイリアスターゲットを設定するために、これが必要になります。

この REST API コールのコード例については、「domainname:create」を参照してください。

エッジ最適化カスタムドメイン名の準備には約 40 分かかりますが、コンソールには、関連する CloudFront ディストリビューションドメイン名が、証明書 ARN と共に、distribution-id.cloudfront.net の形式ですぐに表示されます。その間に、次のステップに進み、カスタムドメイン名を関連する CloudFront ディストリビューションドメイン名にマッピングするように DNS レコードエイリアスを設定できます。

エッジ最適化カスタムドメイン名の 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 マッピングをセットアップします。

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

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

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

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

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

  6. マッピングの APIステージパス (オプション) を指定します。

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

REST API

特定のカスタムドメイン名で basepathmapping:create を呼び出し、リクエストペイロードの basePathrestApiId、およびデプロイ stage プロパティを指定します。

API 呼び出しが成功すると、201 Created レスポンスを返します。

REST API コールのコード例については、basepathmapping:create を参照してください。

ACM にインポートされた証明書を更新

ACM は使用する証明書の更新を自動的に処理します。カスタムドメイン名に ACM 使用の証明書を更新する必要はありません。CloudFront はユーザーに代わって処理します。

ただし、証明書を ACM にインポートし、カスタムドメイン名に使用すると、期限切れ前に証明書を更新する必要があります。これにはドメイン名に関する新しいサードパーティーの証明書のインポートも含まれ、既存の証明書は新規更新されます。期限切れの証明書を新しくインポートするときはそのプロセスを繰り返す必要があります。また、ACM にドメイン名に関する新しい証明書を発行するようリクエストもでき、既存のものを ACM 発行の新しい証明書に更新します。その後で、ACM と CloudFront により証明書の更新を自動的に処理するようにできます。新しい ACM 証明書を作成またはインポートするには、「SSL/TLS 証明書を作成または ACM にインポートするには」の手順に従います。

次の手順では、ドメイン名の証明書をローテーションする方法を示します。

注記

ACM にインポートした証明書のローテーションには約 40 分かかります。

AWS Management Console
  1. ACM に証明書をリクエストするかインポートします。

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

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

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

  5. [Edit] を選択します。

  6. ドロップダウンリストの [ACM certificate (ACM 証明書)] から希望する証明書を選択します。

  7. [保存] を選択し、カスタムドメイン名の証明書の更新を開始します。

  8. 更新完了後、[ACM 証明書] の隣にある対面矢印アイコンを選択すると、オリジナルの証明書に戻せます。

REST API

domainname:update アクションを呼び出し、指定したドメイン名の新しい ACM 証明書の ARN を指定します。

カスタムドメイン名を使用して 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 のカスタムドメイン名がサポートされています。SNI をサポートするブラウザまたはクライアントライブラリを使用して、カスタムドメイン名の API を呼び出すことができます。

API Gateway では、CloudFront ディストリビューションで SNI を実施します。CloudFront でのカスタムドメイン名の使用の詳細については、「Amazon CloudFront カスタム SSL」を参照してください。