我们有一个指向CloudFront分布的通配符(*)子域 . 起源是API网关 .
我们需要知道API网关中的原始 Host
标头,以便我们可以路由请求 .
简单地将CloudFront中的 Host
标头列入白名单会在通过HTTP访问CloudFront分配时返回错误 - 可能是因为API Gateway需要 Host
标头才能知道要调用的API .
如果是这种情况,是否可以通过_1140572_从CloudFront转发 Host
标头到API网关?或者......是否有另一种方法可以在API网关中使用通配符子域?
1 回答
这不是原始问题的答案,但它可能是实现目标的另一种方式 .
首先,在所有环境(包括产品)之间共享CF分配会带来风险 - 当您需要测试CF配置的更改时,您必须使用未经测试的更改修改产品CF dist,这可能会产生重大影响 .
其次,虽然如果你可以在CI / CD管道的所有阶段测试整个环境,这很棒,但并不总是可能的(并且CF特别糟糕) - 所以它是关于在短反馈周期和测试的彻底性之间找到 balancer .
解决方案通常是为您的管道引入额外的阶段,其中早期阶段提供对最常见问题的快速反馈,而后期阶段对较不频繁的问题提供较慢的反馈 .
在你的情况下,我建议:
分支部署不部署CF - 测试直接针对API网关
主/默认部署DO部署CF - 到'staging'环境 - 测试目标是分段CF分发
成功测试到'staging'环境的版本将升级为 生产环境 版
通过引入暂存环境,您可以获得有关分支构建的快速反馈,但您仍然有机会在进入prod之前测试缓存后面的内容 .
如果要对CF配置进行更改,则可以使部署脚本动态决定在分支部署中包含CF(在分支名称中可能存在“cloudfront”一词 - 尽管可能有点'神奇的'为某些人!)并且您可以在合并到master之前测试分支上的这些更改以便在分段中进行测试 .