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.
Dokumentation hier und ich verwende die Region Frankfurt als Beispiel.
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 ...
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.
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.