将自定义域名迁移至不同 API 终端节点 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将自定义域名迁移至不同 API 终端节点

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

规划迁移时,请记住对于边缘优化的 API 的自定义域名,ACM 提供的必需证书来自美国东部(弗吉尼亚北部)区域 (us-east-1)。此证书分发到所有地理位置。但是,对于区域 API,区域域名的 ACM 证书必须来自托管 API 的同一个区域。您可以先从 API 本地的区域请求新 ACM 证书,将不在 us-east-1 区域中的边缘优化自定义域名迁移到区域自定义域名。

在 API Gateway 中,最多可能需要 60 秒才能完成从边缘优化自定义域名与区域自定义域名之间的迁移。要让新创建的终端节点准备好接受流量,迁移时间还取决于您何时更新 DNS 记录。

使用 Amazon CLI 迁移自定义域名

要使用 Amazon 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" }

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

设置 DNS 记录之后,您可以调用 update-domain-name 的 Amazon 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 的 Amazon 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" } }