Туман с загрузкой Carrierwave на S3 неверный путь загрузки по умолчанию
Я пытаюсь загрузить на S3 Carrierwave и Fog-Aws, и у меня возникла проблема. По какой-то причине туман пытается загрузить в мое ведро
https://{bucket-name}.s3.amazonaws.com
Но когда я получаю доступ к файлу напрямую из aws, формат URL выглядит так:
https://s3-{region}.amazonaws.com/{bucket-name
Всякий раз, когда я пытаюсь использовать путь, который использует Fog, он выдает мне следующую ошибку:
The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
Итак, мой вопрос, есть ли способ
A) Измените формат конечной точки на S3 так, чтобы он соответствовал ожидаемому Fog, или
Б) Изменить настройку тумана, чтобы использовать этот другой формат?
Для справки:
Я использую Carrierwave версии 1.0, fog-aws версии 0.11.0
Вот мой файл carrierwave.rb:
if Rails.env.test? or Rails.env.development?
CarrierWave.configure do |config|
config.storage = :file
config.root = "#{Rails.root}/tmp"
config.cache_dir = "#{Rails.root}/tmp/images"
end
else
CarrierWave.configure do |config|
config.fog_provider = 'fog/aws'
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
:region => ENV['AWS_S3_REGION'],
:endpoint => "https://s3-#{ENV['AWS_S3_REGION']}.amazonaws.com/#{ENV['AWS_S3_BUCKET_NAME']}"
}
config.storage = :fog
config.fog_directory = ENV['AWS_S3_BUCKET_NAME']
config.fog_public = false
end
end
1 ответ
Я считаю, что регион - это единственная настройка, которую вам нужно изменить в этом случае. Если он установлен точно (и не является регионом по умолчанию us-east-1), он должен менять хост по вашему желанию.
Тем не менее, я бы не ожидал, что мне также потребуется изменить конечную точку, как это. Это будет установлено, если вам нужно использовать материал CNAME, который вам не нужен. Отказ от этого при настройке региона, надеюсь, даст вам то, что вы ищете.