Seahorse :: Client :: NetworkingError Hochladen von Amazon S3-Dateien mit Rails

In meiner Rails 4-Anwendung versuche ich, eine reguläre PNG-Datei mit dem Befehl aws-sdk herunterzuladen und anschließend in meinen S3-Bucket hochzuladen (mitgem 'aws-sdk', '~> 2').

In der Entwicklungsumgebung funktioniert der Code einwandfrei. Aber wenn ich es versucherails s -e production oder wenn ich den Upload auf meiner Heroku-Instanz teste, wird beim Testen der Funktion zum Hochladen von Bildern die folgende Fehlermeldung angezeigt:

Seahorse::Client::NetworkingError (Connection reset by peer):
  app/helpers/aws_s3.rb:73:in `upload_to_s3'
  app/controllers/evaluations_controller.rb:19:in `test'

eine im Trace erwähnte upload_to_s3-Methode sieht folgendermaßen aus:

def upload_to_s3(folder_name)
  url = "http://i.imgur.com/WKeQQox.png"
  filename = "ss-" + DateTime.now.strftime("%Y%d%m-%s") + "-" + SecureRandom.hex(4) + ".png"
  full_bucket_path = Pathname(folder_name.to_s).join(filename).to_s
  file = save_to_tempfile(url, filename)
  s3 = Aws::S3::Resource.new(access_key_id: ENV["IAM_ID"], secret_access_key: ENV["IAM_SECRET"], region: 'us-east-1')
  s3_file = s3.bucket(ENV["BUCKET"]).object(full_bucket_path)
  s3_file.upload_file(file.path)
  raise s3_file.public_url.to_s.inspect
end

Die Umgebungsvariablen sind in beiden Umgebungen gleich. Ich weiß nicht wirklich, wohin ich mich sonst wenden soll, um dies zu debuggen. Warum sollte es in der Entwicklung funktionieren, aber nicht in der Produktion? Ich habe das Gefühl, dass mir etwas ziemlich Offensichtliches fehlt.

AKTUALISIEREN

Lassen Sie uns dies weiter vereinfachen, da ich nicht sehr viel Feedback bekomme.

s3 = Aws::S3::Resource.new
bucket = s3.bucket(ENV["BUCKET"])
bucket.object("some_file.txt").put(body:'Hello World!')

Das oben Genannte funktioniert vollständig in meiner Entwicklungsumgebung, aber nicht in meiner Produktionsumgebung. In der Produktion stört es, wenn ich @ anruput(body:'Hello World!'). Ich weiß, dass dies wahrscheinlich mit Schreibberechtigungen oder Ähnlichem zusammenhängt, aber ich habe auch hier meine Umgebungsvariablen überprüft und sie sind identisch. Gibt es eine Konfiguration, von der ich nicht weiß, dass ich sie überprüfen soll?

Ich habe versucht, einen neuen IAM-Benutzer zu verwenden. Ich habe auch vorübergehend den gesamten Inhalt der Datei development.rb in die Datei production.rb kopiert, um festzustellen, ob die Konfiguration für die Entwicklung oder Produktion Auswirkungen darauf hatte, ohne Erfolg. Ich habe auch ein Bundle-Update ausgeführt. Wieder kein Glück.

Ich wünschte, der Fehler wäre aussagekräftiger, aber es steht nurSeahorse::Client::NetworkingError (Connection reset by peer) egal was ich versuche.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage