it-swarm.com.de

AWS S3: Der Bucket, auf den Sie zugreifen möchten, muss über den angegebenen Endpunkt angesprochen werden

Ich versuche, hochgeladene Bilddateien mit dem AWS-SDK-Core Ruby Gem zu löschen.

Ich habe folgenden Code:

require 'aws-sdk-core'

def pull_picture(picture)
    Aws.config = {
        :access_key_id => ENV["AWS_ACCESS_KEY_ID"],
        :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"],
        :region => 'us-west-2'
    }

    s3 = Aws::S3::Client.new

    test = s3.get_object(
        :bucket => ENV["AWS_S3_BUCKET"],
        :key => picture.image_url.split('/')[-2],   
    )
end

Ich erhalte jedoch die folgende Fehlermeldung:

Der Bucket, auf den Sie zugreifen möchten, muss über den angegebenen Endpunkt angesprochen werden. Bitte senden Sie alle zukünftigen Anforderungen an diesen Endpunkt.

Ich weiß, dass die Region korrekt ist, denn wenn ich sie in us-east-1 ändere, wird der folgende Fehler angezeigt:

Der angegebene Schlüssel existiert nicht.

Was mache ich hier falsch?

140
user3575214

Es ist wahrscheinlich, dass dieser Eimer in einer anderen Region erstellt wurde, IE und nicht in us-west-2. Das ist das einzige Mal, dass ich gesehen habe "Der Bucket, auf den Sie zugreifen möchten, muss mit dem angegebenen Endpunkt adressiert werden. Bitte senden Sie alle zukünftigen Anforderungen an diesen Endpunkt."

US-Standard ist us-east-1

248
Marcus Walser

Ich war mit einem ähnlichen Fehler konfrontiert, weil sich der Bucket im Bereich us-west-2 befand und das URL-Muster im Pfad Bucketname hatte. Einmal habe ich das URL-Muster so geändert, dass Bucketname als URL-Subdomain verwendet wurde, um die Dateien zu packen, und es funktionierte.

Zum Beispiel war die vorige URL

https://s3.amazonaws.com/bucketname/filePath/filename

Dann ersetzte ich es als

https://bucketname.s3.amazonaws.com/filePath/filename
16
prasun

Überprüfen Sie Ihren Bucket-Standort in der Konsole und verwenden Sie diesen als Referenz für den zu verwendenden Endpunkt: http://docs.aws.Amazon.com/general/latest/gr/rande.html#s3_region

15
Jay Q.

Bei vielen S3-API-Paketen (dieses Problem hatte ich kürzlich mit dem npm s3-Paket ), können Sie auf Probleme stoßen, bei denen die Region als US-Standard gilt. Wenn Sie nach Name suchen, müssen Sie die Region explizit definieren, wenn Sie möchten einen Eimer außerhalb dieser Region zu hosten.

0
Duncan

Für ppl, die immer noch mit diesem Problem konfrontiert sind, fügen Sie s3_Host wie folgt zum config-Hash hinzu

   :storage => :s3,
   :s3_credentials => {:access_key_id => access key,
   :secret_access_key => secret access key},
   :bucket => bucket name here,
   :s3_Host_name => s3-us-west-1.amazonaws.com or whatever comes as per your region}.

Dies hat das Problem für mich behoben.

0
RamanSM

Ich habe diese Fehlermeldung erhalten, als ich versuchte, auf einen nicht vorhandenen Eimer zuzugreifen.

Ich habe versehentlich eine Pfadvariable mit der Bucket-Namensvariable gewechselt, und so hatte der Bucket-Name den Dateipfadwert. Prüfen Sie also vielleicht, ob der Bucket-Name, den Sie in Ihrer Anfrage festgelegt haben, korrekt ist.

0
Sven Möhring

Ich habe mit demselben Problem konfrontiert. Nach vielen Schwierigkeiten habe ich festgestellt, dass das eigentliche Problem mit den Abhängigkeiten von com.amazonaws zusammenhängt. Nach dem Hinzufügen von Abhängigkeiten ist dieser Fehler verschwunden.

0

Keine der obigen Antworten hat mein Problem behoben.

Die obigen Antworten sind wahrscheinlich eher die Ursache für Ihr Problem, aber mein Problem war, dass ich den falschen Bucket-Namen verwendet habe. Es war ein gültiger Eimername, es war nur nicht mein Eimer.

Der Eimer, auf den ich zeigte, befand sich in einer anderen Region als meine Lambda-Funktion. Überprüfen Sie also Ihren Eimernamen!

0
Peter Grainger

Während der Erstellung von S3Client können Sie die Endpunktzuordnung für eine bestimmte Region angeben. Wenn der Standardwert s3.amazonaws.com ist, wird der Bucket in us-east-1 erstellt, der Nord-Virginia ist. 

Weitere Informationen zu S3-Endpunkten und -Regionen in AWS-Dokumenten: http://docs.aws.Amazon.com/general/latest/gr/rande.html#s3_region .

Stellen Sie daher stets den Endpunkt/die Region sicher, während Sie den S3Client erstellen und auf S3-Ressourcen zugreifen, indem Sie denselben Client in derselben Region verwenden.

Wenn der Bucket über die AWS S3-Konsole erstellt wird, überprüfen Sie die Region in der Region für diesen Bucket. Erstellen Sie dann einen S3-Client in dieser Region. Verwenden Sie dazu die Endpunktdetails, die im obigen Link angegeben sind. 

0
Rathan

Ich hatte den gleichen Fehler. Es trat auf, als der s3-Client mit einem anderen Endpunkt erstellt wurde als dem, der beim Erstellen des Buckets eingerichtet wurde. 

  • FEHLERCODE - Der Eimer wurde mit EAST Region eingerichtet.

s3Client = Neuer AmazonS3Client (AWS_ACCESS_KEY, AWS_SECRET_KEY, RegionEndpoint.USWest2)

  • FIX 

s3Client = Neuer AmazonS3Client (AWS_ACCESS_KEY, AWS_SECRET_KEY, RegionEndpoint. USEast1 )

0
Tushar