2

クラウドシェル内のクラウドデータストアにアクセスするドッキングコンテナアプリケーションを実行しようとしましたが、アクセスが拒否されました。クラウドシェルにCloud Datastoreにアクセスする範囲がないと思われます。クラウドシェルのアクセス範囲

クラウドシェルのインスタンスを適切な範囲に追加することはできますか? Pythonのoauth2clientパッケージの新しいバージョンを使用してどこ

+0

正確なエラーはありますか? –

+0

ここにerrerの最後の部分があります。 _refresh self._retrieve_infoで -----ファイル "/usr/local/lib/python2.7/dist-packages/oauth2client/contrib/gce.py"、ライン134、(HTTP_REQUEST) ファイル」 /etc/local/lib/python2.7/dist-packages/oauth2client/contrib/gce.py "、117行目、_retrieve_info self.service_account_email = info ['email'] TypeError:文字列インデックスは整数でなければなりません ----- 申し訳ありません、問題は範囲ではなく、認証アカウントです。クラウドシェルでサービスアカウントが既定で使用されていないため、このエラーが発生しました。コンテナアプリケーションでサービスアカウントを強制的に使用するにはどうすればよいですか? – etusji

答えて

1

クラウドシェル資格の取り扱いにバグがありました(直接または間接的に)これは新しいイメージのリリースで修正されなければならない

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 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.私はGoogleで働いています。

+0

はい、今動作します。ありがとう! – etusji