将CloudFront主机标头转发到API网关

时间:2016-08-30 08:16:42

标签: amazon-web-services amazon-cloudfront aws-lambda aws-api-gateway wildcard-subdomain

我们有一个指向CloudFront分配的通配符(*)子域。起源是API网关。

我们需要知道API网关中的原始Host标头,以便我们可以路由请求。

简单地将CloudFront中的Host标头列入白名单时,通过HTTP访问CloudFront分配时会返回错误 - 可能是因为API网关需要Host标头才能知道要调用的API。

如果是这种情况,是否可以通过Host从CloudFront转发X-Forwarded-Host标头到API网关?或者......是否有另一种方法可以在API网关中使用通配符子域?

1 个答案:

答案 0 :(得分:2)

这不是原始问题的答案,但它可能是实现目标的另一种方式。

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

其次,如果你可以在CI / CD管道的所有阶段测试整个环境,那就太棒了,虽然它并不总是可行的(而CF对它来说特别糟糕) - 所以#&# 39;关于在短反馈周期和测试彻底性之间找到平衡点。

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

在你的情况下,我建议:

  1. 分支部署不部署CF - 测试直接针对API网关
  2. 主要/默认部署要将CF部署到一个“暂存”阶段。环境 - 测试针对分段CF分发
  3. 成功测试了发布到' staging'环境被提升为生产
  4. 通过引入登台环境,您可以获得有关分支构建的快速反馈,但您仍然有机会在进入prod之前测试缓存后面的内容。

    如果要更改CF配置,可以让部署脚本动态决定在某个触发器中包含CF在分支部署中(可能在分支名称中存在单词' cloudfront' - 虽然对于某些人来说这可能有点神奇!)然后你可以在合并到master之前在分支上测试这些更改以便在分段中进行测试。