開發人員在 S3 儲存貯體中託管靜態網站,並透過 CloudFront 使用來源存取控制 (OAC) 提供服務,因此該儲存貯體不是公開的。使用者可以存取明確的檔案 URL (例如 /products/index.html),但在請求目錄 URL (例如 /products/) 時會收到錯誤。在不將 S3 儲存貯體設為公開的情況下,如何提供目錄請求以使其傳回預設的索引檔案?
選擇一個答案
點擊一個選項來檢查您的答案。
正確答案: 建立一個 CloudFront 檢視器請求函數,該函數偵測目錄樣式的請求並將 index.html 附加到請求 URL,然後將其附加到分配行為。.
為什麼這是答案
正確答案是建立一個 CloudFront 檢視器請求函數,該函數偵測目錄樣式的請求並將 index.html 附加到請求 URL。這是因為 CloudFront 函數可以在請求到達源站之前修改請求。當使用者請求目錄 URL (例如 /products/) 時,函數會將其重寫為 /products/index.html,從而允許 S3 傳回預期的預設檔案,同時保持 S3 儲存貯體的私有性。 將 CloudFront 分配的預設根物件變更為 index.html 只會影響根目錄 (/),而不會影響子目錄 (/products/)。在儲存貯體上啟用 S3 靜態網站託管並將 CloudFront 來源變更為 S3 網站端點,雖然可以解決此問題,但通常需要將儲存貯體政策設定為允許公開存取,這與題目中「不將 S3 儲存貯體設為公開」的要求相悖。為 404 Not Found 設定 CloudFront 自訂錯誤回應,該回應傳回 /index.html 並帶有 HTTP 200 OK 回應碼,這是一個錯誤處理機制,而不是解決目錄請求預設檔案的方法,且可能會導致不必要的 404 錯誤。
通過考試 — 無需無休止地尋找答案
集中一處獲取此考試的所有核實題目和解釋,節省數小時的準備時間。1,000 多種認證 · 20 多種語言 · 免費開始。
更快通過您的考試 → 無需信用卡