Amazon API Gateway
開発者ガイド

カスタムドメイン名を別の API エンドポイントに移行する

エッジ最適化のエンドポイントとリージョンのエンドポイントの間で、カスタムドメイン名を移行できます。まず、新しいエンドポイント設定タイプをカスタムドメイン名の既存の endpointConfiguration.types リストに追加します。次に、カスタムドメイン名が、新しくプロビジョンされたエンドポイントを参照するように、DNS レコードを設定します。オプションで最後に、不要なカスタムドメイン名設定データを削除します。

移行を計画するとき、エッジ最適化 API のカスタムドメイン名の場合は、ACM によって提供される必須の証明書が 米国東部 (バージニア北部) リージョン (us-east-1) からの証明書であることが必要です。この証明書はすべての地理的場所に配布されます。ただし、リージョン API の場合、リージョンのドメイン名の ACM 証明書が、API をホストする同じリージョンからの証明書であることが必要です。us-east-1 リージョンにないエッジ最適化のカスタムドメイン名をリージョンのカスタムドメイン名に移行するには、まず、API のローカルリージョンに新しい ACM 証明書をリクエストする必要があります。

API Gateway でエッジ最適化のカスタムドメイン名とリージョンのカスタムドメイン名との間で移行が完了するまでに最大 60 秒かかることがあります。新しく作成されたエンドポイントがトラフィックを受け入れ可能になるまでの時間を含める場合、移行にかかる時間は DNS レコードの更新時期によっても異なります。

API Gateway コンソールを使用してリージョンおよびエッジ最適化のドメイン名を移行する

API Gateway コンソールを使用して、リージョンのカスタムドメイン名をエッジ最適化のカスタムドメイン名に、またはその逆に移行するには、以下の手順を実行します。

API Gateway コンソールを使用してリージョンまたはエッジ最適化のドメイン名を移行するには

  1. API Gateway コンソールにサインインし、プライマリナビゲーションペインで [カスタムドメイン名] を選択します。

  2. [カスタムドメイン名] で既存のドメイン名を選択してから、[編集] を選択します。

  3. 既存のエンドポイントタイプに応じて、以下の操作を行います。

    1. エッジ最適化のドメイン名の場合は、[Add Regional Configuration (リージョン設定の追加)] を選択します。

    2. リージョンのドメイン名の場合は、[Add Edge Configuration (エッジ設定を追加)] を選択します。

  4. ドロップダウンリストから証明書を選択します。

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

  6. [続行] を選択して、新しいエンドポイントの追加を確定します。

  7. DNS レコードを更新して、新しいドメイン名が、新しくプロビジョンされたターゲットドメイン名を参照するようにします。

AWS CLI を使用してカスタムドメイン名を更新する

AWS CLI を使用して、エッジ最適化のエンドポイントからリージョンのエンドポイントに、またはその逆にカスタムドメイン名を更新するには、update-domain-name コマンドを呼び出して新しいエンドポイントタイプを追加し、オプションで、update-domain-name コマンドを呼び出して古いエンドポイントタイプを削除します。

エッジ最適化のカスタムドメイン名からリージョンのカスタムドメイン名に更新する

エッジ最適化のカスタムドメイン名をリージョンのカスタムドメイン名に移行するには、以下のように AWS CLI の update-domain-name コマンドを呼び出します。

aws apigateway update-domain-name \ --domain-name 'api.example.com' \ --patch-operations [ \ { op:'add', path: '/endpointConfiguration/types',value: 'REGIONAL' }, \ { op:'add', path: '/regionalCertificateArn', value: 'arn:aws:acm:us-west-2:123456789012:certificate/cd833b28-58d2-407e-83e9-dce3fd852149' } \ ]

リージョン証明書リージョンの API と同じリージョンである必要があります。

成功のレスポンスには、200 OK ステータスコードと以下のような本文が含まれます。

{ "certificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a", "certificateName": "edge-cert", "certificateUploadDate": "2017-10-16T23:22:57Z", "distributionDomainName": "d1frvgze7vy1bf.cloudfront.net", "domainName": "api.example.com", "endpointConfiguration": { "types": [ "EDGE", "REGIONAL" ] }, "regionalCertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/cd833b28-58d2-407e-83e9-dce3fd852149", "regionalDomainName": "d-fdisjghyn6.execute-api.us-west-2.amazonaws.com" }

更新されたリージョンのカスタムドメイン名の場合、リージョン API のホスト名が regionalDomainName プロパティ値として返されます。リージョンのカスタムドメイン名がこのリージョンのホスト名を参照するように DNS レコードを設定する必要があります。これにより、カスタムドメイン名宛てのトラフィックがリージョンのホストにルーティングされるようになります。

