Seahorse :: Client :: NetworkingError Загрузка файла Amazon S3 с помощью направляющих
В моем приложении rails 4 я пытаюсь загрузить и затем загрузить обычный файл png в мое хранилище s3, используя aws-sdk (используяgem 'aws-sdk', '~> 2'
).
В среде разработки код работает совершенно нормально. Но если я попробуюrails s -e production
или если я проверяю загрузку на моем экземпляре heroku, я получаю следующую ошибку при проверке функциональности загрузки изображений,
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'
Мой метод upload_to_s3, упомянутый в трассировке, выглядит следующим образом:
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
Переменные среды одинаковы для обеих сред. Я действительно не знаю, куда еще обратиться, чтобы отладить это. Почему это работает в разработке, а не в производстве? У меня такое чувство, что я упускаю что-то довольно очевидное.
ОБНОВИТЬ:
Давайте упростим это далее, так как я не получаю очень много обратной связи.
s3 = Aws::S3::Resource.new
bucket = s3.bucket(ENV["BUCKET"])
bucket.object("some_file.txt").put(body:'Hello World!')
Вышесказанное полностью работает в моей среде разработки, но не в моей производственной среде. В производстве он неисправен, когда я звонюput(body:'Hello World!')
, Я знаю, что это, вероятно, связано с разрешениями на запись или чем-то еще, но, опять же, я проверил мои переменные среды, и они идентичны. Есть ли какая-то конфигурация, о которой я не знаю, которую я должен проверить?
Я пытался использовать нового пользователя IAM. Я также временно скопировал все содержимое файла development.rb в production.rb, просто чтобы посмотреть, влияет ли на него конфигурация для разработки или производства, но безрезультатно. Я также запустил обновление пакета. Опять не повезло.
Я хотел бы, чтобы ошибка была более наглядной, но она просто говоритSeahorse::Client::NetworkingError (Connection reset by peer)
независимо от того, что я пытаюсь