2

我尝试运行一个 docker 容器应用程序来访问 Cloud Shell 中的 Cloud Datastore,但访问被拒绝。我怀疑 Cloud Shell 没有访问 Cloud Datastore 的范围。

是否可以为 Cloud Shell 实例添加适当的范围?

4

1 回答 1

1

Cloud Shell 凭据处理中存在一个错误,在该错误中,使用较新版本的 Python oauth2client 包(直接或间接)会失败并出现类似错误

File "/usr/local/lib/python2.7/dist-packages/oauth2client/contrib/gce.py", line 117, in _retrieve_info 
self.service_account_email = info['email']
TypeError: string indices must be integers 

这应该在较新的映像版本中得到修复。Cloud Shell 的新会话不应出现此问题。以下是在 Cloud Shell 中运行的容器中使用 Cloud Datastore API 的工作示例:

$ cat Dockerfile FROM python RUN pip install gcloud COPY test.py . CMD ["python", "test.py"]

$ cat test.py from gcloud import datastore client = datastore.Client(project='your-project-id-23242') query = datastore.Query(client, kind='EntityKind') print(list(query.fetch()))

$ docker build -t test . ... docker output ...

$ docker run -ti test []

该示例仅打印出一个空列表,因为我的项目数据存储区中没有任何“EntityKind”类型的实体,但您明白了。

PS 我在谷歌工作。

于 2016-08-05T21:04:41.320 回答