DNS レコードが設定されたら、AWS CLI の update-domain-name コマンドを呼び出して、エッジ最適化のカスタムドメイン名を削除できます。

aws apigateway update-domain-name \ --domain-name api.example.com \ --patch-operations [ \ {op:'remove', path:'/endpointConfiguration/types', value:'EDGE'}, \ {op:'remove', path:'certificateName'}, \ {op:'remove', path:'certificateArn'} \ ]

リージョンのカスタムドメイン名をエッジ最適化のカスタムドメイン名に更新する

リージョンのカスタムドメイン名をエッジ最適化のカスタムドメイン名に移行するには、以下のように AWS CLI の update-domain-name コマンドを呼び出します。

aws apigateway update-domain-name \ --domain-name 'api.example.com' \ --patch-operations [ \ { op:'add', path:'/endpointConfiguration/types',value: 'EDGE' }, \ { op:'add', path:'/certificateName', value:'edge-cert'}, \ { op:'add', path:'/certificateArn', value: 'arn:aws:acm:us-east-1:123456789012:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a' } \ ]

エッジ最適化のドメイン証明書は us-east-1 リージョンに作成する必要があります。

成功のレスポンスには、200 OK ステータスコードと以下のような本文が含まれます。

{ "certificateArn": "arn:aws:acm:us-east-1:738575810317:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a", "certificateName": "edge-cert", "certificateUploadDate": "2017-10-16T23:22:57Z", "distributionDomainName": "d1frvgze7vy1bf.cloudfront.net", "domainName": "api.example.com", "endpointConfiguration": { "types": [ "EDGE", "REGIONAL" ] }, "regionalCertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/3d881b54-851a-478a-a887-f6502760461d", "regionalDomainName": "d-cgkq2qwgzf.execute-api.us-east-1.amazonaws.com" }

指定したカスタムドメイン名の場合、API Gateway はエッジ最適化 API のホスト名を distributionDomainName プロパティ値として返します。エッジ最適化のカスタムドメイン名がこのディストリビューションドメイン名を参照するように DNS レコードを設定する必要があります。これにより、エッジ最適化のカスタムドメイン名宛てのトラフィックがエッジ最適化の API ホスト名にルーティングされるようになります。

DNS レコードが設定されたら、カスタムドメイン名の REGION エンドポイントタイプを削除できます。

aws apigateway update-domain-name \ --domain-name api.example.com \ --patch-operations [ \ {op:'remove', path:'/endpointConfiguration/types', value:'REGIONAL'}, \ {op:'remove', path:'regionalCertificateArn'} \ ]

このコマンドの結果は以下のような出力になります。この出力には、エッジ最適化のドメイン名の設定データのみが含まれています。

{ "certificateArn": "arn:aws:acm:us-east-1:738575810317:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a", "certificateName": "edge-cert", "certificateUploadDate": "2017-10-16T23:22:57Z", "distributionDomainName": "d1frvgze7vy1bf.cloudfront.net", "domainName": "regional.haymuto.com", "endpointConfiguration": { "types": "EDGE" } }

API Gateway REST API を使用してカスタムドメイン名を更新する

API Gateway REST API を使用してエッジ最適化のカスタムドメイン名をリージョンのドメイン名に更新するには、または、リージョンのカスタムドメイン名からエッジ最適化のドメイン名に更新するには、domainname:update リンクリレーションと、オプションで domainname:delete リンクリレーションを使用します。

エッジ最適化のカスタムドメイン名からリージョンのカスタムドメイン名に更新する

エッジ最適化のカスタムドメイン名 (api.example.com) をリージョンのカスタムドメイン名に更新するには、API Gateway REST API の domainname:update を呼び出します。

PATCH /domainnames/api.example.com HTTP/1.1 Host: apigateway.us-west-2.amazonaws.com Content-Type: application/x-amz-json-1.0 X-Amz-Date: 20170511T214723Z Authorization: AWS4-HMAC-SHA256 Credential={ACCESS-KEY-ID}/20170511/us-west-2/apigateway/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature=d0abd98a2a06199531c2916b162ede9f63a247032cdc8e4d077216446d13103c { "patchOperations": [ { "op" : "add", "path" : "/endpointConfiguration/types", "value" : "REGIONAL" }, { "op" : "add", "path" : "/regionalCertificateArn", "value" : "arn:aws:acm:us-west-2:123456789012:certificate/c19332f1-3be7-457f-a245-e03a423084e7" } ] }

リージョン証明書リージョンの API と同じリージョンである必要があります。

成功のレスポンスには、200 OK ステータスコードと以下のような本文が含まれます。

