2015-02-22 8 views
13

Ich verwende den AmazonS3Client in einer Android-App mit einer getObject-Anforderung, um ein Bild aus meinem Amazon S3-Bucket herunterzuladen.Android Amazon S3-Ausnahme: "Der angegebene Schlüssel existiert nicht"

Derzeit erhalte ich diese Ausnahme:

com.amazonaws.services.s3.model.AmazonS3Exception: 
The specified key does not exist. 
(Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey; 

Auch wenn ich in der Lage bin, das Objekt mit dem angegebenen Schlüssel in meinem S3 Eimer zu sehen.

+1

Ich denke dieser Fehler tritt normalerweise auf, wenn das Objekt/die Datei nicht in dem angegebenen Bucket vorhanden ist. Können Sie den Namen des Buckets überprüfen, den Sie für Tippfehler verwenden, und wenn es derselbe Bucket ist, in dem Sie das Objekt/die Datei sehen? Dies ist kein Authentifizierungsfehler. –

+1

Amazon Dokumentation ist saugt, kann diese Frage nicht downvoted werden. Es ist verrückt, S3-Programmierung zu finden. – Siddharth

Antwort

6

Nun, dieser Fehler ist eigentlich eher geradlinig. Es bedeutet einfach, dass Ihre Datei nicht im S3-Bucket existiert. Mehrere Dinge könnten falsch sein:

  1. Sie könnten versuchen, die falsche Datei zu verweisen. Überprüfen Sie den Pfad, den Sie abzurufen versuchten.

  2. Wann immer die Datei hochgeladen wurde, muss sie fehlgeschlagen sein. Überprüfen Sie die Protokolle für Ihren S3Sync Prozess zu sehen, ob Sie alle relevanten Ausgangs

+1

Links ablaufen Antworten nach einer Weile unbrauchbar machen, sollten Sie Infromation von diesem Link extrahieren und diese Antwort aktualisieren, um abgeschlossen zu sein. Fühlen Sie sich frei, Ihre Quelle zu teilen ... das ist ok .. – Siddharth

+0

@Siddharth aktualisierte die Antwort – Fahim

+0

Danke, das hilft, SO sauber und nützlich zu halten. – Siddharth

7

Für mich finden können, auf jeden Fall das Objekt existiert und wurde korrekt hochgeladen, aber seine s3 url warf noch den gleichen Fehler:

<Code>NoSuchKey</Code> 
<Message>The specified key does not exist.</Message> 

Ich fand heraus, dass der Grund war, weil mein Dateiname ein #-Symbol enthielt, und ich denke, bestimmte Zeichen oder Symbole werden auch diesen Fehler verursachen.

Das Entfernen dieses Zeichens und das Generieren der neuen s3-URL löste mein Problem.

+0

Das gleiche Problem hier. Das problematische Zeichen war eine Klammer: ( – Johann

+0

Ich stehe vor demselben Problem und mein Dateiname ist "abcd.jar". Ist die Erweiterung der Download-Funktion auch spezifisch? –

+0

@RahulMunjal Ich bin mir nicht sicher über Dateierweiterungen, versuche es vielleicht ein .zip-Ordner? und sehen Sie, ob das funktioniert. Überprüfen Sie auch, dass die Berechtigungen für Ihre Datei korrekt sind (z. B. Lesezugriff für die Gruppe "Alle Benutzer"). – Truchainz

1

In meinem Fall erschien der Fehler, weil ich den gesamten Ordner mit den Websitedateien in den Container hochgeladen hatte.

Ich löste es durch Verschieben aller Dateien außerhalb des Ordners, direkt in den Container.

0

Der Grund für das Problem ist falsch oder Tippfehler in der Bucket/Key-Name. Überprüfen Sie, ob der von Ihnen angegebene Bucket- oder Schlüsselname existiert.

Verwandte Themen