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 Custom Domain Name] を選択します。

    1. [New Custom Domain Name] で、[Domain Name] にドメイン名 (api.example.com など) を入力します。

      注記

      カスタムドメイン名にはワイルドカード文字 (*) を使用しないでください。ワイルドカード文字は、API Gateway コンソール (または AWS CLI) では受け入れられ、CloudFront ディストリビューションにマッピングされますが、API Gateway ではサポートされていません。ただし、ワイルドカード証明書は使用できます。

    2. [ACM 証明書] リストから新しい証明書を選択します。

    3. [マッピング追加] を選び、[ベースパスマッピング] でベースパス ([パス]) を設定し、特定のステージ (ドロップダウンリストの [送信先] から選択) で API がデプロイするようにします。カスタムドメイン名が作成されたらマッピングするベースパスも設定できます。詳細については、「ホスト名としてカスタムドメイン名で API のベースパスマッピングを設定する」を参照してください。

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

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

    注記

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

  5. このステップでは、Amazon Route 53 を DNS プロバイダーの例として使用して、カスタムドメイン名を関連する CloudFront ディストリビューション名にマッピングするために、インターネットのドメインの A レコードのエイリアスを設定する方法を示します。この手順は、他の DNS プロバイダーに適用することができます。

    1. Route 53 コンソールにサインインします。

    2. カスタムドメインの A-IPv4 address レコードセットを作成します (例: api.example.com)。A レコードは IP4 アドレスにカスタムドメイン名をマッピングします。

    3. [Alias] で [Yes] を選択し、[d3boq9ikothtgw.cloudfront.netAlias Target] に CloudFront ドメイン名 (例: ) を入力して、[Create] を選択します。ここで A レコードのエイリアスは指定された CloudFront ドメイン名にカスタムドメイン名をマッピングします。このドメイン自体は IP4 アドレスにマッピングされます。

       API Gateway で API のカスタムドメイン名の DNS レコードのエイリアスを設定する

    ヒント

    [Alias Hosted Zone ID] は、指定した [Alias Target] のホストゾーンを識別します。[Alias Target] に有効なドメイン名を入力すると、Route 53 コンソールによって自動的に値が入力されます。AWS CLI を使用する場合など、Route 53 コンソールを使用せずに A レコードのエイリアスを作成するには、必要なホストゾーン ID を指定する必要があります。すべての CloudFront ディストリビューションドメイン名において、ホストゾーン ID の値は常に Z2FDTNDATAQYW2 です (「AWS のリージョンとエンドポイント」の CloudFront の項で説明しています)。

    ほとんどの DNS プロバイダーでは、カスタムドメイン名は、CNAME リソースレコードセットとしてホストゾーンに追加されます。CNAME レコードの名前では、[Domain Name] に先ほど入力したカスタムドメイン名 (api.example.com など) を指定します。CNAME レコードの値では、CloudFront ディストリビューションのドメイン名を指定します。ただし、カスタムドメインが Zone Apex である (つまり、api.example.com ではなく 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 Gateway コンソールの使用に加えて、API にカスタムドメイン名を設定するために、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 ディストリビューション名にカスタムドメイン名をマッピングするために、前の手順のステップ 6 を実行します。

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

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

アカウントで作成された API Gateway 呼び出しのログ作成のために CloudTrail が有効な場合に、API のカスタムドメイン名が作成または更新されたとき、API Gateway は関連する CloudFront ディストリビューションの更新のログを作成します。これらの CloudFront ディストリビューションは API Gateway が所有しているので、これらのレポートされた CloudFront ディストリビューションは、API 所有者のアカウント ID ではなく、以下のリージョン固有の API Gateway アカウント ID の1つにより識別されます。

カスタムドメイン名と関連付けられた CloudFront ディストリビューションのリージョン固有の API Gateway アカウント ID

サービス対象 アカウント ID
us-east-1 392220576650
us-east-2 718770453195
us-west-1 968246515281
us-west-2 109351309407
eu-west-1 631144002099
eu-west-2 544388816663
eu-central-1 474240146802
ap-northeast-1 969236854626
ap-northeast-2 020402002396
ap-southeast-1 195145609632
ap-southeast-2 798376113853

ホスト名としてカスタムドメイン名で 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 は、カスタムドメイン名 api.example.com で、空の文字列または myPetStore というベースパスと関連付けられます。同様に、PetShop API にベースパス yourPetStore を割り当てることができます。URL https://api.example.com/yourPetStore は、PetShop API のルート URL となります。

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

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

  1. アカウントの利用可能な [Custom Domain Names] の一覧からカスタムドメイン名を選択します。

  2. [Show Base Path Mappings] または [Edit] を選択します。

  3. [Add mapping] を選択します。

  4. (オプション) [パス] にベースパス名を入力し、[送信先] から API を選択した後、ステージを選択します。

    注記

    [Destination] の一覧はアカウントの下でデプロイされた API を示します。

  5. [Save] を選択して API のベースパスマッピングを終了します。

注記

マッピングをその作成後に削除するには、削除するマッピングの横にあるゴミ箱のアイコンを選択します。

加えて、ホスト名としてカスタムドメイン名で 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 証明書] から希望する証明書を選択します。

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

    注記

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

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

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

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

カスタムドメイン名で API を呼び出す

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

次の例では、指定されたリージョン (us-east-1) で指定されたカスタムドメイン名 (api.example.com) の 2 つの API (udxjef および qf3duz) のデフォルトの 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 Custom SSL」を参照してください。