Я хочу создать приложение, которое имеет легкие взаимодействия с хранилищем google, то есть файлы списка в ведро, загрузку файла и загрузку файла.аутентификация для Google Storage с использованием Python
После того, как this tutorial, я решил использовать учетную запись службы (а не пользовательскую) для аутентификации и следовать процедуре. Я создал открытый/закрытый ключ на консоли и загрузил ключ на моем компьютере. Затем я создал файл .boto, который указывает на этот частный ключ, и, наконец, запустил эту программу, и она работала:
import boto
import gcs_oauth2_boto_plugin
uri = boto.storage_uri('txxxxxxxxxxxxxx9.appspot.com', 'gs')
for obj in uri.get_bucket():
print '%s://%s/%s' % (uri.scheme, uri.bucket_name, obj.name)
Как вы можете видеть, пакет gcs_oauth2_boto_plugin
не используется в коде, так что я решил получить Избавься от этого. Но волшебно, когда я комментировать import gcs_oauth2_boto_plugin
строку и запустить программу еще раз, я получаю эту ошибку:
C:\Users\...\Anaconda3\envs\snakes\python.exe C:/Users/.../Dropbox/Prog/s3_manifest_builder/test.py
Traceback (most recent call last):
File "C:/Users/.../Dropbox/Prog/s3_manifest_builder/test.py", line 10, in <module>
for obj in uri.get_bucket():
File "C:\Users\...\Anaconda3\envs\snakes\lib\site-packages\boto\storage_uri.py", line 181, in get_bucket
conn = self.connect()
File "C:\Users\...\Anaconda3\envs\snakes\lib\site-packages\boto\storage_uri.py", line 140, in connect
**connection_args)
File "C:\Users\...\Anaconda3\envs\snakes\lib\site-packages\boto\gs\connection.py", line 47, in __init__
suppress_consec_slashes=suppress_consec_slashes)
File "C:\Users\...\Anaconda3\envs\snakes\lib\site-packages\boto\s3\connection.py", line 190, in __init__
validate_certs=validate_certs, profile_name=profile_name)
File "C:\Users\...\Anaconda3\envs\snakes\lib\site-packages\boto\connection.py", line 569, in __init__
host, config, self.provider, self._required_auth_capability())
File "C:\Users\...\Anaconda3\envs\snakes\lib\site-packages\boto\auth.py", line 987, in get_auth_handler
'Check your credentials' % (len(names), str(names)))
boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials
Так что мои вопросы:
1-, как вы можете объяснить, что удаление импорта, который не используется в коде это не получается?
2 в целом, чтобы понять процесс аутентификации, если я хочу запустить свое приложение на машине, я обязательно должен иметь .boto-файл (который указывает на закрытый ключ моей учетной записи службы) ранее? Или есть более чистый/более простой способ предоставить доступ к моему приложению в Google Storage для взаимодействия/выхода?
Например, я должен предоставить публичный и закрытый ключ в качестве строк для моей программы, когда я хочу подключиться к ведро S3 с помощью boto
. Мне не нужно создавать .boto-файл, импортировать пакеты и т. Д., Что делает его намного проще в использовании, не так ли?