我使用内容访问多个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/
答案 0 :(得分:1)
CloudFront使用第一个匹配的路径模式来确定请求将发送到哪个源服务器。
然后,它会完全按照从浏览器收到的路径发送路径,除非在原点上设置了原始路径,在这种情况下,在将请求发送到存储桶之前会先添加原始路径。
这些标准行为都不能满足您的需求 - 使用CloudFront,您无法在将浏览器发送到原点之前从浏览器请求的路径中删除任何内容。
在存储区收到请求之前修改路径(从头开始删除/BUCKETx
)的唯一方法是使用Lambda@Edge Origin Request触发器。然而,Lambda @ Edge仍处于预览阶段,因此尚未普及。