簡體   English   中英

當源是 S3 存儲桶時,AWS CloudFront 返回 http 307

[英]AWS CloudFront returns http 307 when origin is S3 bucket

我已經用一些文件創建了 s3 存儲桶。 我使用該 S3 存儲桶作為源創建了 CloudFront 分配,並將狀態更改為已部署。

當我為任何文件卷曲 CloudFront 時,我得到:

<Error><Code>TemporaryRedirect</Code><Message>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Message><Bucket>MY-BUCKET</Bucket><Endpoint>MY-BUCKET.s3-eu-west-1.amazonaws.com</Endpoint><RequestId>...</RequestId><HostId>...</HostId></Error>

當我為任何文件卷曲我的 S3 存儲桶時,我會得到該文件內容。

我做錯了什么? 如何強制 cloudfront 緩存文件,以便客戶端不需要直接從 S3 獲取數據?

Thx Matt Houser 從評論到我的第一篇文章!

當分發尚未完全准備好時,CloudFront 似乎緩存了我對文件的第一個請求(但當時它處於部署狀態,所以要小心!)。 我請求使緩存中的所有文件失效,這需要幾分鍾,但在失效完成后,所有文件都使用 CloudFront url 用 http 200 卷曲。

在 Michael-sqlbot 發表評論后,問題變得清晰起來:

所有存儲桶都有至少兩個 REST 端點主機名。 在 eu-west-1 中,它們是 example-bucket.s3-eu-west-1.amazonaws.com 和 example-bucket.s3.amazonaws.com。 第一個將在創建存儲桶時立即有效。 第二個——有時被稱為“全局端點”——這是 CloudFront 使用的一個——不會,除非存儲桶在 us-east-1 中。 在幾秒到幾分鍾的時間里,根據位置和其他因素而變化,它也可以在全球范圍內訪問。 在此之前,返回 307 重定向。 因此,桶還沒有准備好。

如果它發生在你身上,為了澄清一點,有幾個選擇:

  • 最多等待24 小時,讓更改完全傳播。

  • 將您的存儲桶位置更改為us-east-1區域。

  • 但最簡單的方法可能是將您的 CloudFront 原始域名從<bucket>.s3.amazonaws.com<bucket>.s3-<region>.amazonaws.com

轉到您的分發設置 -> 來源和來源組並編輯當前來源

例如,在us-west-2區域中有一個名為 stackoverflow 的存儲桶,它將變成

stackoverflow.s3-us-west-2.amazonaws.com

暫無
暫無

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

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