使用CloudFront + Lambda + CNAME

时间:2018-02-23 12:09:45

标签: amazon-web-services amazon-s3 aws-lambda amazon-cloudfront

我在Amazon CloudFront中设置了两个发行版。两个起源都指向同一个桶。如果找不到请求的资源,则存储区会重定向到API网关。 API网关执行生成资源的Lambda函数,此处调整其大小。完成后,它会重定向到可定义的URL(以后称为Lambda重定向URL)。在有问题的情况下,此重定向URL是一个cdn URL,它作为备用域名(CNAME)映射到其中一个发行版。

下图显示了流程:

enter image description here

现在,为简单起见,我通过CloufFront分发URL访问尚未存在的资源来调用此流程。通过两个不同的发行版:一个分配,其中备用域名(CNAME)设置为cdn.example.de而 II 分配没有。否则分布是相同的,例如与他们的起源有相同的桶。

如果访问方向,我会在浏览器中获得too many redirects。如果访问 II ,一切正常,这意味着,我最终得到了调整大小的图像并在地址中有CDN URL。

enter image description here

什么有效:对的请求也创建资源。因此,成功调用Lambda函数。此外,如果我通过 II 构建的 I 请求资源,一切正常。因此,问题是,CloudFront分发的重定向以某种方式被缓存。但这是我无法得到的部分:只有在资源成功创建并放回S3存储桶后,Lambda函数才会重定向到CDN。因此,重定向不应该是最终的。它应该是CloudFront - > Buckets网站 - > API网关 - > CDN(第一次) - > CloudFront - >铲斗 - >交付!

有趣的是,如果我将Lambda重定向URL设置为存储桶端点,它就像魅力一样。

问题:如果我使用CloudFront分配结合Lambda函数设置CNAME,如何解决too many redirects问题。这应该是标准的

0 个答案:

没有答案