Wie kann ich den 404-Fehler „NoSuchKey“ von Amazon S3 beheben?

Lesedauer: 3 Minute
0

Meine Benutzer versuchen, auf Objekte in meinem Amazon Simple Storage Service (Amazon S3) -Bucket zuzugreifen. Amazon S3 gibt jedoch den 404-Fehler „NoSuchKey“ zurück. Wie kann ich das Problem beheben?

Behebung

Amazon S3 gibt in der Regel 404-Fehler zurück, wenn das angeforderte Objekt im Bucket fehlt. Bevor Benutzer GET- oder HEAD-Anforderungen für ein Objekt stellen, stellen Sie sicher, dass das Objekt erstellt und im S3-Bucket verfügbar ist.

Um zu prüfen, ob ein Objekt in einem Bucket verfügbar ist, können Sie den Inhalt des Buckets über die Amazon S3-Konsole überprüfen. Oder Sie können den Befehl head-object über die AWS-Befehlszeilenschnittstelle (AWS CLI) ausführen:

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

Wichtig: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Beachten Sie, dass Amazon S3 für alle Anwendungen eine hohe Konsistenz beim read-after-write bietet. Nach einem erfolgreichen Schreiben eines neuen Objekts oder dem Überschreiben oder Löschen eines vorhandenen Objekts erhält jede nachfolgende Lesen Anforderung sofort die neueste Version des Objekts. S3 bietet auch eine hohe Konsistenz für Listenoperationen. Nach einem Schreibvorgang können Sie eine Liste der Objekte in einem Bucket durchführen. Weitere Informationen zur S3-Konsistenz finden Sie unter Konsistenz.

Wenn das angeforderte Objekt einige Zeit im S3-Bucket verfügbar war und Sie erneut einen 404 NoSuchKey-Fehler erhalten, überprüfen Sie Folgendes:

  • Vergewissern Sie sich, dass die Anfrage genau mit dem Objektnamen übereinstimmt, einschließlich der Großschreibung des Objektnamens. Bei Anfragen für S3-Objekte wird zwischen Groß- und Kleinschreibung unterschieden. Wenn ein Objekt beispielsweise myimage.jpg heißt, aber ** Myimage.jpg** angefordert wird, erhält der Anforderer einen 404-NoSuchKey-Fehler.
  • Vergewissern Sie sich, dass der angeforderte Pfad mit dem Pfad zum Objekt übereinstimmt. Andernfalls erhält der Anforderer einen 404-NoSuchKey-Fehler.
  • Wenn der Pfad zum Objekt Leerzeichen enthält, muss sichergestellt werden, dass die Anfrage die richtige Syntax verwendet, um den Pfad zu erkennen. Wenn Sie zum Beispiel die AWS CLI verwenden, um ein Objekt auf Ihren Windows-Rechner herunterzuladen, müssen Sie den Objektpfad in Anführungszeichen setzen. Der Objektpfad muss wie folgt aussehen: aws s3 cp "s3://awsexamplebucket/Backup Copy Job 4/3t000000.vbk“.
  • Überprüfen Sie den Objektnamen auf Sonderzeichen oder URL-kodierte Zeichen, die schwer zu erkennen sind, wie z. B. Zeilenumbrüche (\ r) oder Zeilenumbrüche (\ n). Beispielsweise wird der Objektname test mit einem Zeilenumbruch am Ende in der Amazon S3-Konsole als test%0A angezeigt. Um Objektnamen auf Sonderzeichen zu überprüfen, können Sie den Befehl list-objects-v2 mit dem Parameter --output json ausführen. Die JSON-Ausgabe macht Zeichen wie Returns (\ r) sichtbar. Wenn ein Objektname ein Sonderzeichen enthält, das nicht immer sichtbar ist, sollte dieses Zeichen aus dem Objektnamen entfernt werden. Versuchen Sie dann erneut, auf das Objekt zuzugreifen.
  • Optional können Sie die Serverzugriffsprotokollierung aktivieren, um die Anforderungsdatensätze genauer auf Probleme zu überprüfen, die möglicherweise den404-NoSuchKey-Fehler verursachen.

Hinweis: Wenn ein Objekt im Bucket fehlt und der Anforderer keinen s3:ListBucket-Zugriff hat, erhält der Anforderer den Fehler 403 Access Denied. Wenn Sie den Fehler 403 Access Denied erhalten, lösen Sie das Problem im Zusammenhang mit dem fehlenden Objekt.


Ähnliche Informationen

Problembehandlung bei Amazon S3

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren