LoginSignup
1
0

gsutil cp から gcloud storage cp への移行で Permission 'storage.buckets.get' denied が発生するようになった

Last updated at Posted at 2023-06-01

概要

gsutil cp で GCS にファイルをアップロードする処理を gcloud storage cp に切り替えたら、一部のファイルのアップロードで Permission 'storage.buckets.get' denied が発生するようになった。

$ gcloud storage cp *.tar gs://my-bucket/

ERROR: (gcloud.storage.cp) User [my-service-account@my-project.iam.gserviceaccount.com] does not have permission to access b instance [my-bucket] (or it may not exist): my-service-account@my-project.iam.gserviceaccount.com does not have storage.buckets.get access to the Google Cloud Storage bucket. Permission 'storage.buckets.get' denied on resource (or it may not exist).
  • 対象の Bucket に対しての roles/storage.objectCreator はちゃんと付与されいていて、gsutil では問題なかった。
  • ファイルサイズが大きい場合にだけ発生しているっぽかった。

原因

並列複合アップロード のデフォルトの仕様が gsutil と異なっていた。

gsutil だとデフォルトで並列複合アップロードは無効になっているが、gcloud storage だと有効になっていて、大きいファイルをアップロードしようとすると自動で切り替わるらしい。。。

対処方法

以下のどれか。

  1. 言われた通り Bucket に対する storage.buckets.get 権限を付与する
    • 事前定義ロールだと roles/storage.legacyBucketReader あたりで OK
  2. 安全チェックを無効にする
    • gcloud config set storage/parallel_composite_upload_compatibility_check false
  3. 並列複合アップロードを無効にする(gsutil cp と同等になる)
    • gcloud config set storage/parallel_composite_upload_enabled false
  4. gsutil cp を使い続ける
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0