将自定义域名迁移至其他 API 端点 - Amazon API Gateway

将自定义域名迁移至其他 API 端点

您可以在边缘优化和区域终端节点之间迁移自定义域名。首先,您向自定义域名的现有 endpointConfiguration.types 列表添加新终端节点配置类型。接下来,您设置 DNS 记录,将自定义域名指向新预配置的终端节点。最后,您需要删除过时的自定义域名配置数据。

注意事项

下面是在区域 API 端点和边缘优化的 API 端点之间迁移自定义域名的注意事项。

  • 边缘优化的自定义域名需要美国东部(弗吉尼亚州北部)- us-east-1 区域的 ACM 提供的证书。此证书分发到所有地理位置。

  • 区域自定义域名需要托管 API 的同一区域的 ACM 提供的证书。您可以从 API 本地的区域请求新 ACM 证书,将不在 us-east-1 区域中的边缘优化自定义域名迁移到区域自定义域名。

  • 边缘优化自定义域名和区域自定义域名之间的迁移最多可能需要 60 秒才能完成。迁移时间还取决于您何时更新 DNS 记录。

迁移自定义域名

以下过程说明了如何将边缘优化的自定义域名迁移到区域自定义域名。

AWS Management Console
  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 在主导航窗格中,选择自定义域名

  3. 选择边缘优化的自定义域名。

  4. 配置选项卡上,对于端点配置,选择编辑

  5. 选择添加区域端点

  6. 对于 ACM 证书,选择一个证书。

    区域证书必须与区域 API 位于相同区域。

  7. 选择保存

  8. 设置 DNS 记录以将区域自定义域名指向此区域主机名。有关更多信息,请参阅配置 Route 53 以将流量路由到 API Gateway

  9. 确认 DNS 配置使用了正确的端点后,删除边缘优化的端点配置。选择您的自定义域名,然后对于端点配置(边缘优化),选择删除

  10. 确认您的选择并删除端点。

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

对于迁移后的区域自定义域名,生成的 regionalDomainName 属性返回区域 API 主机名。您必须设置 DNS 记录以将区域自定义域名指向此区域主机名。这使绑定到自定义域名的流量可以路由到区域主机。

设置 DNS 记录后,您可以删除边缘优化的自定义域名。以下 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 Management Console
  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 在主导航窗格中,选择自定义域名

  3. 选择边缘优化的自定义域名。

  4. 配置选项卡上,对于端点配置,选择编辑

  5. 选择添加边缘优化的端点

  6. 对于 ACM 证书,选择一个证书。

    边缘优化的域证书必须在 us-east-1 区域中创建。

  7. 选择保存

  8. 设置 DNS 记录以将边缘优化自定义域名指向此边缘优化主机名。有关更多信息,请参阅配置 Route 53 以将流量路由到 API Gateway

  9. 确认 DNS 配置使用了正确的端点后,删除区域端点配置。选择您的自定义域名,然后对于端点配置(区域),选择删除

  10. 确认您的选择并删除端点。

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:738575810317: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 端点类型:以下 update-domain-name 命令显示了如何删除区域端点类型:

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