本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为您的 VPC 莱迪思服务配置自定义域名
当您创建新服务时,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 生成的域名。但是,只有当您将自定义域名映射到 VPC Lattice 生成的域名,并使用 CNAME 记录将查询路由到您的服务时,才会发生这种情况。有关更多信息,请参阅 将自定义域名与您的服务关联。
先决条件
-
您的服务必须有一个注册域名。如果您还没有注册域名,可以通过 Amazon Route 53,或任何其他商业注册商来注册一个域名。
-
要接收 HTTPS 请求,必须在 AWS Certificate Manager中提供自己的证书。VPC Lattice 不支持默认证书作为后备。因此,如果您不提供与自定义域名对应的 SSL/TLS 证书,则与您自定义域名的所有 HTTPS 连接都将失败。有关更多信息,请参阅 VPC Lattice 自带证书(BYOC)。
限制和注意事项
-
一项服务不能有多个自定义域名。
-
创建服务后,您无法修改自定义域名。
-
自定义域名对于服务网络必须是唯一的。这意味着无法使用同一服务网络中已存在的自定义域名(针对其他服务)创建服务。
要为您的服务配置自定义域名,请使用 AWS Management Console
打开位于 https://console.aws.amazon.com/vpc/
的 Amazon VPC 控制台。 -
在导航窗格中的 VPC Lattice 下,选择服务。
-
选择创建服务。您将导航到步骤 1:创建服务。
-
在自定义域配置部分,选择指定自定义域配置。
-
输入您的自定义域名。
-
要提供 HTTPS 请求,请在自定义 SSL/TLS 证书中,选择与您自定义域名匹配的 SSL/TLS。如果您还没有证书,或者现在不想添加证书,可以在创建 HTTPS 侦听器时添加证书。但是,如果没有证书,您的自定义域名将无法提供 HTTPS 请求。有关更多信息,请参阅 添加 HTTPS 侦听器。
-
添加用于创建服务的所有其他信息后,选择创建。
要为您的服务配置自定义域名,请使用 AWS CLI
使用 create-service
aws vpc-lattice create-service --name
service_name
--custom-domain-nameyour_custom_domain_name
--type https --certificate-arnarn: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账户中找到。
如果您在 AWS Certificate Manager (ACM) 中没有自己的 SSL/TLS 证书,则可以在设置自定义域名之前创建或导入一个。但是,只有当您希望使用自定义域名提供 HTTPS 请求时,才需要证书。有关更多信息,请参阅 VPC Lattice 自带证书(BYOC)。
将自定义域名与您的服务关联
首先,如果尚未注册域名,请注册您的自定义域名。Internet 上的域名由 Internet 名称和数字地址分配机构 (ICANN) 管理。您需要通过域名注册商 (ICANN 认可的管理域名注册的组织) 注册域名。您的注册商的网站上会提供关于注册域名的详细说明和定价信息。有关更多信息,请参阅以下资源:
-
要使用 Amazon Route 53 注册域名,请参阅 Amazon Route 53 开发人员指南中的使用 Route 53 注册域名。
-
有关获得认可的注册商的列表,请参阅获得认可的注册商目录
。
然后,使用 DNS 服务(如域名注册商)创建一个 CNAME 记录,将查询路由到您的服务。有关更多信息,请参阅您的 DNS 服务的文档。或者,您可以使用 Route 53 作为您的 DNS 服务。
如果您使用的是 Route 53,则必须先创建一个托管区,其中包含有关如何在互联网上为域路由流量的信息。创建私有或公有托管区后,创建一个 CNAME 记录,以将您的自定义域名(例如 parking.example.com
)映射到 VPC Lattice 自动生成的域名(例如 my-service-02031c045478f6ddf1.7d67968.vpc-lattice-svcs.us-west-2.on.aws
)。如果没有此映射,您的自定义域名将无法在 VPC Lattice 中使用。有关更多信息,请参阅《Amazon Route 53 开发人员指南》中的使用 Amazon Route 53 控制台创建记录。此外,您可以参考以下步骤创建托管区和 CNAME 记录,将您的自定义域名映射到 VPC Lattice 端点。
要使用 Amazon Route 53 控制台创建带有 CNAME 记录的私有或公有托管区
打开 Route 53 控制台,网址为https://console.aws.amazon.com/route53/
。 -
在导航窗格中,选择托管区,然后创建托管区。
-
对于域名,选择要用于将流量路由到 VPC Lattice 服务的托管区名称。例如,如果您的自定义域名是
parking.example.com
(http://parking.example.com/),则托管区的域名为example.com
(http://example.com/),也称为 apex 域名。然后,您可以为此托管区创建 CNAME 记录,将流量路由到 VPC Lattice 服务。注意:创建托管区后,无法更改其名称。 -
对于类型,根据需要选择私有托管区或公有托管区。
-
选择区域,然后选择要与此托管区关联的 VPC 的 VPC ID。
-
如有必要,添加标签,然后选择创建托管区。创建后,您的托管区将列在托管区下。
-
要在您刚刚创建的托管区中创建 CNAME 记录,请选择托管区,然后选择创建记录。
-
在创建记录下指定以下值:
-
对于记录名称,输入要用作自定义域名的名称。如果要使用
parking.example.com
(http://acme.example.com/)作为自定义域名,请输入parking
*。这意味着您要输入子域名称parking
,但不包括托管区域名example.com
(http://example.com/)。 -
对于记录类型,选择 CNAME。
-
关闭别名。
-
对于值,输入 VPC Lattice 为您的服务生成的域名(例如
my-service-02031c045478f6ddf1.7d67968.vpc-lattice-svcs.us-west-2.on.aws
)。您可以在服务页面的 VPC Lattice 控制台中找到这个自动生成的域名。如果使用 AWS CLI,则create-service
或list-services
命令的输出将返回此自动生成的域名。 -
对于 TTL(秒),接受默认值 300。
-
对于路由策略,选择适用的路由策略。有关路由策略的信息,请参阅《Amazon Route 53 开发人员指南》中的选择路由策略。
-
-
选择创建记录。
更改通常在 60 秒内传播到所有 Route 53 服务器。传播完成后,您就可以使用自定义域名将流量路由到服务。
要在托管区域中创建别名记录,请使用 AWS CLI
-
运行
get-service
命令,获取 VPC Lattice 为您的服务生成的域名(例如my-service-02031c045478f6ddf1.7d67968.vpc-lattice-svcs.us-west-2.on.aws
)和托管区 ID。 要设置别名,请使用以下命令。
aws route53 change-resource-record-sets --hosted-zone-id
hosted-zone-id-for-your-service-domain
--change-batchfile://~/Desktop/change-set.json
对于
change-set.json
文件,使用以下 JSON 示例中的内容创建一个 JSON 文件,然后将其保存在本地计算机上。将file://~/Desktop/change-set.json
上面的命令替换为保存在本地计算机中的 JSON 文件的路径。注意,以下 JSON 中的“类型”可以是 A 或 AAAA 记录类型。{ "Comment": "my-service-domain.com alias", "Changes": [ { "Action": "CREATE", "ResourceRecordSet": { "Name": "
my-custom-domain-name.com
", "Type": "alias-record-type
", "AliasTarget": { "HostedZoneId": "hosted-zone-id-for-your-service-domain
", "DNSName": "lattice-generated-domain-name
", "EvaluateTargetHealth": true } } } ] }