CloudFront 功能,用于根据 HTTP 标头将请求路由到源

问题描述 投票:0回答:1

我正在尝试实现一种基于请求上的 HTTP 标头将请求路由到特定源的解决方案。

我们使用 CloudFront 进行缓存,并附加了 2 个 ALB 作为源。现在,当 HTTP 标头具有旧值时,它应该命中 ALB1,而当请求标头设置了新值时,它应该命中 ALB2。

还在决定计划。

amazon-web-services cloud amazon-cloudfront aws-application-load-balancer blue-green-deployment
1个回答
2
投票

CloudFront 有两种类型的边缘计算:CloudFront Functions 和 Lambda@Edge。 CloudFront 函数仅支持面向查看者(请求/响应)事件,而 Lambda@Edge 同时支持面向查看者(请求/响应)和面向源(请求/响应)。

因为您想要动态更改 CloudFront 将请求路由到的源(主机),所以您需要使用 origin-request 事件。这意味着您需要 Lambda@Edge。

这样做的过程很简单:

  1. 确保此解决方案所依据的 HTTP 标头位于您的缓存策略(如果是您的缓存密钥的一部分)或源请求策略(如果不是您的缓存密钥的一部分)。这将指示 CloudFront 使查看器标头可供您的 Lambda@Edge 函数使用。
  2. 编写一个 Lambda@Edge 函数,有条件地检查标头,并将请求的主机标头更新为 ALB1 或 ALB2。 CloudFront 将使用该主机向您的源发出请求。

此处示例 — https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-examples.html#lambda-examples-content-based-routing-examples

© www.soinside.com 2019 - 2024. All rights reserved.