一尘不染

Google容器引擎:访问云存储

docker

我无法在Google Container Engine中使用“应用程序默认凭据”。这些文档说,它们是为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>.jsoncredentials在上述Python示例与数据填充对象。但是我仍然遇到相同的错误。


阅读 286

收藏
2020-06-17

共1个答案

一尘不染

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

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

python容器上,只需将 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

2020-06-17