以下过程可以都在AWS提供的服务中,比如Route 53中完成,也可以选择第三方的域名服务商。我这里在Google Domains中管理域名,但使用serverless将API部署到AWS。
指定AWS域名服务器
如果使用第三方域名服务商,就不需要这一步。
在AWS Route53中,创建一个public hosted zone。
然后复制对应的NS,其格式类似于这样:
bash
ns-xxx.awsdns-xx.net.
ns0xxxx.awsdns-xx.co.uk.
ns-xxxx.awsdns-xx.org.
ns-xxx.awsdns-xx.com.
进入自己的域名服务器提供商地址,比如:namesilo,使用上面的NS来设定自定义域名服务器。
创建certificate
进入AWS Certificate Manager,
- 在添加域名时选择:api.lcoding.club
- 选择DNS validation。按照要求在Google Domains中创建一个CNAME
很快,AWS Certificate Manager就能检测到这个变化。通过后会有如下提示:

image
更新serverless项目中的配置
首先安装依赖库:
bash
npm install --save-dev serverless-domain-manager
更新serverless.yml:
yaml
plugins:
- serverless-domain-manager
还有:
yaml
custom:
customDomain:
domainName: api.lcoding.club
basePath: ''
stage: ${self:provider.stage}
createRoute53Record: false
运行:
bash
sls create_domain
等域名记录更新完毕后,运行:
bash
sls deploy
新发布的API就能够通过api.lcoding.club访问了。
参考资料
https://www.serverless.com/blog/serverless-api-gateway-domain/
https://csdcorp.com/blog/coding/custom-domains-for-aws-api-gateway-without-route-53/