GCEで実行されているインスタンスがあり、同じプロジェクトにGCSバケットがあります。しかし、私はそれにデータを書き込むことができません。 VMインスタンスからストレージバケットにデータを書き込むにはどうすればよいですか?
更新:2016年12月15日現在、機能 setServiceAccount
がbeta:
別のIDとして実行する場合、またはインスタンスが必要なAPIを呼び出すために別のスコープのセットが必要であると判断した場合は、既存のインスタンスのサービスアカウントやアクセススコープを変更できます。たとえば、アクセススコープを変更して新しいAPIへのアクセスを許可したり、インスタンスを変更して、ComputeEngineのデフォルトのサービスアカウントではなく作成したサービスアカウントとして実行することができます。
インスタンスのサービスアカウントとアクセススコープを変更するには、インスタンスを一時的に停止する必要があります。インスタンスを停止するには、 インスタンスの停止 のドキュメントをお読みください。サービスアカウントまたはアクセススコープを変更した後は、 インスタンスを再起動する を忘れないでください。
documentation は、 Google Cloud Console 、gcloud
CLIツール、およびAPIを使用してこの機能を使用する方法について説明しています。 gcloud
を使用した例を次に示します。詳細については、 docs を参照してください。
gcloud beta compute instances set-scopes [INSTANCE_NAME] \ --service-account [SERVICE_ACCOUNT_EMAIL] \ [--no-scopes | --scopes [SCOPES,...]]
前の回答(2016年12月15日より前に有効):
実行中のVMインスタンスのスコープを変更することはできません。次のいずれかを行うことができます。
新しいインスタンスを作成 (現在のインスタンスのディスクを再利用する可能性があります)作成時に指定された適切なスコープを使用します。例:
gcloud compute instances create [...] --scopes storage-rw
vM内から手動でgsutil
を使用する場合は、 gsutil config
VM内で、プロンプトに従って認証します
google APIを使用した自動ツールの使用を計画している場合は、 サービスアカウント を使用してください