AWS CNameAlreadyExists错误处理方法
在部署Serverless应用的时候,尤其是在重做一些项目的时候,涉及到自定义域名的部分,容易遇到CNameAlreadyExists这个错误
CNAMEAlreadyExists: One or more of the CNAMEs you provided are already associated with a different resource
这个错误让我抓狂过好几次,所以我打算把解决方案记录下来。
错误原因分析
出现这个错误,一般是之前确实有用过这个域名。但是现在还没有释放掉。
常见的域名占用项有:
- CloudFront
- Route53
- API Gateway
- Cognito
可能还会有一些其它的服务也能占用自定义域名,类似的服务都需要一一排查。
下面简单介绍下上面几个服务的自定义域名配置路径。
CloudFront自定义域名
进入"CloudFront->分配"页签,可能查看到当前已经存在的CloudFront分配表格。在表格中有一列是CNAMEs,可在其中查看指定域名是否被占用。
Route53 域名或CNAME设置
在Route53中选中指定的域名,进入其DNS配置页面。查看报错的自定义域名是否在其中已有分配。
API Gateway
一些Lambda函数中可设置关联的自定义域名,这些信息会存储在API Gateway中。
可进入到API Gateway页面之后,在『自定义域名』中查看。
Cognito
Cognition是AWS提供的用户验证服务,它也有自定义域名的功能。
目前已经发现的就是这些地方,结合之前自己在AWS中使用过的服务记录,依次排查一遍,应能发现问题。
备注
按上面的操作步骤修改完成之后,并不会立刻生效。AWS有一定的缓存时间,可过10~30分钟再重试下看看。