Google Compute Engine 内で使用していますgcsfuse
。クラウド ストレージ バケットでフォルダをマウントしましたが、その中にファイルを作成できません。
touch t1
エラー:
touch: cannot touch 't1': Input/output error
この問題の解決策は、クラウド API アクセス スコープ: ストレージ: 読み取り/書き込み
インスタンスを停止せずに GCP Compute Engine 上の Cloud API アクセス スコープを変更するにはどうすればよいでしょうか。この問題の解決策を教えてください。
前もって感謝します!
答え1
GCS権限が不十分なようです。ドキュメンテーションGCE VM でサービス アカウントを使用している場合は、アクセス スコープgcsfuse
を使用して VM を設定してくださいstorage-full
。
次の方法で修正してみてください:
- サービスアカウントを作成する(詳細情報ここ)
- サービスアカウントのキーを作成し、.jsonファイルをダウンロードします。
- サービスアカウントに適切なロールを付与する
- バケットのサービスアカウントに適切な権限を付与する
- サービスアカウントの.json認証情報をVMにアップロードする
gcsfuse
コマンドラインから呼び出すときに、サービス アカウント資格情報へのパスを含む環境変数を定義します。GOOGLE_APPLICATION_CREDENTIALS = /root/credentials/service_credential_file.json gcsfuse bucket_name /my/mount/point
文書化され
key_file
た同じ目標を達成するためのオプションを使用するfstab
ここ。
さらに、以下をkey_file
使用して VM 上でサービス アカウントを構成した場合でも、環境変数またはオプションを使用する必要があります。
gcloud auth activate-service-account --key-file /root/credentials/service_credential_file.json
問題が解決しない場合は、手順、コマンド、および完全な出力を質問に追加してください。