為什麼我在 Amazon S3 上託管並透過 CloudFront 提供服務的靜態網站會無法使用?

1 分的閱讀內容
0

我使用 Amazon Simple Storage Service (Amazon S3) 來託管靜態網站,並使用 Amazon CloudFront 為網站提供服務。網站無法使用,我想找出原因。

解決方法

在開始之前,請確認您可以存取網際網路。此外,請確認您的 CloudFront 分佈上指定的原始網域名稱指向正確的 S3 儲存貯體,沒有拼字錯誤或其他錯誤。

如果您可以存取網際網路,並且來源網域名稱正確,請使用以下疑難排解步驟來解決您的問題。

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

403 拒絕存取錯誤

當存在權限問題導致您的網站無法顯示時,您會收到 403 拒絕存取錯誤。若要解決此問題,請參閱為什麼當我使用 Amazon S3 網站端點作為 CloudFront 分佈的來源時,我會收到「403 拒絕存取」錯誤?

**重要:**請務必檢查您網站 S3 儲存貯體的封鎖公開存取設定。這些設定可以封鎖對您網站的匿名請求。封鎖公開存取設定可以套用於 AWS 帳戶或單一儲存貯體。

404 找不到錯誤

當請求指向不存在的網站物件時,您會收到 404 找不到錯誤。

若要解決此問題,請確認組態中的以下設定:

  • 請求的網站物件網址不包含拼字錯誤或不必要的字元。
  • 網站物件存在於託管您網站的 S3 儲存貯體上。您可以使用 Amazon S3 主控台list-objects-v2 AWS CLI 命令檢查儲存貯體。

內部錯誤

如果回應中存在內部錯誤,則內部服務問題可能會影響您的網站。檢查 AWS Health 儀表板是否有服務中斷和開放事件。

**注意:**大多數 AWS 服務都是區域性的,因此請務必依照您資源所在的 AWS 區域進行搜尋。

網站內容損壞或傳送問題

當 CloudFront 無法正確呈現或傳送您的網站內容時,您可能會收到損壞的 JavaScript 或缺失的 CSS 檔案。

若要解決此問題,請執行下列動作:

  • 正確上傳網站資源,並確保網站 HTML 中的網址路徑正確。

  • 對於混合內容錯誤,請使用 HTTPS 而不是 HTTP 來載入所有 JavaScript 和 CSS 資源檔案。

  • 最佳做法是使用回應標頭政策根據請求標頭快取內容

  • 如果未顯示更新後的網站內容,請執行以下 create-invalidation 命令來建立新的無效判定:

    aws cloudfront create-invalidation --distribution-id EDFDVBD6EXAMPLE --paths "/example-path/index.html"

    **注意:**將 EDFVBD6EXAMPLE 替換為您 CloudFront 分佈的 ID。如需詳細資訊,請參閱如何從 CloudFront 移除快取檔案?

相關資訊

Web 分佈診斷

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

AWS 官方
AWS 官方已更新 2 個月前