Amazon API Gateway
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

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

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

使用 API Gateway 控制台迁移区域和边缘优化域名

要使用 API Gateway 控制台将区域自定义域名迁移到边缘优化自定义域名以及反之,请使用以下步骤。

使用 API Gateway 控制台迁移区域或边缘优化自定义域名

  1. 登录到 API Gateway 控制台并在主导航窗格中选择 Custom Domain Names (自定义域名)

  2. Custom Domain Names (自定义域名) 中选择现有域名,然后选择编辑

  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 命令以删除旧终端节点类型。

将边缘优化自定义域名迁移为区域

要将边缘优化自定义域名迁移为区域自定义域名,请调用 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 记录之后,您可以调用 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" } }