Google Cloud StorageとGoogle Compute Engineを使用しており、VMからバケットにアップロードしようとしています。私のバケットには読み取り/書き込み権限があり、それにアクセスできる人もいます。それらはOwnerとしてラベル付けされます。バケツからうまくダウンロードできます。バケットにアップロードしようとすると、これが発生するエラーです。 ResumableUploadAbortException: 403 Insufficient Permission
。なぜこれが当てはまるのかわかりません。手がかりはありますか?
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"
重要!!新しいスコープを定義した後、~/.gsutil
の認証情報を削除する必要がある可能性がある関連投稿の このコメント ごとに注意してください。
# VM instance console
Sudo rm -r ~/.gsutil
VMでデフォルトのサービスアカウントを使用してバケットにアクセスしていますか?デフォルトでは読み取りスコープしかありません。読み取り/書き込みスコープでVMを作成してみてください。
VMインスタンスからなどの非インタラクティブな方法で、Google Cloud Storage(バケット)などの他のCloud Platform製品とやり取りする場合は、スコープを使用することをお勧めします。サービスアカウント、認証の推奨方法VM /システム。詳細については、 ここ を参照してください。
ストレージバケットにオブジェクトを作成するには、インスタンスのサービスアカウントに権限を付与する必要があります。他の答えはこれを達成しますが、それらは必要以上の許可を開くかもしれません。ここでは、1つの追加の権限のみを追加する方法を示します。
$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* [email protected]
これにより、同じサービスアカウントを共有するすべてのインスタンスに権限が付与されます。より詳細なアクセス制御が必要な場合は、インスタンスごとに異なるサービスアカウントを作成する必要があります。
これらの手順を実行した後、他の人が言ったように権限をリロードする必要があります:
rm -rf ~/.gsutil
rm -rf /root/.gsutil
可能であれば、より簡単な手順を示します。
コマンドラインからキャッシュをフラッシュする
rm -r〜/ .gsutil
これはうまくいくはずです。