web-dev-qa-db-ja.com

ResumableUploadAbortException:403 Insufficient Permission

Google Cloud StorageとGoogle Compute Engineを使用しており、VMからバケットにアップロードしようとしています。私のバケットには読み取り/書き込み権限があり、それにアクセスできる人もいます。それらはOwnerとしてラベル付けされます。バケツからうまくダウンロードできます。バケットにアップロードしようとすると、これが発生するエラーです。 ResumableUploadAbortException: 403 Insufficient Permission。なぜこれが当てはまるのかわかりません。手がかりはありますか?

19
superuserdo

VMのCloud APIアクセススコープを変更して、ストレージでの読み取り/書き込みを許可します。これは、VM設定のアクセススコープ)セクションにあります。 VMこれを行うには停止する必要があります。

0. Stop VM instance
1. Open VM instance details
2. Press "Edit"
3. Change Cloud API access scope--> "Allow full access to all cloud APIs"

....

https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#changeserviceaccountandscopes

重要!!新しいスコープを定義した後、~/.gsutilの認証情報を削除する必要がある可能性がある関連投稿の このコメント ごとに注意してください。

# VM instance console
Sudo rm -r ~/.gsutil
45
Daniel Golden

VMでデフォルトのサービスアカウントを使用してバケットにアクセスしていますか?デフォルトでは読み取りスコープしかありません。読み取り/書き込みスコープでVMを作成してみてください。

4
Travis Hobrla

VMインスタンスからなどの非インタラクティブな方法で、Google Cloud Storage(バケット)などの他のCloud Platform製品とやり取りする場合は、スコープを使用することをお勧めします。サービスアカウント、認証の推奨方法VM /システム。詳細については、 ここ を参照してください。

2
Sammy Villoldo

ストレージバケットにオブジェクトを作成するには、インスタンスのサービスアカウントに権限を付与する必要があります。他の答えはこれを達成しますが、それらは必要以上の許可を開くかもしれません。ここでは、1つの追加の権限のみを追加する方法を示します。

  1. サービスアカウントのメールアドレスを取得します。
$ gcloud auth list
                  Credentialed Accounts
ACTIVE  ACCOUNT
*       [email protected]
  1. Cloud Consoleでバケットを開き、[権限]タブに移動します
  2. [メンバーを追加]をクリックします
  3. 上からサービスアカウントのメールアドレスを貼り付けます
  4. [役割]で[ストレージオブジェクト管理者]を選択します
    • 注:これにより、オブジェクトを作成、一覧表示、削除する権限が付与されます。オブジェクトを作成するだけでよい場合は、代わりに「ストレージオブジェクトクリエーター」を試すことができます。
  5. 「保存」をクリック

これにより、同じサービスアカウントを共有するすべてのインスタンスに権限が付与されます。より詳細なアクセス制御が必要な場合は、インスタンスごとに異なるサービスアカウントを作成する必要があります。

これらの手順を実行した後、他の人が言ったように権限をリロードする必要があります:

rm -rf ~/.gsutil
rm -rf /root/.gsutil
0
sffc

可能であれば、より簡単な手順を示します。

  1. コンソールからVMを停止し、アクセス制御を編集して、「ストレージ」権限をREADからWriteまたはfullに変更します。
  2. VMを起動する
  3. コマンドラインからキャッシュをフラッシュする

    rm -r〜/ .gsutil

これはうまくいくはずです。

0
Ayman Salama