Cloud Shell で Cloud Datastore にアクセスする Docker コンテナ アプリケーションを実行しようとしましたが、アクセスが拒否されました。Cloud Shell には、Cloud Datastore にアクセスするためのスコープがないと思われます。
Cloud Shell インスタンスに適切なスコープを追加することはできますか?
Cloud Shell で Cloud Datastore にアクセスする Docker コンテナ アプリケーションを実行しようとしましたが、アクセスが拒否されました。Cloud Shell には、Cloud Datastore にアクセスするためのスコープがないと思われます。
Cloud Shell インスタンスに適切なスコープを追加することはできますか?
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 私は Google で働いています。