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

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

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

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

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

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

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

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

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

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

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'} \ ]

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

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

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" } }