{ "certificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a", "certificateName": "edge-cert", "certificateUploadDate": "2017-10-16T23:22:57Z", "distributionDomainName": "d1frvgze7vy1bf.cloudfront.net", "domainName": "api.example.com", "endpointConfiguration": { "types": [ "EDGE", "REGIONAL" ] }, "regionalCertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/c19332f1-3be7-457f-a245-e03a423084e7", "regionalDomainName": "d-gdisjchyn5.execute-api.us-west-2.amazonaws.com" }

リージョンのカスタムドメイン名の場合、リージョン API のホスト名が regionalDomainName プロパティ値として返されます。リージョンのカスタムドメイン名がこのリージョン API のホスト名を参照するように DNS レコードを設定する必要があります。これにより、リージョンのカスタムドメイン名宛てのトラフィックがリージョンの API ホストにルーティングされるようになります。

その後、エッジ最適化 API のカスタムドメイン名を削除できます。

PATCH /domainnames/{domain-name} HTTP/1.1 Host: apigateway.us-west-2.amazonaws.com Content-Type: application/x-amz-json-1.0 X-Amz-Date: 20170511T214723Z Authorization: AWS4-HMAC-SHA256 Credential={ACCESS-KEY-ID}/20170511/us-west-2/apigateway/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature=d0abd98a2a06199531c2916b162ede9f63a247032cdc8e4d077216446d13103c { "patchOperations": [ { "op" : "remove", "path" : "/endpointConfiguration/types" }, { "op" : "remove", "path" : "/certificateName" }, { "op" : "remove", "path" : "/certificateArn" } ] }

リージョンのドメイン名をエッジ最適化のドメイン名に更新する

リージョンのカスタムドメイン名をエッジ最適化のカスタムドメイン名に移行するには、以下のように API Gateway REST API から domainname:update を呼び出します。

PATCH /domainnames/{domain-name} HTTP/1.1 Host: apigateway.us-west-2.amazonaws.com Content-Type: application/x-amz-json-1.0 X-Amz-Date: 20170511T214723Z Authorization: AWS4-HMAC-SHA256 Credential={ACCESS-KEY-ID}/20170511/us-west-2/apigateway/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature=d0abd98a2a06199531c2916b162ede9f63a247032cdc8e4d077216446d13103c { "patchOperations" : [ { "op" : "add", "path" : "/endpointConfiguration/types", "value" : "EDGE" }, { "op": "add", "path": "/certificateName", "value": "edge-cert" },{ "op": "add", "path": "/certificateArn", "value": "arn:aws:acm:us-east-1:123456789012:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a" } ] }

エッジ最適化 API のカスタムドメイン名の場合、ACM 証明書は us-east-1 リージョンからの証明書であることが必要です。

成功のレスポンスには、200 OK ステータスコードと以下のような本文が含まれます。

{ "certificateArn": "arn:aws:acm:us-east-1:738575810317:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a", "certificateName": "edge-cert", "certificateUploadDate": "2017-10-16T23:22:57Z", "distributionDomainName": "d1frvgze7vy1bf.cloudfront.net", "domainName": "api.example.com", "endpointConfiguration": { "types": [ "EDGE", "REGIONAL" ] }, "regionalCertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/3d881b54-851a-478a-a887-f6502760461d", "regionalDomainName": "d-cgkq2qwgzf.execute-api.us-east-1.amazonaws.com" }

指定したカスタムドメイン名の場合、API Gateway は Amazon CloudFront ディストリビューションのドメイン名を返します。カスタムドメイン名がこのディストリビューションドメイン名を参照するように DNS レコードを設定することで、カスタムドメイン名へのトラフィックが指定された CloudFront ディストリビューションにルーティングされるようにする必要があります。

その後、リージョン API のカスタムドメイン名を削除できます。

PATCH /domainnames/{domain-name} HTTP/1.1 Host: apigateway.us-west-2.amazonaws.com Content-Type: application/x-amz-json-1.0 X-Amz-Date: 20170511T214723Z Authorization: AWS4-HMAC-SHA256 Credential={ACCESS-KEY-ID}/20170511/us-west-2/apigateway/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature=d0abd98a2a06199531c2916b162ede9f63a247032cdc8e4d077216446d13103c { "patchOperations": [ { "op" : "remove", "path" : "/endpointConfiguration/types" }, { "op" : "remove", "path" : "/regionalCertificateArn" } ] }

ここまでのリクエストへの成功のレスポンスには、200 OK ステータスコードと以下のような本文が含まれます。

{ "certificateArn": "arn:aws:acm:us-east-1:738575810317:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a", "certificateName": "edge-cert", "certificateUploadDate": "2017-10-16T23:22:57Z", "distributionDomainName": "d1frvgze7vy1bf.cloudfront.net", "domainName": "regional.haymuto.com", "endpointConfiguration": { "types": "EDGE" } }