同一存储桶中的Cloudfront多个起点

问题描述 投票:1回答:1

我有一个Cloudfront发行版,正在使用单个S3存储桶作为源。存储桶中包含私有和公共数据,按文件夹-public_folder_1, public_folder_2, private_folder_1, private_folder_2分开。我想使用cloudfront来仅提供2个公用文件夹中的内容。我希望对xxx.cloudfront.net/public_folder_1/file1的请求转到public_folder_1,并且对xxx.cloudfront.net/public_folder_2/file1的请求转到public_folder_2

我在发行版中创建了2个具有原始名称+路径的原始-两个文件夹的mybucket/public_folder_1mybucket/public_folder_2。我还使用路径模式创建了两个行为-public_folder_1/*public_folder_2/*(我尝试将前导/添加到路径模式,这似乎没有什么不同)。但是我无法通过cloudfront访问文件。

如果将任一行为的路径模式更改为*而不是public_folder_x/*,则可以使用xxx.cloudfront.net/filex访问文件。我对此的担心是,如果我在两个文件夹中都有两个同名文件,cloudfront怎么会知道将哪个文件夹用作源?我不想为每个原始路径创建和管理单独的发行版。

amazon-web-services amazon-cloudfront cdn
1个回答
0
投票

就我而言,我不了解当CloudFront找到匹配的行为时,它转发到S3的整个URL路径。如果您的S3存储桶子目录中未显示匹配的目录结构,您将收到403响应。例如,如果您的行为与/developer/*相匹配,并且URL为{hostname}/developer/thing.html,则表示您的来源必须的S3存储桶目录具有一个名为“ developer”的根级子目录,其中包含thing.html

我对此的担心是,如果我在两个文件夹中都有两个具有相同名称的文件,Cloudfront将如何知道将哪个文件夹用作源?

您必须找到某种通过匹配模式区分文件的方法。我建议向每个来源添加唯一命名的文件夹,然后创建行为以根据提供的路径转移流量:

  • origin1:mybucket/stuff/file1.html
  • origin2:mybucket/things/file1.html
  • 行为1:/stuff/*-> origin1
  • 行为2:/things/*-> origin2
© www.soinside.com 2019 - 2024. All rights reserved.