2016-08-04 5 views
2

1.9.40(最新の現在の)SDKのdev_appserver.pyを使用しているpython appengine-gcs-clientデモを入手できません。Python appengine-gcs-clientのデモがAccessTokenRefreshError(u'internal_failure '、)を打ちました

私はSetting Up Google Cloud StorageApp Engine and Google Cloud Storage Sample命令に従った。

有料アプリのデフォルトのバケットを作成しました。請求は有効になっており、1日の支出制限はゼロではありません。開発者コンソールを使用してそのバケットにファイルを正常にアップロードしました。

私はgithubからGoogleCloudPlatform/appengine-gcs-clientレポをクローニングした。私は

dancorn-laptop.acasa:/home/dancorn/src/appengine-gcs-client/python> /home/usr_local/google_appengine_1.9.40/dev_appserver.py demo 
INFO  2016-08-04 01:07:51,786 sdk_update_checker.py:229] Checking for updates to the SDK. 
INFO  2016-08-04 01:07:51,982 sdk_update_checker.py:257] The SDK is up to date. 
INFO  2016-08-04 01:07:52,121 api_server.py:205] Starting API server at: http://localhost:50355 
INFO  2016-08-04 01:07:52,123 dispatcher.py:197] Starting module "default" running at: http://localhost:8080 
INFO  2016-08-04 01:07:52,124 admin_server.py:116] Starting admin server at: http://localhost:8000 
INFO  2016-08-04 01:08:03,461 client.py:804] Refreshing access_token 
INFO  2016-08-04 01:08:05,234 client.py:827] Failed to retrieve access token: { 
    "error" : "internal_failure" 
} 
ERROR 2016-08-04 01:08:05,236 api_server.py:272] Exception while handling service_name: "app_identity_service" 
method: "GetAccessToken" 
request: "\n7https://www.googleapis.com/auth/devstorage.full_control" 
request_id: "ccqdTObLrl" 

Traceback (most recent call last): 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/tools/devappserver2/api_server.py", line 247, in _handle_POST 
    api_response = _execute_request(request).Encode() 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/tools/devappserver2/api_server.py", line 186, in _execute_request 
    make_request() 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/tools/devappserver2/api_server.py", line 181, in make_request 
    request_id) 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/api/apiproxy_stub.py", line 131, in MakeSyncCall 
    method(request, response) 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/api/app_identity/app_identity_defaultcredentialsbased_stub.py", line 192, in _Dynamic_GetAccessToken 
    token = credentials.get_access_token() 
    File "/home/usr_local/google_appengine_1.9.40/lib/oauth2client/oauth2client/client.py", line 689, in get_access_token 
    self.refresh(http) 
    File "/home/usr_local/google_appengine_1.9.40/lib/oauth2client/oauth2client/client.py", line 604, in refresh 
    self._refresh(http.request) 
    File "/home/usr_local/google_appengine_1.9.40/lib/oauth2client/oauth2client/client.py", line 775, in _refresh 
    self._do_refresh_request(http_request) 
    File "/home/usr_local/google_appengine_1.9.40/lib/oauth2client/oauth2client/client.py", line 840, in _do_refresh_request 
    raise AccessTokenRefreshError(error_msg) 
AccessTokenRefreshError: internal_failure 

WARNING 2016-08-04 01:08:05,239 tasklets.py:468] suspended generator _make_token_async(rest_api.py:55) raised RuntimeError(AccessTokenRefreshError(u'internal_failure',)) 
WARNING 2016-08-04 01:08:05,240 tasklets.py:468] suspended generator get_token_async(rest_api.py:224) raised RuntimeError(AccessTokenRefreshError(u'internal_failure',)) 
WARNING 2016-08-04 01:08:05,240 tasklets.py:468] suspended generator urlfetch_async(rest_api.py:259) raised RuntimeError(AccessTokenRefreshError(u'internal_failure',)) 
WARNING 2016-08-04 01:08:05,240 tasklets.py:468] suspended generator run(api_utils.py:164) raised RuntimeError(AccessTokenRefreshError(u'internal_failure',)) 
WARNING 2016-08-04 01:08:05,240 tasklets.py:468] suspended generator do_request_async(rest_api.py:198) raised RuntimeError(AccessTokenRefreshError(u'internal_failure',)) 
WARNING 2016-08-04 01:08:05,241 tasklets.py:468] suspended generator do_request_async(storage_api.py:128) raised RuntimeError(AccessTokenRefreshError(u'internal_failure',)) 
ERROR 2016-08-04 01:08:05,241 main.py:62] AccessTokenRefreshError(u'internal_failure',) 
Traceback (most recent call last): 
    File "/home/dancorn/src/appengine-gcs-client/python/demo/main.py", line 43, in get 
    self.create_file(filename) 
    File "/home/dancorn/src/appengine-gcs-client/python/demo/main.py", line 89, in create_file 
    retry_params=write_retry_params) 
    File "/home/dancorn/src/appengine-gcs-client/python/demo/cloudstorage/cloudstorage_api.py", line 97, in open 
    return storage_api.StreamingBuffer(api, filename, content_type, options) 
    File "/home/dancorn/src/appengine-gcs-client/python/demo/cloudstorage/storage_api.py", line 697, in __init__ 
    status, resp_headers, content = self._api.post_object(path, headers=headers) 
    File "/home/dancorn/src/appengine-gcs-client/python/demo/cloudstorage/rest_api.py", line 82, in sync_wrapper 
    return future.get_result() 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/ext/ndb/tasklets.py", line 383, in get_result 
    self.check_success() 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/ext/ndb/tasklets.py", line 427, in _help_tasklet_along 
    value = gen.throw(exc.__class__, exc, tb) 
    File "/home/dancorn/src/appengine-gcs-client/python/demo/cloudstorage/storage_api.py", line 128, in do_request_async 
    deadline=deadline, callback=callback) 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/ext/ndb/tasklets.py", line 427, in _help_tasklet_along 
    value = gen.throw(exc.__class__, exc, tb) 
    File "/home/dancorn/src/appengine-gcs-client/python/demo/cloudstorage/rest_api.py", line 198, in do_request_async 
    follow_redirects=False) 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/ext/ndb/tasklets.py", line 427, in _help_tasklet_along 
    value = gen.throw(exc.__class__, exc, tb) 
    File "/home/dancorn/src/appengine-gcs-client/python/demo/cloudstorage/api_utils.py", line 164, in run 
    result = yield tasklet(**kwds) 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/ext/ndb/tasklets.py", line 427, in _help_tasklet_along 
    value = gen.throw(exc.__class__, exc, tb) 
    File "/home/dancorn/src/appengine-gcs-client/python/demo/cloudstorage/rest_api.py", line 259, in urlfetch_async 
    self.token = yield self.get_token_async() 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/ext/ndb/tasklets.py", line 427, in _help_tasklet_along 
    value = gen.throw(exc.__class__, exc, tb) 
    File "/home/dancorn/src/appengine-gcs-client/python/demo/cloudstorage/rest_api.py", line 224, in get_token_async 
    self.scopes, self.service_account_id) 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/ext/ndb/tasklets.py", line 427, in _help_tasklet_along 
    value = gen.throw(exc.__class__, exc, tb) 
    File "/home/dancorn/src/appengine-gcs-client/python/demo/cloudstorage/rest_api.py", line 55, in _make_token_async 
    token, expires_at = yield rpc 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/ext/ndb/tasklets.py", line 513, in _on_rpc_completion 
    result = rpc.get_result() 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/api/apiproxy_stub_map.py", line 613, in get_result 
    return self.__get_result_hook(self) 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/api/app_identity/app_identity.py", line 519, in get_access_token_result 
    rpc.check_success() 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/api/apiproxy_stub_map.py", line 579, in check_success 
    self.__rpc.CheckSuccess() 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/api/apiproxy_rpc.py", line 157, in _WaitImpl 
    self.request, self.response) 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/ext/remote_api/remote_api_stub.py", line 201, in MakeSyncCall 
    self._MakeRealSyncCall(service, call, request, response) 
    File "/home/usr_local/google_appengine_1.9.40/google/appengine/ext/remote_api/remote_api_stub.py", line 235, in _MakeRealSyncCall 
    raise pickle.loads(response_pb.exception()) 
RuntimeError: AccessTokenRefreshError(u'internal_failure',) 
INFO  2016-08-04 01:08:05,255 module.py:788] default: "GET/HTTP/1.1" 200 249 

dancorn-laptop.acasa:/home/dancorn/src/appengine-gcs-client/python> find demo/ | sort 
demo/ 
demo/app.yaml 
demo/blobstore.py 
demo/cloudstorage 
demo/cloudstorage/api_utils.py 
demo/cloudstorage/api_utils.pyc 
demo/cloudstorage/cloudstorage_api.py 
demo/cloudstorage/cloudstorage_api.pyc 
demo/cloudstorage/common.py 
demo/cloudstorage/common.pyc 
demo/cloudstorage/errors.py 
demo/cloudstorage/errors.pyc 
demo/cloudstorage/__init__.py 
demo/cloudstorage/__init__.pyc 
demo/cloudstorage/rest_api.py 
demo/cloudstorage/rest_api.pyc 
demo/cloudstorage/storage_api.py 
demo/cloudstorage/storage_api.pyc 
demo/cloudstorage/test_utils.py 
demo/__init__.py 
demo/main.py 
demo/main.pyc 
demo/README 

これは指示通りhttp://localhost:8080にアクセスしようとしたとき、私はdevserverと報告されたエラーを実行する方法である:私は今、このようになりますpython/demoディレクトリへpython/src/cloudstorageディレクトリをコピーします私はGoogleサーバーに接続しようとしたときに驚いたが、App Engine and Google Cloud Storage Sample命令のこれらの注釈に基づいて、偽のローカルファイルシステムベースのエミュレーションを使用することを期待していた。

あなたは、開発サーバとクライアントライブラリを使用することができます。

**Note**: Files saved locally are subject to the file size and naming conventions imposed by the local filesystem. 
  • app.yaml walkthrough: は価値あなたのアプリIDを交換し、あなたのアプリ-ID:

あなたはラインアプリケーションでプロジェクトのIDを指定します。この値は をローカルで実行する場合は使用されませんが、展開する前に有効なプロジェクトIDを指定する必要があります。 デプロイメントユーティリティはこのエントリを読み取って、 アプリのデプロイ先を決定します。

、訪問ます。https://.appspot.com。 アプリケーションはローカルで を実行したときと同じように、ページの読み込み時に実行されます。この時間だけ、アプリは実際に書き込みを行い、 は実際のバケットから読み込みます。

実際のアプリのIDをapp.yamlファイルに入れても、それは何の違いもありませんでした。

私は知らGAEの問題をチェックし、これだけ潜在的に関連するものを見つけましたが、ずっと年上のSDKのバージョンにしました:GoogleAppEngineLanucher開発サーバ

  • Issue 11690 GloudStorageのバグ私がチェック(1.9.30、1.9.35)の古いSDKのバージョンはほとんどありません。違いはありません。

    私の質問:

    1. どのように私はそれがdev_appserver.pyで使われているとき(/ GCSは、ローカルファイルシステムに基づいて偽造w)はGCSクライアントがローカルに動作させることができますか?
    2. dev_appserver.pyと一緒に使っても、実際のGCSでもうまくいくはずですが、これを達成するために何をする必要がありますか?
+0

GCSクライアントはgaeアプリをローカルで実行するとステージングバケットにファイルをアップロードできませんでした。しかし、生産上、それはうまく動作します。 –

答えて

3

実際、IMHOは、以前のバージョンのSDK(または関連するパッケージ)によって作成されたローカルファイルから、資格情報を読み取ることができないという非常にばかげたバグです。より適切な行動へのフォールバックへの失敗は、調査を捨てる誤ったトレースバックにつながります。

クレジットがこの回答に行く:https://stackoverflow.com/a/35890078/4495081( 'ポストで述べたバグカントー最終的に同様の最終結果をトリガー、他の何かのためだった)

デモは、ローカルファイルシステムを使用して正常に完了し~/.config/gcloud/application_default_credentias.jsonファイルを削除した後。そして、私の本当のアプリもうまく働いた。

私の2番目の疑問はありますが、私はあまり心配していません - 個人的には、現地の開発サーバーで実際のGCSストレージを使用する際に大きな価値はないと思います - 私は実際のステージングGAEとにかく他の理由でアプリを起動します。

関連する問題