CloudFront 多源和缓存行为问题

CloudFront multi origin and cache behaviour issue

我在 CF 中定义了 2 个 S3 桶作为源。

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

我只想分发 mybucket2 中的图片文件夹。

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

我尝试使用 url 访问图像 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?。或者是否有任何其他方法可以使用单一分布但具有多个来源来实现这种要求。

根据您的要求,添加带有基本路径的两个源并配置行为,使得

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

注意:在您的 Origin 2 中,它需要有图像文件夹才能工作,这是 CloudFront 行为映射到 S3 来源的限制。

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