Amazon-S3

Cloudfront 上傳後一分鐘返回 403

  • March 5, 2017

我在 s3 儲存桶前有一個雲端分佈。Cloudfront url 受到限制,並且密鑰必須是 url 簽名的。s3 bucket也有限制,只允許cloudfront讀取

有時,在我成功將圖像上傳到我的 s3 後,當我隨後嘗試檢索圖像時,cloudfront 會返回 403。這會持續大約一分鐘,之後 cloudfront 開始正確地提供圖像。

即使在圖像成功上傳後也會發生這種情況,我可以通過轉到 s3 控制台手動查看它。

某些原因導致您的文件在儲存桶中出現之前被 CloudFront 請求。CloudFront 的預設配置會導致它被負記憶體長達 5 分鐘。

預設情況下,當您的源返回 HTTP 4xx 或 5xx 狀態程式碼時,CloudFront 會將這些錯誤響應記憶體五分鐘,然後將對象的下一個請求送出到您的源,以查看導致錯誤的問題是否已解決以及請求的對象現在可用。

— http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html

如果瀏覽器或其他任何東西在上傳到 S3 完成之前嘗試從該特定 CloudFront 邊緣(或任何邊緣,如果請求恰好也通過區域邊緣——CloudFront 現在有兩個邊緣層)下載文件,S3 將返回一個錯誤,而 CloudFront(在該邊緣位置)將記憶體該錯誤並記住,在接下來的 5 分鐘內,不要費心再試一次。

此計時器是可配置的。

您可以為CloudFront 記憶體的每個 4xx 和 5xx 狀態程式碼指定錯誤記憶體持續時間(**錯誤記憶體最小 TTL )。**有關過程,請參閱配置錯誤響應行為

— http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html

對於要禁用錯誤記憶體的任何錯誤程式碼(如 403),將值設置為 0。

此答案中的內容改編自我在Stack Overflow上的原始文章。

引用自:https://serverfault.com/questions/836428