Объем доступа к Cloud Shell
Я попытался запустить приложение-докер-контейнер, которое обращается к Cloud Datastore в Cloud Shell, но доступ был отклонен. Я подозреваю, что Cloud Shell не имеет возможности доступа к Cloud Datastore.
Можно ли добавить соответствующую область действия экземпляра Cloud Shell?
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 не должны иметь этой проблемы. Вот рабочий пример использования API Cloud Datastore в контейнере, работающем в Cloud Shell:
$ 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 Я работаю в Google.