跳至內容

為什麼我無法從用作 CloudFront 發行版來源的 Amazon S3 儲存貯體存取檔案?

1 分的閱讀內容
0

我使用 Amazon Simple Storage Service (Amazon S3) 儲存貯體作為 Amazon CloudFront 發行版的來源。但是,我無法存取或下載 Amazon S3 儲存貯體中的檔案。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

對403 拒絕存取錯誤進行疑難排解

如果 CloudFront 傳回 403 拒絕存取錯誤,請根據您的使用案例,請參閱下列其中一篇 AWS 知識中心文章:

檢查您的 CloudFront 地理限制

如果您的發行版使用了地理限制,請確認您沒有限制請求源自的國家

確認您沒有使用 S3 網站端點強制執行 HTTPS

Amazon S3 網站端點不支援 HTTPS。如果您使用 AWS CLI、API 或 AWS SDK 來設定 CloudFront 發行版,請確認您沒有在網站端點來源強制執行 HTTPS。

若要檢查您是否使用 HTTPS,請使用 GetDistributionConfig API 或 get-Distribution-Config AWS CLI 命令來取得發行版組態。如果 OriginProtocolPolicy 設定為 https-only,則修改 OriginProtocolPolicy 以使用 http-only

若要使用 HTTPS,請使用具有 S3 REST API 端點來源的 CloudFront。如需詳細資訊,請參閱可能需要特殊處理的字元

確認您的 S3 物件小於 50 GB

HTTP GETPOSTPUT 請求允許的最大檔案大小為 50 GB。如果檔案大於 50 GB,您會收到 400「BadRequest」錯誤。

如需詳細資訊,請參閱發行版的一般配額

檢查 S3 物件金鑰名稱中的特殊字元

如果您在 S3 物件金鑰名稱中使用了特殊字元,則可能需要修改字元以符合 API 要求。如需詳細資訊,請參閱物件金鑰命名準則

確認您沒有使用子目錄中的預設根物件

即使您在發行版中設定了物件,CloudFront 發行版也不會從子目錄傳回預設根物件。如需詳細資訊,請參閱指定預設根物件

作為因應措施,您可以使用 Lambda @Edge 從子目錄傳回預設根物件。

確認您沒有使用具有 S3 來源的主機標頭

對於 Amazon S3 來源,您無法根據主機標頭進行快取或轉送主機標頭。如需詳細資訊,請參閱選取快取所依據的標頭

對「No Access-Control-Allow-Origin」錯誤進行疑難排解

若要解決此問題,請參閱如何解決 CloudFront 中的「請求的資源上不存在『Access-Control-Allow-Origin』標頭」錯誤?

相關資訊

對 CloudFront 中的錯誤回應狀態代碼進行疑難排解

AWS 官方已更新 1 年前