2017-11-28 12 views
3

これは2016年以降広く議論されている問題ですが、問題を解決できませんでした。 Googleクラウドプロジェクトの場合、私の個人アカウントとサービスアカウント(gcloud認証リストコマンドで取得したもの)は両方とも所有者です。Google Cloud Storage、Compute Engine、および不十分な権限エラー

google-cloudパッケージ(ストレージモジュール)を使用しているPython3コードは、自分のパソコンを使用して自分のパーソナルアカウントを使用して正常に動作します。つまり、ファイルのアップロードは正常に動作します。

代わりに、計算エンジン上で、私は次のエラーを取得する:

File "/home/user/git/project/GoogleUtils/StorageUtils.py", line 109, in upload_blob 
    blob.upload_from_filename(source_file_name) 
    File "/home/analysis/.local/lib/python3.5/site-packages/google/cloud/storage/blob.py", line 992, in upload_from_filename 
    size=total_bytes) 
    File "/home/analysis/.local/lib/python3.5/site-packages/google/cloud/storage/blob.py", line 949, in upload_from_file 
    _raise_from_invalid_response(exc) 
    File "/home/analysis/.local/lib/python3.5/site-packages/google/cloud/storage/blob.py", line 1735, in _raise_from_invalid_response 
    raise exceptions.from_http_response(error.response) 
google.api_core.exceptions.Forbidden: 403 POST https://www.googleapis.com/upload/storage/v1/b/bucket_name/o?uploadType=multipart: Insufficient Permission 

これは私の個人アカウントとサービスアカウントの両方で発生します。私はそれが許可の問題ではないと思う...だから私はどこを探しているのだろうか?奇妙な部分は、ファイルのダウンロードが完全に機能することです。

答えて

1

唯一の解決策は、設定画面の下部にある「デフォルトアクセス」から「フルアクセス」に切り替えてVM設定を変更することです。

+0

ありがとう、あなたは私の人生を救った。あなたは天才です – user1403546

1

すでに回答はありましたが、少し明確にする価値はあると思います。

はい、あなたはそれがサービスアカウントのアクセス許可のエラーではありませんし、それが原因デフォルト設定に予想される動作である右ですが、私は少し説明しましょう:

  • 仮想を作成する場合Google Cloud Engineでdefault serviceアカウントを使用しているマシンでは、そのVMに許可されているAPIを再確認する必要があります。 (インスタンスの作成時にそれらを確認して変更することができ、インスタンスの詳細を確認しながらGoogle Cloud Consoleから視覚化することができます)。このような動作は難しいように見えるかもしれませんが、多くの異なるインスタンスに広がっている可能性があるサービスアカウントの権限を制限するために意図されています(インスタンスにログインするだけで十分です)、ユーザーが彼は完全な力、すなわちプロジェクトの所有者です。

  • 一方、Defaultサービスアカウントを使用しない場合は、サービスアカウントでIAMロールを使用して、VMアクセスを制御してアクセススコープを変更する必要があります。したがって、あなたの場合、完全なアクセス権を持つサービスアカウントは、利用可能なすべてのAPIを使用するのに十分です。

あなたは新しいもの、新しいサービスアカウントを作成するこれらの二つの異なる動作を検証し、インスタンスの作成の瞬間に、最初のデフォルトのアカウントを使用することができ、次の2つの異なるタブが表示されることに気づくでしょう。

関連する問題