CloudFront多源和缓存行为问题

时间:2017-07-31 06:16:02

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

我已将2个S3存储桶定义为CF的来源。

Origin 1 : mybucket1.amazonaws.com
Origin 2 : mybucket2.amazonaws.com/images

我只想在mybucket2中分发图像文件夹。

我创建了一个缓存行为,其路径模式/images指向Origin2

我尝试使用网址访问图片 https://lksngfd4w24.cloudfront.net/images/image1.jpg

似乎CF正在将缓存行为路径模式附加到s3路径。上面的url会抛出如下错误。

<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>
images/images/image1.jpg
</Key>
<RequestId>sdanfladnfaf</RequestId>
<HostId>
   medlakfmkamfldaf
</HostId>
</Error>

有没有办法阻止CF将路径前缀附加到S3 URL?或者是否有任何其他方法可以使用单一分布但具有多个来源来实现此类要求。

1 个答案:

答案 0 :(得分:2)

根据您的要求,使用基本路径添加两个来源并配置

等行为
  • / *的默认行为是Origin 1
  • 行为/图片/ *覆盖到 起源2

注意:在你的Origin 2中,它需要有图像文件夹才能生效,这是对来自S3起源的CloudFront行为映射的限制。

如果您需要进一步扩展,可以使用Edge Lambda将请求URL更改为原始的不同路径。