Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

can not authenticate with gcs in python

I am following the example in https://developers.google.com/storage/docs/gspythonlibrary#credentials

I created client/secret pair by choosing in the dev. console "create new client id", "installed application", "other".

I have the following code in my python script:

import boto
from gcs_oauth2_boto_plugin.oauth2_helper import SetFallbackClientIdAndSecret
CLIENT_ID = 'my_client_id'
CLIENT_SECRET = 'xxxfoo'
SetFallbackClientIdAndSecret(CLIENT_ID, CLIENT_SECRET)

uri = boto.storage_uri('foobartest2014', 'gs')
header_values = {"x-goog-project-id": proj_id}
uri.create_bucket(headers=header_values)

and it fails with the following error:

   File "/usr/local/lib/python2.7/dist-packages/boto/storage_uri.py", line 555, in create_bucket
      conn = self.connect()
    File "/usr/local/lib/python2.7/dist-packages/boto/storage_uri.py", line 140, in connect
      **connection_args)
    File "/usr/local/lib/python2.7/dist-packages/boto/gs/connection.py", line 47, in __init__
      suppress_consec_slashes=suppress_consec_slashes)
    File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 190, in __init__
      validate_certs=validate_certs, profile_name=profile_name)
    File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 572, in __init__
      host, config, self.provider, self._required_auth_capability())
    File "/usr/local/lib/python2.7/dist-packages/boto/auth.py", line 883, in get_auth_handler
      'Check your credentials' % (len(names), str(names)))
  boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 3 handlers were checked. ['OAuth2Auth', 'OAuth2ServiceAccountAuth', 'HmacAuthV1Handler'] Check your credentials
like image 587
Roman Avatar asked Jun 29 '14 14:06

Roman


People also ask

How do I find my Google storage key?

In the left sidebar of the dashboard, click Google Cloud Storage and then Settings. Select the Interoperability tab. If you haven't enabled it already, click on Interoperable Access. Now you should see an empty list and a Create new Key button.


2 Answers

I have been struggling with this for the last couple of days, turns out the boto stuff, and that gspythonlibrary are all totally obsolete.

The latest example code showing how to use/authenticate Google Cloud Storage is here: https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/storage/api

like image 142
griffin2000 Avatar answered Sep 19 '22 23:09

griffin2000


You need to provide a client/secret pair in a .boto file, and then run gsutil config.

It will create a refresh token, and then should work!

For more info, see https://developers.google.com/storage/docs/gspythonlibrary#credentials

like image 45
Newbie Avatar answered Sep 22 '22 23:09

Newbie