

# 将自定义域名迁移至 API Gateway 中的其他 API 端点
<a name="apigateway-regional-api-custom-domain-migrate"></a>

 您可以在边缘优化和区域端点之间迁移自定义域名。您无法将公共自定义域名迁移到私有自定义域名。首先，您向自定义域名的现有 `endpointConfiguration.types` 列表添加新端点配置类型。接下来，您设置 DNS 记录，将自定义域名指向新预配置的端点。最后，移除过时的自定义域名端点。

## 注意事项
<a name="apigateway-regional-api-custom-domain-migration-considerations"></a>

下面是在区域 API 端点和边缘优化的 API 端点之间迁移自定义域名的注意事项：
+ 边缘优化的自定义域名需要美国东部（弗吉尼亚州北部）- `us-east-1` 区域的 ACM 提供的证书。此证书分发到所有地理位置。
+ 区域自定义域名需要托管 API 的同一区域的 ACM 提供的证书。您可以从 API 本地的区域请求新 ACM 证书，将不在 `us-east-1` 区域中的边缘优化自定义域名迁移到区域自定义域名。
+ 边缘优化自定义域名和区域自定义域名之间的迁移最多可能需要 60 秒才能完成。迁移时间还取决于您何时更新 DNS 记录。
+ 只有将端点访问模式设置为 `BASIC` 时，才能添加其他端点配置。拥有两项端点配置后，您将无法再更改端点访问模式。有关更多信息，请参阅 [端点访问模式](apigateway-security-policies.md#apigateway-security-policies-endpoint-access-mode)。
+ 如果您的自定义域名使用以 `SecurityPolicy_` 开头的安全策略，则在添加新的端点配置类型时，两种端点类型的端点访问模式将是相同的，并且您必须为新的端点配置类型选择以 `SecurityPolicy_` 开头的安全策略。

## 迁移自定义域名
<a name="apigateway-api-custom-domain-names-migrate-procedure"></a>

**注意**  
要完成迁移，请务必从自定义域名中移除过时的端点。

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

------
#### [ AWS 管理控制台 ]

1. 通过以下网址登录到 Amazon API Gateway 控制台：[https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)。

1. 从主导航窗格中选择**自定义域名**。

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

1. 对于**端点配置**，请选择**编辑**。

1. 选择**添加区域端点**。

1. 对于 **ACM 证书**，选择一个证书。

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

1. 选择**保存更改**。

1. 设置 DNS 记录以将区域自定义域名指向此区域主机名。有关更多信息，请参阅[配置 Route 53 以将流量路由到 API Gateway](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html)。

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

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

------
#### [ AWS CLI ]

使用以下 [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html) 命令将边缘优化的自定义域名迁移到区域自定义域名：

```
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 位于相同区域。

输出将与以下内容类似：

```
{
    "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](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html) 命令删除边缘优化的自定义域名：

```
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 管理控制台 ]

1. 通过以下网址登录到 Amazon API Gateway 控制台：[https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)。

1. 从主导航窗格中选择**自定义域名**。

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

1. 对于**端点配置**，请选择**编辑**。

1. 选择**添加区域端点**。

1. 对于 **ACM 证书**，选择一个证书。

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

1. 对于**安全策略**，请选择以 `SecurityPolicy_` 开头的安全策略。

1. 对于**端点访问模式**，请选择**基本**。

1. 选择**保存更改**。

1. 设置 DNS 记录以将区域自定义域名指向此区域主机名。有关更多信息，请参阅[配置 Route 53 以将流量路由到 API Gateway](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html)。

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

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

------
#### [ AWS CLI ]

使用以下 [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html) 命令将边缘优化的自定义域名迁移到区域自定义域名：

```
aws apigateway update-domain-name \
    --domain-name 'api.example.com' \
    --patch-operations  '[ 
        { "op":"add", "path": "/endpointConfiguration/types","value": "REGIONAL" },
        { "op":"replace", "path": "/securityPolicy", "value":"SecurityPolicy_TLS13_1_3_2025_09"},
        { "op":"add", "path": "/regionalCertificateArn", "value": "arn:aws:acm:us-west-2:123456789012:certificate/cd833b28-58d2-407e-83e9-dce3fd852149" }
      ]'
```

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

输出将与以下内容类似：

```
{
    "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"
        ]
    },
    "securityPolicy": "SecurityPolicy_TLS13_1_3_2025_09",
    "endpointAccessMode": "BASIC",
    "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](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html) 命令删除边缘优化的自定义域名：

```
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 管理控制台 ]

1. 通过以下网址登录到 Amazon API Gateway 控制台：[https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)。

1. 在主导航窗格中，选择**自定义域名**。

1. 选择区域自定义域名

1. 对于**端点配置**，请选择**编辑**。

1. 选择**添加边缘优化的端点**。

1. 对于 **ACM 证书**，选择一个证书。

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

1. 选择**保存**。

1. 设置 DNS 记录以将边缘优化自定义域名指向此边缘优化主机名。有关更多信息，请参阅[配置 Route 53 以将流量路由到 API Gateway](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html)。

1. 确认 DNS 配置使用了正确的端点后，删除区域端点配置。选择您的自定义域名，然后对于**区域端点配置**，请选择**删除**

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

------
#### [ AWS CLI ]

使用以下 [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html) 命令将区域自定义域名迁移到边缘优化的自定义域名：

```
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` 区域中创建。

输出将与以下内容类似：

```
{
    "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](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html) 命令删除区域端点类型：

```
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": "api.example.com",
    "endpointConfiguration": {
        "types": "EDGE"
    }
}
```

------