2016-04-28 9 views
1

PythonでGoogle Cloudストレージバケットを作成するために、このリンクに記載されている手順に従っています。 https://cloud.google.com/storage/docs/xml-api/gspythonlibrary編集したBOTOファイルをPythonが認識しない

すべての指示に従っており、すべての資格情報を含むブートファイルを作成しました。両方のファイルを開き、gs_access_key_idとgs_secret_access_keyが存在し、ファイルが保存されていることがわかります。

import webapp2 
import sys 
sys.path.append("/Library/Frameworks/Python.framework/Versions/2.7/lib/py thon2.7/site-packages") 
import boto 
import gcs_oauth2_boto_plugin 

import os 
import shutil 
import StringIO 
import tempfile 
import time 

GOOGLE_STORAGE = 'gs' 
LOCAL_FILE = 'file' 

CLIENT_ID = '' 
CLIENT_SECRET = '' 
gcs_oauth2_boto_plugin.SetFallbackClientIdAndSecret(CLIENT_ID,  CLIENT_SECRET) 

class MainHandler(webapp2.RequestHandler): 
def get(self): 
    self.response.write('Hello world! This should work ! I have been working no this shit all day!') 
    now = time.time() 
    CATS_BUCKETS = 'cats-%d' % now 
    DOGS_BUCKETS = 'cats-%d' % now 
    project_id = 'name-of-my-bucket' 

    for name in (CATS_BUCKETS, DOGS_BUCKETS): 
     uri = boto.storage_uri(name, GOOGLE_STORAGE) 
     try: 
      header_values={'x-google-project-id': project_id} 
      uri.create_bucket() 
      print 'Successfully created bucket "%s"' %name 
     except boto.exception.StorageCreateError, e: 
      print 'Failed to create bucket:', e 

app = webapp2.WSGIApplication([ 
('/', MainHandler) 
], debug=True) 

ただし、create_bucketを実行しようとする行でエラーが発生します。私はそれをデバッグし、gs_access_key_idが見つかりませんでしたが、私の.botoファイルにはっきりと記載されています。

これは、localhostでこのプログラムを実行しようとするとエラーになります。

File "/Users/LejendVega/Desktop/create-buckets-adrian/main.py", line 48, in get 
uri.create_bucket() 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/storage_uri.py", line 558, in create_bucket 
conn = self.connect() 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/storage_uri.py", line 140, in connect 
**connection_args) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/gs/connection.py", line 47, in __init__ 
suppress_consec_slashes=suppress_consec_slashes) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/s3/connection.py", line 191, in __init__ 
validate_certs=validate_certs, profile_name=profile_name) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/connection.py", line 569, in __init__ 
host, config, self.provider, self._required_auth_capability()) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/auth.py", line 989, in get_auth_handler 
'Check your credentials' % (len(names), str(names))) 
NoAuthHandlerFound: No handler was ready to authenticate. 3 handlers were checked. ['OAuth2Auth', 'OAuth2ServiceAccountAuth', 'HmacAuthV1Handler'] Check your credentials 

のbotoが私のbotoファイル内にある自分の資格情報を認識していない理由を私は知りたいすべてがあります。

+0

最初に、使用することを希望するクレデンシャルファイルが実際にパスで認識されていることを確認できますか?私はこのようなコードをお勧めします:print boto.pyami.config.BotoConfigLocations次に、動作すると仮定して、ロードされた設定があなたの期待に合っていることを確認してください:print boto.pyami.config.Config()。dump() –

+0

それは良い答えでした。それは['/etc/boto.cfg'、 '〜/ .boto']のconfigsファイルを探していることを示しています。しかし、私はそれをダンプするように頼むとき。それは誰も言わない。また、boto.pyami.configと入力すると、「NameError: '両方とも定義されていません。インポートからの未定義変数:pyami」と表示されます。このエラーについて私は何をしますか?私はダンプのためになしを得る。 –

+0

「両方」が定義されていないと、入力ミスのように聞こえるのですか?あなたは 'boto'を意味しましたか? –

答えて

0

さて、botoモジュールは、Google Cloudのデータを作成して編集するために、あなたの認証情報を収集するためにboto設定ファイルを調べます。 botoモジュールが設定ファイルを見つけることができない場合、上記のエラーが発生します。私がしたことは、3日後にそれを理解しようとした直後から、文字通り、自分の信任状をコードに入れました。

from boto import connect_gs 

name = 'the-name-of-your-bucket' 
gs_conn = connect_gs(gs_access_key_id='YOUR_ACCESS_KEY_ID', 
          gs_secret_access_key='YOUR_ACCESS_SECRET_KEY') 
    """This is the line that creates the actual bucket""" 
gs_conn.create_bucket(name) 

これは簡単です。これで、boto設定ファイルなしで何でもしたいことができます。

関連する問題