

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

# 为您的 VPC 莱迪思服务配置自定义域名
<a name="service-custom-domain-name"></a>

当您创建新服务时，VPC Lattice 会使用以下语法为该服务生成一个唯一的完全限定域名 (FQDN)。

```
service_name-service_id.partition_id.vpc-lattice-svcs.region.on.aws
```

但是，VPC Lattice提供的域名并不容易让您的用户记住。您可以向用户提供自定义域名更简单、更直观 URLs 。如果您希望为服务使用自定义域名，例如 `www.parking.example.com` 而不是 VPC Lattice 生成的 DNS 名称，可以在创建 VPC Lattice 服务时进行配置。当客户端使用您的自定义域名发出请求时，DNS 服务器会将其解析为 VPC Lattice 生成的域名。

**先决条件**
+ 您的服务必须有一个注册域名。如果您还没有注册域名，可以通过 Amazon Route 53，或任何其他商业注册商来注册一个域名。
+ 要接收 HTTPS 请求，必须在 AWS Certificate Manager中提供自己的证书。VPC Lattice 不支持默认证书作为后备。因此，如果您不提供与您的自定义域名相对应的 SSL/TLS 证书，则与您的自定义域名的所有 HTTPS 连接都将失败。有关更多信息，请参阅 [VPC Lattice 自带证书（BYOC）](service-byoc.md)。

**限制和注意事项**
+ 一项服务不能有多个自定义域名。
+ 创建服务后，您无法修改自定义域名。
+ 自定义域名对于服务网络必须是唯一的。这意味着无法使用同一服务网络中已存在的自定义域名（针对其他服务）创建服务。

以下过程说明如何为您的服务配置自定义域名。

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

**为您的服务配置自定义域名**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中的 **VPC Lattice** 下，选择**服务**。

1. 选择**创建服务**。您将导航到**步骤 1：创建服务**。

1. 在**自定义域配置**部分，选择**指定自定义域配置**。

1. 输入您的自定义域名。

1. 要处理 HTTPS 请求，请在自定义 SSL/TLS 证书中选择与您的自定义域名相匹配的** SSL/TLS 证书**。如果您还没有证书，或者现在不想添加证书，可以在创建 HTTPS 侦听器时添加证书。但是，如果没有证书，您的自定义域名将无法提供 HTTPS 请求。有关更多信息，请参阅 [添加 HTTPS 侦听器](https-listeners.md#add-https-listener)。

1. 添加用于创建服务的所有其他信息后，选择**创建**。

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

**为您的服务配置自定义域名**  
使用 [create-service](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/create-service.html) 命令。

```
aws vpc-lattice create-service --name service_name --custom-domain-name your_custom_domain_name --type https --certificate-arn arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012
```

在上面的命令中，对于 `--name`，输入服务的名称。对于 `--custom-domain-name`，输入服务的域名，例如 `parking.example.com`。对于 `--certificate-arn`，在 ACM 中输入证书的 ARN。证书 ARN 可在您的 AWS Certificate Manager账户中找到。

------

## 将自定义域名与您的服务关联
<a name="dns-associate-custom"></a>

首先，如果尚未注册域名，请注册您的自定义域名。Internet 上的域名由 Internet 名称和数字地址分配机构 (ICANN) 管理。您需要通过*域名注册商* (ICANN 认可的管理域名注册的组织) 注册域名。您的注册商的网站上会提供关于注册域名的详细说明和定价信息。有关更多信息，请参阅以下资源：
+ 要使用 Amazon Route 53 注册域名，请参阅 *Amazon Route 53 开发人员指南*中的[使用 Route 53 注册域名](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar.html)。
+ 有关获得认可的注册商的列表，请参阅[获得认可的注册商目录](http://www.internic.net/regist.html)。

接下来，使用您的 DNS 服务（例如域名注册商）创建记录，将查询路由到您的服务。有关更多信息，请参阅您的 DNS 服务的文档。或者，您可以使用 Route 53 作为您的 DNS 服务。

如果您使用的是 Route 53，则可以使用别名记录或 CNAME 记录将查询路由到您的服务。我们建议您使用别名记录，因为您可以在 DNS 命名空间的顶级节点（也称为区域顶点）创建别名记录。

如果您使用的是 Route 53，则必须先创建一个*托管区*，其中包含有关如何在互联网上为域路由流量的信息。创建私有或公有托管区域后，请创建一条记录，以便将您的自定义域名（例如`parking.example.com`）映射到 VPC Lattice 自动生成的域名。`my-service-02031c045478f6ddf1.7d67968.vpc-lattice-svcs.us-west-2.on.aws`如果没有此映射，您的自定义域名将无法在 VPC Lattice 中使用。

以下过程说明如何使用 Route 53 创建私有或公共托管区域

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

要创建别名记录以使用 Route 53 将查询路由到您的服务，请参阅将[流量路由到 Amazon VPC Lattice 服务域终端节点](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-vpc-lattice-service.html)。

使用莱迪思为服务生成的VPC域名，`my-service-02031c045478f6ddf1.7d67968.vpc-lattice-svcs.us-west-2.on.aws`例如作为**值**。您可以在VPC Lattice控制台的服务页面上找到这个自动生成的域名。

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

**在您的托管区域中创建别名记录**

1. 获取莱迪思为您的服务生成的 VPC 域名（例如`my-service-02031c045478f6ddf1.7d67968.vpc-lattice-svcs.us-west-2.on.aws`）。

1. 要设置别名，请使用以下命令。

   ```
   aws route53 change-resource-record-sets --hosted-zone-id your-hosted-zone-ID --change-batch file://~/Desktop/change-set.json
   ```

   对于 `change-set.json` 文件，使用以下 JSON 示例中的内容创建一个 JSON 文件，然后将其保存在本地计算机上。将*file://\$1/Desktop/change-set.json*上面的命令替换为保存在本地计算机中的 JSON 文件的路径。注意，以下 JSON 中的“类型”可以是 A 或 AAAA 记录类型。

   ```
   {
       "Comment": "my-custom-domain-name.com alias",
       "Changes": [
           {
               "Action": "CREATE",
               "ResourceRecordSet": {
                   "Name": "my-custom-domain-name.com",
                   "Type": "alias-record-type",
                   "AliasTarget": {
                       "HostedZoneId": "your-hosted-zone-ID",
                       "DNSName": "lattice-generated-domain-name",
                       "EvaluateTargetHealth": true
                   }
               }   
           }
       ] 
   }
   ```

------