我们有一个通配符(*)子域,它指向CloudFront发行版。来源是API网关。

我们需要知道API网关内的原始Host header ,以便我们路由请求。

通过HTTP访问CloudFront分发时,仅将CloudFront中的Host header 列入白名单会返回错误-大概是因为API网关需要Host header 才能知道要调用哪个API。

如果是这种情况,是否可以通过HostX-Forwarded-Host header 从CloudFront转发到API网关?或者...是否有另一种方法可以将通配符子域与API网关一起使用?

最佳答案

这并不是您最初提出的问题的答案,但是它可能是实现目标的另一种方法。

首先,在所有环境(包括产品)之间共享CF分布会带来风险-当您需要测试对CF配置的更改时,您必然会使用未经测试的更改来修改产品CF dist,这可能会带来严重的后果。

其次,虽然可以在CI/CD管道中的所有阶段测试整个环境是一件很了不起的事情,但这并不总是可能的(而且CF特别不利)-因此,它的目的是在较短的反馈周期和测试彻底性之间找到平衡。

解决方案通常是在您的管道中引入额外的阶段,其中早期阶段针对最常见的问题提供快速反馈,而后期阶段针对较不频繁的问题提供较慢的反馈。

对于您的情况,我建议:

  • Branch部署未部署CF-测试直接针对API网关
  • 主/默认部署不要将CF部署到“分段”环境-测试针对分段CF分布
  • 已成功将“阶段”环境中经过测试的发行版升级为生产

  • 通过引入暂存环境,您可以快速获得有关分支构建的反馈,但是您仍然有机会在进入产品之前对缓存背后的内容进行测试。

    如果您要更改CF配置,则可以使您的部署脚本动态地决定将CF包含在分支触发器中,而无需触发某些触发器(分支名称中可能存在“cloudfront”一词-尽管可能有点“神奇!”,您可以在合并到母版进行暂存测试之前,先在分支上测试这些更改。

    关于amazon-web-services - 将CloudFront主机 header 转发到API网关,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39222208/

    10-16 01:07