エッジ最適化カスタムドメイン名の作成 - Amazon API Gateway

エッジ最適化カスタムドメイン名の作成

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

次の手順では、API Gateway コンソールを使用して API のカスタムドメイン名を作成する方法を説明します。

API Gateway コンソールを使用してカスタムドメイン名を作成するには

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

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

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

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

  5. [設定] で、[Edge-optimized (エッジ最適化)] を選択します。

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

  7. ACM 証明書を選択します。

    注記

    API Gateway のエッジ最適化されたカスタムドメイン名を持つ ACM 証明書を使用するには、us-east-1 (米国東部 (バージニア北部)) リージョンで証明書をリクエストまたはインポートする必要があります。

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

  9. カスタムドメイン名を作成したら、コンソールは関連する CloudFront ディストリビューションドメイン名を証明書 ARN と一緒に distribution-id.cloudfront.net の形式で表示します。出力に表示される CloudFront ディストリビューションドメイン名をメモしておきます。次のステップで、DNS でカスタムドメインの CNAME 値または A レコードのエイリアスターゲットを設定するために、これが必要になります。

    注記

    新しく作成したカスタムドメイン名は使用できるまでに約 40 分かかります。カスタムドメイン名が初期化されている間に、カスタムドメイン名を関連する CloudFront ディストリビューションドメイン名にマッピングし、カスタムドメイン名のベースパスマッピングを設定するために、DNS レコードのエイリアスを設定できます。

  10. 次に、DNS プロバイダーで DNS レコードを設定して、カスタムドメイン名を関連する CloudFront ディストリビューションにマッピングします。Amazon Route 53 の手順については、Amazon Route 53 デベロッパーガイドの「ドメイン名を使用してトラフィックを Amazon API Gateway API にルーティングする 」を参照してください。

    ほとんどの DNS プロバイダーでは、カスタムドメイン名は、CNAME リソースレコードセットとしてホストゾーンに追加されます。CNAME レコードの名前では、[Domain Name (ドメイン名)] に先ほど入力したカスタムドメイン名 (api.example.com など) を指定します。CNAME レコードの値では、CloudFront ディストリビューションのドメイン名を指定します。ただし、カスタムドメインが Zone Apex である (つまり、example.com ではなく api.example.com である) 場合、CNAME レコードは動作しません。一般的に、Zone Apex は組織のルートドメインとしても知られています。zone apex には、A レコードのエイリアスを使用する必要があります (DNS プロバイダーによってサポートされている場合)。

    Route 53 では、カスタムドメイン名の A レコードのエイリアスを作成し、エイリアス先として CloudFront ディストリビューションドメイン名を指定することができます。これは、カスタムドメイン名が Zone Apex であっても、Route 53 がカスタムドメイン名をルーティングできることを意味します。詳細については、Amazon Route 53 デベロッパーガイドの「エイリアスリソースレコードセットと非エイリアスリソースレコードセットの選択」を参照してください。

    A レコードエイリアスを使用するときも、ドメイン名のマッピングは Route 53 内でのみ起こるため、基盤となる CloudFront ディストリビューションのドメイン名で公開する必要はなくなります。これらの理由により、可能な限りは Route 53 A レコードエイリアスの使用をお勧めします。

API のためのカスタムドメイン名のセットアップには、API Gateway コンソールの使用に加えて、API Gateway REST API、AWS CLI、または AWS SDK の 1 つを使用できます。例として、次の手順では REST API 呼び出しを使用したステップを簡単に示しています。

API Gateway REST API を使用してカスタムドメイン名を設定するには

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

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

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

  3. 前の手順を実行して、A レコードエイリアスをセットアップして CloudFront ディストリビューション名にカスタムドメイン名をマッピングします。

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

CloudTrail におけるカスタムドメイン名の作成のログ記録

アカウントによる API Gateway コールのログ記録に CloudTrail が有効になっている場合、API Gateway は、API のカスタムドメイン名が作成または更新されたときに、関連付けられた CloudFront ディストリビューションの更新を記録します。これらの 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-north-1 394634713161
ap-northeast-1 969236854626
ap-northeast-2 020402002396
ap-southeast-1 195145609632
ap-southeast-2 798376113853
ap-south-1 507069717855
ap-east-1 174803364771
sa-east-1 287228555773
me-south-1 855739686837

カスタムドメイン名をホスト名として API のベースパスマッピングを設定する

複数の API のホスト名として、単一のカスタムドメイン名を使用できます。カスタムドメイン名でベースパスマッピングを設定することにより、これを実現できます。ベースパスマッピングにより、カスタムドメインの API は、カスタムドメイン名と関連するベースパスの組み合わせによりアクセス可能になります。

たとえば、PetStore という名前の API と PetShop という名前の別の API を作成し、api.example.com のカスタムドメイン名を API Gateway で設定した場合、PetStore API の URL を、https://api.example.com または https://api.example.com/myPetStore として設定できます。PetStore API は、カスタムドメイン名 myPetStore で、空の文字列または api.example.com というベースパスと関連付けられます。同様に、yourPetShop API にベースパス PetShop を割り当てることができます。URL https://api.example.com/yourPetShop は、PetShop API のルート URL となります。

API にベースパスを設定する前に、「」のステップを完了してくださいAPI Gateway API のエッジ最適化カスタムドメイン名を設定する

以下の手順では、カスタムドメイン名から 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. [保存] を選択します。

また、カスタムドメイン名をホスト名として使用して API のベースパスマッピングをセットアップするために、API Gateway REST API、AWS CLI、または AWS SDK の 1 つを呼び出すこともできます。例として、次の手順では REST API 呼び出しを使用したステップを簡単に示しています。

API Gateway REST API を使用して API のベースパスマッピングを設定するには

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

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

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

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

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

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

ドメイン名の証明書のローテーションを行うには、API Gateway コンソール、API Gateway REST API、AWS CLI、または AWS SDK のいずれかを使用できます。

API Gateway コンソールを使って ACM にインポートした、期限切れとなる証明書を更新するには

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

  2. API Gateway コンソールに戻ります。

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

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

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

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

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

    注記

    プロセスが終了するには約40分かかります。更新完了後、[ACM 証明書] の隣にある対面矢印アイコンを選択すると、オリジナルの証明書に戻せます。

カスタムドメイン名にインポートした証明書をプログラムを使って更新する方法として、API Gateway REST API を使用するステップを簡単に説明します。

API Gateway REST APIを使用してインポートした証明書を更新する

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

カスタムドメイン名を使用して API を呼び出す

カスタムドメイン名で API を呼び出すことは、正しい URL を使用する場合、デフォルトのドメイン名で API を呼び出すことと同じです。

次の例では、指定されたリージョン (udxjef) で、指定されたカスタムドメイン名 (qf3duz) の 2 つの API (us-east-1 および api.example.com) のデフォルトの URL と対応するカスタム URL を比較し、違いを示します。

デフォルトおよびカスタムドメイン名を持つ API のルート URL
API ID ステージ デフォルト URL 基本パス カスタム URL
udxjef pro https://udxjef.execute-api.us-east-1.amazonaws.com/pro /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」を参照してください。