簡體   English   中英

Cloudfront 同一存儲桶中的多個源

[英]Cloudfront Multiple origins within the same bucket

我有一個 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用於 2 個文件夾。 我還使用路徑模式創建了兩種行為 - 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 如何知道要使用哪個文件夾作為源?

您必須找到某種方法通過匹配模式來區分文件。 我建議為每個源添加唯一命名的文件夾,然后根據提供的路徑創建行為以轉移流量:

  • origin1: mybucket/stuff
  • origin2: mybucket/things
  • 行為 1: /stuff/* --> origin1
  • 行為 2: /things/* --> origin2
  • cloudfront-url/stuff/file.html --> 返回 stuff 目錄中的file.html ,又名 origin1。
  • cloudfront-url/things/file.html --> 返回things目錄中的file.html ,也就是origin2。

編輯:

我剛剛創建了一個具有以下兩個來源的發行版......

起源

有以下行為...

行為

而下面的桶結構...

S3

結果如下:

我會將發行版擱置幾天,以便您可以單擊鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM