Объем доступа к 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.

Другие вопросы по тегам