Kee*_*gan 3 cdn amazon-web-services amazon-cloudfront
我有一个 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_1以及mybucket/public_folder_22 个文件夹。我还创建了两个带有路径模式的行为 -public_folder_1/*并且public_folder_2/*(我已经尝试/在路径模式中添加一个引导,它似乎没有什么区别)。但是我无法通过 cloudfront 访问文件。
如果我将任一行为的路径模式更改为*而不是,public_folder_x/*那么我可以使用xxx.cloudfront.net/filex. 我对此的担忧是,如果我在两个文件夹中有 2 个同名文件,cloudfront 怎么知道要使用哪个文件夹作为源?我不想为每个原始路径创建和管理单独的发行版。
就我而言,我不明白当 CloudFront 找到匹配行为时,它会将整个 URL 路径转发到 S3。如果您的 S3 存储桶子目录中未表示匹配的目录结构,您将收到 403 响应。例如,如果您有一个与 匹配的行为/developer/*,并且 url 是{hostname}/developer/thing.html,则表示您的源的 S3 存储桶目录必须具有一个名为“developer”的根级子目录,其中包含thing.html.
我对此的担忧是,如果我在两个文件夹中有 2 个同名文件,cloudfront 怎么知道要使用哪个文件夹作为源?
您必须找到某种方法通过匹配模式来区分文件。我建议为每个源添加唯一命名的文件夹,然后根据提供的路径创建行为以转移流量:
mybucket/stuffmybucket/things/stuff/*--> 原点 1/things/*--> 原点 2cloudfront-url/stuff/file.html--> 返回file.html到 stuff 目录,也就是 origin1。cloudfront-url/things/file.html--> 返回file.html到东西目录,又名 origin2。我刚刚创建了一个具有以下两个来源的发行版......
有以下行为...
而下面的桶结构...
结果如下:
file.html从S3-stackoverflow-test-bucket/public_folder_1.file.html从S3-stackoverflow-test-bucket/public_folder_1/pub1file.html从S3-stackoverflow-test-bucket/public_folder_2/pub2S3-stackoverflow-test-bucket/public_folder_2/file.html是不是在所有可访问的基础上,目前的规则。我会将发行版搁置几天,以便您可以单击链接。
| 归档时间: |
|
| 查看次数: |
892 次 |
| 最近记录: |