1

我無法獲取在Google容器引擎中工作的應用程序默認憑據。文檔說它們是用於App Engine和Compute Engine的,但我被告知應該透明地傳遞到Container Engine上運行的容器。Google容器引擎:訪問雲存儲

這裏是一個的失敗代碼:

credentials = GoogleCredentials.get_application_default() 
service = discovery.build('storage', 'v1', credentials=credentials) 

它與失敗的錯誤:AssertionError: No api proxy found for service "memcache"

它是正確的預期應用默認憑據與集裝箱引擎工作?如果沒有,任何人都可以推薦從容器引擎上運行的容器連接雲存儲的正確方法嗎?

謝謝。

編輯:運行之後gcloud beta auth application-default activate-service-account --key-file <my_key>.json在上面的Python示例中的credentials對象被填充數據。不過,我仍然遇到同樣的錯誤。

+0

您使用的是什麼運行時? – mgilson

+0

@mgilson請讓我知道如果這是你要求的:'客戶端版本:version.Info {Major:「1」,Minor:「2」,GitVersion:「v1.2.4」,GitCommit:「3eed1e3be6848b877ff80a93da3785d9034d0a4f」 ,GitTreeState:「clean」} 服務器版本:version.Info {Major:「1」,Minor:「2」,GitVersion:「v1.2.4」,GitCommit:「3eed1e3be6848b877ff80a93da3785d9034d0a4f」,GitTreeState:「clean」} – user326502

+0

IIRC ,容器引擎支持不同的python運行時,並不是所有的都支持'memcache'。 (FWIW,這是我的經驗之外,所以我可能是錯的 - 我只是從我腦海裏的某些地方拉起了這些東西,我似乎因爲某種原因緩存了一些這些信息......) – mgilson

回答

1

在Container Engine上訪問雲存儲最簡單的方法似乎是gcloud庫。

如果App Engine SDK安裝在容器上(gcloud發現它並假定它在App Engine上運行),它將無法使用零配置。所以我停止使用官方Google container

在一個python container只需添加gcloudrequirements.txt(或運行pip install gcloud)。只要容器位於Google Compute Engine實例上,您就可以訪問同一項目中的任何存儲桶。

實施例:

from gcloud import storage 
client = storage.Client() 
bucket = client.get_bucket('<bucket_name>') 
blob = bucket.blob('test_file.txt') 
blob.upload_from_string('test content') 

的gcloud庫還存在JavaNode,和Ruby

+0

我很高興你找到了解決方案。我編輯了代碼來添加導入語句 - 只是爲了明確。 – mgilson

相關問題