webentwicklung-frage-antwort-db.com.de

URL, um eine Datei von Amazon S3 zu erhalten

Ich habe Probleme mit dem Zugriff auf eine Datei von Amazon S3. Nehmen wir an, der Bucket, in dem die Datei lebt, ist BUCKET_NAME, die Datei ist FILE_NAME usw. Ich habe die folgenden zwei URLs ausprobiert:

https://s3.amazonaws.com/BUCKET_NAME/FILE_NAME/
?Expires=EXPIRATION
&Signature=SIGNATURE
&SignatureVersion=2
&SignatureMethod=HmacSHA1
&AWSAccessKeyId=KEYID

Dies gibt jedoch den folgenden Fehler: NoSuchKey Der angegebene Schlüssel ist nicht vorhanden.

und ich habe es auch versucht

https://s3.amazonaws.com/BUCKET_NAME/
?Key=FILE_NAME
&Expires=EXPIRATION
&Signature=SIGNATURE
&SignatureVersion=2
&SignatureMethod=HmacSHA1
&AWSAccessKeyId=KEYID

dabei wird jedoch eine Webseite mit einer Liste aller Dateien im angegebenen Bucket (einschließlich FILE_NAME) anstelle der gewünschten Datei zurückgegeben. Ich habe auch versucht, "Action = GetObject" in die URL zu werfen, aber das scheint nichts zu ändern. 

Es wäre hilfreich, herauszufinden, welche (wenn überhaupt) die richtige Methode ist und was ich falsch mache. Ich habe die Amazon-Dokumentation seit einiger Zeit durchforstet, aber ich scheine das nicht zu klären.

Vielen Dank.

35
user1018928

Es ist eigentlich eher wie folgt formuliert:

https://<bucket-name>.s3.amazonaws.com/<key>

Siehe hier

50
stevebot

Dokumentation hier und ich verwende die Region Frankfurt als Beispiel.

2 verschiedene URL-Stile:

Diese URL funktioniert jedoch nicht:

Die Nachricht ist explizit: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

Ich spreche möglicherweise über ein anderes Problem, weil ich NoSuchKey nicht bekomme, aber ich vermute, dass die Fehlermeldung im Laufe der Zeit klarer wurde ...

19

Vielleicht nicht das, wonach das OP gesucht hat, aber für diejenigen, die die URL suchen, um einfach auf ein lesbares Objekt in S3 zuzugreifen, ist dies eher wie folgt:

https://<region>.amazonaws.com/<bucket-name>/<key>

Wo <region> so etwas wie s3-ap-southeast-2 ist.

Klicken Sie auf das Element in der S3-Benutzeroberfläche, um den Link für Ihren Bucket zu erhalten.

19
orlade

Wie @stevebot sagte:

https://<bucket-name>.s3.amazonaws.com/<key>

Das Wichtigste, was ich hinzufügen möchte, ist, dass Sie entweder alle Bucket-Objekte öffentlich zugänglich machen müssen OR. Sie können Ihrer Bucket-Richtlinie eine benutzerdefinierte Richtlinie hinzufügen. Diese benutzerdefinierte Richtlinie kann Datenverkehr von Ihrem Netzwerk-IP-Bereich oder einen anderen Berechtigungsnachweis zulassen.

0
Chad Van De Hey