Я использую Carrierwave и Fog для хранения изображений в облаке. Раньше я использовал Amazon S3 в качестве фактического хранилища, которое работало без проблем. Но я переключился на Google Cloud Storage, и теперь каждый раз, когда я пытаюсь что-либо сохранить, я получаю следующую ошибку:
Excon :: Error :: Запрещено в GalleriesController # create
Ожидаемые (200) ‹=> Фактические (403 Запрещено) excon.error.response: body => "
InvalidSecurity
Предоставленные учетные данные недействительны. Запрос не был подписан или содержал некорректную подпись": cookies => []: headers => {"Alt-Svc" => "hq = \": 443 \ "; ma = 2592000; quic = 51303433; quic = 51303432; quic = 51303431; quic = 51303339; quic = 51303335, quic = \": 443 \ " ; ma = 2592000; v = \ "43,42,39,38,35 \" "" Content-Length "=>" 224 "" Content-Type "=>" application / xml; charset = UTF-8 "" Date "=>" Вт, 01 мая 2018 г. 22:03:23 GMT "" Server "=>" UploadServer "" Vary "=>" Origin "" X-GUploader-UploadID "=>" xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx "}: host => "[каталог] .storage.googleapis.com": local_address => "xxx.xxx.x.xxx": local_port => xxxxx: path => "/uploads%2Fimage.png": port => 443: reason_phrase => «Запрещено»: remote_ip => «xxx.xxx.x.xx»: status => 403: status_line => «HTTP / 1.1 403 Запрещено \ r \ n»
инициализаторы / carrierwave.rb
CarrierWave.configure do |config|
config.fog_provider = 'fog/google'
config.fog_credentials = {
provider: 'Google',
google_storage_access_key_id: 'GOOGxxxxxxxxxxx',
google_storage_secret_access_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}
config.fog_directory = 'xxxxxxxxxxx'
#config.fog_public = false
#config.fog_attributes = { cache_control: "public, max-age=#{365.day.to_i}" }
end
Загрузчик
class PhotoFileUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :fog
def fix_exif_rotation
manipulate! do |img|
img.tap(&:auto_orient)
end
end
process :fix_exif_rotation
process :resize_to_fit => [800, 56000]
version :thumb do
process resize_to_fit: [300, 56000]
end
end
Gemfile
gem "fog-google"
gem "google-api-client", "> 0.8.5", "< 0.9"
gem "mime-types"
Похоже, что есть проблема с key_id или secret_key, но я просто скопировал и вставил оба из раздела Interoperability на странице настроек Google Cloud Storage. И я понятия не имею, как проверить, действительны ли они. Мой запрос от localhost, если это важно.
Я нашел несколько похожих ошибок на SO, но все они связаны с Amazon и, похоже, не относятся к тому, что я делаю.
У кого-нибудь есть идеи, как я могу это отладить?