Подпись Not Найдено в тумане и волне несущей
Я использую carrierwave и fog-aws при загрузке файла в aws и сохранении URL-адреса aws в моей локальной таблице БД. Я создал carrierwave.rb
файл для настройки всех учетных данных fog-aws.
begin
CarrierWave.configure do |config| # required
config.storage = :fog
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => 'Key_id', # required
:aws_secret_access_key => 'access_key', # required
:region => 'us-west-2' # o\tional, defaults to 'us-east-1'
# :fog => 'host',
# :endpoint => 'host'
}
config.fog_directory = 'my-images-server' # required
# see https://github.com/jnicklas/carrierwave#using-amazon-s3
# for more optional configuration
config.fog_public = true # optional, defaults to true
Файл моего загрузчика содержит
class QueryUploader < CarrierWave::Uploader::Base
storage :fog
def store_dir
base_dir = File.join(Rails.root, "public", "uploads")
"#{base_dir}/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def cache_dir
"/tmp/service-quep"
end
def extension_white_list
%w(sql)
end
end
Я прочитал много статей и ломал голову за 2 дня, так и не смог найти никакого решения. Мой ключ доступа без пробела и имя сегмента не заканчивается косой чертой. Может кто-нибудь сказать, почему это
Ожидаемое (200) <=> Фактическое (403 запрещено) excon.error.response:body => "\n
SignatureDoesNotMatch
Рассчитанная нами подпись запроса не соответствует предоставленной вами подписи. Проверьте свой ключ и метод подписи.YTUUYUDTDYJBKJNUFYD
ошибка идет.
1 ответ
Послушайте, в этом методе вам не нужно писать дополнительный код из-за автоматического сопоставления каталогов Rails, как если бы вы использовали "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
тогда это автоматически сопоставление /public/uploads/...
ваш код
def store_dir
base_dir = File.join(Rails.root, "public", "uploads")
"#{base_dir}/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
это будет
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
Ты можешь проверить this gist
это отлично подходит для работы с Rails, CarrierWave и AWS, также вы можете проверить это