настройка переменной окружения GOOGLE_APPLICATION_CREDENTIALS
Я пытаюсь настроить учетную запись службы и сохранить файл учетных данных на сервере Linux и сохранить путь в GOOGLE_APPLICATION_CREDENTIALS, предоставленный Google.
Говорят, что клиентские библиотеки Google Cloud используют библиотеку под названием Application Default Credentials (ADC) для автоматического поиска учетных данных вашей учетной записи службы.
https://cloud.google.com/docs/authentication/production
Я использую CarrierWave в этой библиотеке тумана: Google для загрузки и скачивания файлов. Не могли бы вы помочь или поделиться своими мыслями, как мы можем использовать эти библиотеки.
моя реализация загрузчика CarrierWave ниже:
class TestUploader < CarrierWave::Uploader::Base
storage :fog
def fog_credentials
{
:provider => 'google',
:google_project =>'my project',
:google_json_key_location => GOOGLE_APPLICATION_CREDENTIALS
}
end
def fog_provider
'fog/google'
end
def fog_directory
'{#bucket-name}'
end
def store_dir
when :File
"#{file.getpath}/file"
when :audio
"#{file.getpath}/audio"
else
p " Invalid file "
end
end
end
Я пробовал, но это не сработало. Пожалуйста, предложите здесь.
1 ответ
Существует проблема Github, указанная как:
Closing issue. 1.0.0 is out, and we have no more mocks for json backed objects.
Вы также можете проверить документацию по реализации облачного хранилища Google, где указано:
Используйте официальную жемчужину google-cloud от Google для облачного хранилища Google вместо тумана. Нет необходимости активировать Interoperable Access в вашем проекте. Положитесь на предпочтительный механизм аутентификации Google. т. е. сервисные учетные записи.
Как упоминалось в ответе Stackoverflow :
Вы можете увидеть этот код:
Облачное хранилище Google с использованием драгоценного камня Fog: ```ruby
require "fog/google" # Uncomment the following line if you want to use Mock #Fog.mock! # Bucket name bucket = "an-existing-bucket" # Timestamp used as sample string test = Time.now.utc.strftime("%Y%m%d%H%M%S") connection = Fog::Storage.new({ :provider => "Google", :google_project => "your-project", :google_json_key_location => "path-to-key.json", }) # Lists objects in a bucket puts connection.list_objects(bucket) #Creates new object connection.put_object(bucket, test, test) puts "Object #{test} was created." ``
`