在Api Gateway中,我创建了一个自定义域foo.example.com
,用CNAME
创建了一个Cloud Front分布。
我还想创建一个通配符域*.example.com
,但在尝试创建它时,CloudFront会抛出错误:
CNAMEAlreadyExistsException:您提供的一个或多个CNAME 已经与不同的资源相关联
AWS在其文档中指出:
但是,您可以添加通配符备用域名,例如 * .example.com,包括(与其重叠)非通配符备用域名,例如www.example.com。重叠域名 名称可以在相同的分布中,也可以在单独的分布中 两个发行版都是使用相同的AWS账户创建的。
所以我可能误解了这一点,是否有可能完成我所描述的内容?
答案 0 :(得分:5)
这很可能是您的API网关端点被配置为边缘优化而不是区域的副作用,因为使用边缘优化的API,是自动配置的隐藏CloudFront分配...但是,与您的API关联的CloudFront分配不归您的帐户所有,而是归属于与API网关关联的帐户。
边缘优化的API是通过由API网关创建和管理的CloudFront分配访问的端点。
这会产生冲突,阻止创建通配符分发。
不允许屏蔽通配符的子域跨越AWS账户边界,因为这可能会通过创建更具体的备用域名来允许通配符分配的匹配域的流量被劫持 - 但是,正如您在文档中指出的那样,你可以在自己的帐户内完成。
将您的API重新部署为区域而不是 Edge Optimized 是可能的解决方案。如果您仍需要边缘优化行为,则可以使用该特定子域创建另一个CloudFront分配以与API一起使用。这是允许的,因为您将拥有该分发。区域API仍可在全球范围内使用。
答案 1 :(得分:1)
是的。但请记住,为CloudFront分配设置的CNAME被验证为全局唯一,包括API Gateway分发。所以这意味着您(或任何其他帐户)已经设置了CNAME。目前无法查找冲突的位置,如果您自己找不到,则可能需要使用AWS支持提出票证。