2017-07-31 112 views
1

我已經定義了2個S3存儲桶作爲CF中的起源。CloudFront多源和緩存行爲問題

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

我只想分發mybucket2中的images文件夾。

我創建的路徑模式/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的路徑前綴?或者有沒有其他的方法可以實現這種使用單一分佈但具有多個來源的要求。

回答

1

爲了您的需求,加上與基本路徑兩者的起源和配置的行爲,從而

  • 默認行爲/ *爲原點1
  • 行爲/圖片/ *覆蓋到 產地2

注意:在您的Origin 2中,它需要具有用於此功能的圖像文件夾,這是CloudFront與S3原點的行爲映射的限制。

如果您需要進一步擴展,您可以使用Edge Lambda將請求URL更改爲原始路徑。

+0

這是實現它的一種方式。我擔心的是CF會繼續嘗試分發bucket2的全部內容,我已經實施了一個桶策略以允許CF只訪問images文件夾以避免它。希望亞馬遜將以更大的靈活性改善CF-S3的整合。我會跳過Lambda以保存設計的簡單性和供應商的鎖定。解決方案不是最優的,但工作。非常感謝,非常感謝。 – Anuruddha