如何對 Amazon S3 中的 404 "NoSuchKey" 錯誤進行疑難排解?

1 分的閱讀內容
0

我的使用者正在嘗試存取 Amazon Simple Storage Service (Amazon S3) 儲存貯體中的物件。但是,Amazon S3 卻傳回 404 "NoSuchKey" 錯誤。如何對此錯誤進行疑難排解?

解決方案

如果儲存貯體中缺少請求的物件,Amazon S3 通常會傳回 404 錯誤。在使用者對物件發出 GET 或 HEAD 請求之前,請確定物件已建立並可在 S3 儲存貯體中使用。

若要檢查儲存貯體中是否有物件可用,您可以從 Amazon S3 主控台檢閱儲存貯體的內容。或者,您可以使用 AWS Command Line Interface (AWS CLI) 執行 ](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html)head-object[ 命令:

aws s3api head-object --bucket awsexamplebucket --key object.jpg

**重要事項:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI

請注意,Amazon S3 為所有應用程式提供強大的寫入後讀取一致性。成功寫入新物件或覆寫刪除現有物件後,任何後續讀取請求都會立即收到物件的最新版本。S3 還為列出清單操作提供了強大的一致性。寫入後,您就可以列出儲存貯體中的物件清單。如需 S3 一致性的相關資訊,請參閱一致性

如果請求的物件在 S3 儲存貯體中已存在一段時間,且您再次收到 404 NoSuchKey 錯誤,請檢查下列項目:

  • 確認請求完全符合物件名稱,包括物件名稱的大小寫。S3 物件的請求區分大小寫。例如,如果物件名稱為 myimage.jpg,但請求的物件名稱為 Myimage.jpg,則請求者會收到 404 NoSuchKey 錯誤。
  • 確認請求的路徑符合物件的路徑。否則,請求者會收到 404 NoSuchKey 錯誤。
  • 如果物件的路徑包含任何空格,請確定請求使用正確的語法來辨識路徑。例如,如果您使用 AWS CLI 將物件下載到 Windows 機器,則必須在物件路徑兩側使用引號。物件路徑必須如下所示:aws s3 cp "s3://awsexamplebucket/Backup Copy Job 4/3T000000.vbk"
  • 檢查物件名稱是否有任何難以看到的特殊字元或 URL 編碼字元,例如歸位字元 (\r) 或換行字元 (\n)。例如,結尾包含歸位字元的物件名稱 test 在 Amazon S3 主控台中會顯示為 test%0A。若要檢查物件名稱是否有特殊字元,您可以執行 list-objects-v2 命令並搭配使用參數 --output json。JSON 輸出讓歸位 (\r) 之類的字元可見。如果物件名稱含有不一定可見的特殊字元,請從物件名稱中移除該字元。然後,嘗試再次存取該物件。
  • (選擇性) 您可以啟用伺服器存取記錄,更加詳細檢閱請求記錄,以了解可能造成 404 NoSuchKey 錯誤的問題。

**注意事項:**如果儲存貯體中缺少某個物件,而且請求者沒有 s3:ListBucket 存取權,則請求者將會收到 403 存取遭拒錯誤。如果您收到 403 存取遭拒錯誤,請解決與缺少物件相關的問題。


相關資訊

Amazon S3 疑難排解

AWS 官方
AWS 官方已更新 2 年前