1

Google Storage json API を使用するのはこれが初めてで、Python クライアント ライブラリを使用してバケットに単純な画像ファイルをアップロードしようとしています。discovery.build() メソッドに資格情報を提供するとバケットの内容をリストでき、資格情報を提供しないと同じリスト呼び出しが失敗するため、資格情報を正しく取得しているようです (アプリケーションのデフォルト) 。ACL に関しては、一般的なアクセス制御の設定方法について 100% 確実ではないかもしれませんが、それが問題ではないと確信していますコンソールで Cloud Storage API READ および WRITE アクセスを使用して構成します。

さらに、502 Bad Gateway 応答を受け取った場合は、すぐに (「指数バックオフ」を使用して) 再試行するようにというドキュメントのアドバイスを認識していますが、数時間試行するたびにこのエラーが発生します。つまり、Google Storage サービスが特定の方法で壊れているか、クライアントが壊れているのでしょうか? さらに、コマンド ラインで を使用して jpeg ファイルをプッシュすることができますgsutil cp ...。これにより、Google ではなく壊れていると思われ、デフォルトの資格情報でバケットに書き込み可能であることがわかります。いいね?

これは私の非常に単純なクライアント スクリプトです。これは、この公式サンプルから陪審員が作成したものです。

import json
from apiclient import discovery
from apiclient.http import MediaFileUpload
from oauth2client.client import GoogleCredentials

credentials = GoogleCredentials.get_application_default()
service = discovery.build('storage', 'v1', credentials=credentials)
image = MediaFileUpload('up.jpg', mimetype='image/jpeg')
req = service.objects().insert_media(bucket='somebucket', media_body=image)
resp = req.execute()
print(json.dumps(resp, indent=2))

そして、ここに私が得るトレースがあります:

Traceback (most recent call last):
  File "upload.py", line 10, in <module>
    resp = req.execute()
  File "/Envs/py2.7/lib/python2.7/site-packages/oauth2client/util.py", line 140, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/Envs/py2.7/lib/python2.7/site-packages/googleapiclient/http.py", line 729, in execute
    raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 502 when requesting https://www.googleapis.com/upload/storage/v1/b/somebucket/o?uploadType=media&alt=media returned "Bad Gateway">

私はpython 2.7とpython 3.5を試したので、それが問題だとは思いません(ドキュメントによると、google pythonクライアントは3.5で機能しますが、十分にテストされていません)。また、こちらのように「再開可能なアップロード」のバリエーションを試してみましたが、同じ、常に忠実な 502 Bad Gateway が得られました。グーグルは壊れていますか?助けてください。

4

1 に答える 1