Google容器引擎:访问云存储

时间:2016-06-20 15:47:12

标签: python docker google-cloud-storage google-cloud-platform google-kubernetes-engine

我无法在Google容器引擎中使用应用程序默认凭据。文档说它们适用于App Engine和Compute Engine,但我被告知它们应该透明地传递给在Container Engine上运行的容器。

这是失败的代码:

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

它失败的错误:AssertionError: No api proxy found for service "memcache"

期望Application Default Credentials与Container Engine一起使用是否正确?如果没有,任何人都可以推荐从容器引擎上运行的容器连接云存储的正确方法吗?

感谢。

编辑:运行gcloud beta auth application-default activate-service-account --key-file <my_key>.json后,上面的Python示例中的credentials对象会填充数据。但是我仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:1)

在Container Engine上访问云存储的最简单方法似乎是gcloud库。

如果在容器上安装了App Engine SDK,它将无法使用零配置(gcloud找到它并假设它在App Engine上运行)。所以我停止使用官方Google container

python container上只需将 gcloud 添加到您的 requirements.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库也适用于JavaNodeRuby