2

Cloud Shell で Cloud Datastore にアクセスする Docker コンテナ アプリケーションを実行しようとしましたが、アクセスが拒否されました。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 私は Google で働いています。

于 2016-08-05T21:04:41.320 に答える