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

将自定义域名迁移至不同 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" } }