如何在 AWS CloudFront 重定向 URL?

How to redirect URL at AWS CloudFront?

我有一个通过 AWS CloudFront 和 S3 提供图像的客户网站。图片为 PNG 格式,网页上的 URL 属于 CloudFront 域,而不是自定义域。为了降低成本,我们计划将它们压缩成JPG 格式。但是,我们发现图像 URL 在数据库中是硬编码的。

问题是当我们将图像压缩为 JPG 时,文件扩展名发生变化,因此旧的 URL 将无法正常工作。客户现在不想对数据库进行更改。

有没有一种方法可以为来自网页的相同请求提供压缩文件(具有不同的扩展名)?

我正在研究使用 Lambda Edge 路由请求的解决方案 - https://aws.amazon.com/blogs/networking-and-content-delivery/dynamically-route-viewer-requests-to-any-origin-using-lambdaedge/

您是否还有其他最佳解决方案可以建议? CloudFront 是否有办法检查 S3 中的两种类型的文件(jpg 和 png)并提供其中一种?示例:请求 images/car.png --> CloudFront 检查 images/car.png 和 images/car.jpg。如果 jpg 存在,则提供这个。

根据您的建议,您需要使用 Lambda@Edge 来修改请求。

在转发到 Origin 之前,您需要为 Origin Request 事件部署它。

要进行更改,您需要更新 request['uri'] 值以使用来源 URL 而不是用户转发的来源。

关于压缩,请记住,如果启用该选项,CloudFront 支持 automatic gzip compression