2012-02-10 201 views
2

根據手冊設置了Google雲端存儲所需的環境。 我已經安裝了「gsutil」並設置了所有路徑。 我的gsutil完美的作品,但是,當我嘗試運行下面的代碼,使用Python的Google雲端存儲

#!/usr/bin/python 

import StringIO 
import os 
import shutil 
import tempfile 
import time 
from oauth2_plugin import oauth2_plugin 

import boto 

# URI scheme for Google Cloud Storage. 
GOOGLE_STORAGE = 'gs' 
# URI scheme for accessing local files. 
LOCAL_FILE = 'file' 

uri=boto.storage_uri('sangin2', GOOGLE_STORAGE) 

try: 
    uri.create_bucket() 
    print "done!" 
except boto.exception.StorageCreateError, e: 
    print "failed" 

它給「403次拒絕訪問」錯誤。

Traceback (most recent call last): 
     File "/Volumes/WingIDE-101-4.0.0/WingIDE.app/Contents/MacOS/src/debug/tserver/_sandbox.py", line 23, in <module> 
     File "/Users/lsangin/gsutil/boto/boto/storage_uri.py", line 349, in create_bucket 
     return conn.create_bucket(self.bucket_name, headers, location, policy) 
     File "/Users/lsangin/gsutil/boto/boto/gs/connection.py", line 91, in create_bucket 
     response.status, response.reason, body) 
    boto.exception.GSResponseError: GSResponseError: 403 Forbidden 
     <?xml version='1.0' encoding='UTF-8'?><Error><Code>AccessDenied</Code><Message>Access denied.</Message></Error> 

由於我是新來這個,它是有點難受,找出原因。 有人可以幫我嗎? 謝謝。

+0

您是否在Google API控制檯中激活了Google存儲空間?您在哪裏設置了需要使用Google服務進行身份驗證的oauth client_id,client_secret等? – 2012-02-10 10:18:15

+0

是的,我想我做到了,當我安裝了一個gsutil,它工作正常。但是,上面的代碼給了我「403禁止」的錯誤。我設置Python路徑的指示(出口PYTHONPATH = $ {PYTHONPATH}:$ HOME/gsutil會/博託:$ HOME/gsutil會),但它仍然給我的問題。 – 2012-02-10 18:50:58

+0

那麼這可能有點幫助http://groups.google.com/group/gs-discussion/browse_thread/thread/5abe343e35a6d842?pli=1 – 2012-02-13 10:18:43

回答

1

boto庫應該會自動查找並使用您的$ HOME/.boto文件。需要檢查的一件事:確保您使用的項目被設置爲傳統訪問的默認項目(在API控制檯上,單擊「存儲訪問」並驗證它是否顯示「這是您的默認項目,用於傳統訪問」)) 。當我設置不正確,並且按照您引用的創建存儲區示例進行操作時,我也收到了403錯誤,但是,這對您在gsutil中的工作並不合適,但不能直接使用boto。

嘗試增加「調試= 2」時,實例化storage_uri對象,像這樣:

uri = boto.storage_uri(name, GOOGLE_STORAGE, debug=2) 

這將產生在stdout一些附加的調試信息,然後可以與調試輸出從類似的比較,運行gsutil示例(通過gsutil -D mb)。