AWS CloudFront:如何将行为模式映射到存储桶的基础

AWS CloudFront: How to map a Behavior Pattern to the Base of a Bucket

我正在使用内容访问多个 S3 存储桶。 S3 存储桶已经用于许多不同的网站,这限制了我移动内容的能力。

假设我有 MY_BUCKET1、MYBUCKET2、MYBUCKET3,这三个存储桶的底部都有文件。

我希望能够设置它以便可以在以下位置引用这些文件:

CF_CRAZY_URL.cloudfront.net/BUCKET1/file1.mp4
CF_CRAZY_URL.cloudfront.net/BUCKET2/file2.mp4
CF_CRAZY_URL.cloudfront.net/BUCKET3/file3.mp4

但是当我在 CloudFront 中选择存储桶作为源时,它看起来像文件夹映射行为的工作方式,它在以下位置查找第一个行为规则的文件:

CF_CRAZY_URL.cloudfront.net/file1.mp4

我很确定它会导致它无法找到:file2.mp4,因为它不在它首先查找的第一个存储桶中。

有办法吗?

基本上,我想要: CF_CRAZY_URL.cloudfront.net/BUCKET1 映射到 https://s3.amazonaws.com/BUCKET1/

而不是: CF_CRAZY_URL.cloudfront.net/ 映射到 https://s3.amazonaws.com/BUCKET1/

CloudFront 使用第一个匹配的路径模式来确定将请求发送到哪个源服务器。

然后它会发送与从浏览器收到的路径完全相同的路径,除非在源上设置了源路径,在这种情况下,源路径会在将请求发送到存储桶之前添加到前面。

这些标准行为都不会满足您的要求——使用 CloudFront,在将浏览器请求的路径发送到源之前,您无法删除任何内容。

在存储桶收到请求之前修改路径(从开头删除 /BUCKETx)的唯一方法是使用 Lambda@Edge 源请求触发器。但是,Lambda@Edge 仍处于预览阶段,因此尚未普遍可用。