我尝试运行一个docker容器应用程序,该应用程序访问Cloud Shell中的Cloud Datastore,但拒绝访问。我怀疑Cloud Shell没有访问Cloud Datastore的范围。
是否可以在Cloud Shell实例中添加适当的范围?
答案 0 :(得分: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”实体,但您明白了。
P.S。我在谷歌工作。