次のコマンドを使用して、vmからローカルマシンのデスクトップにディレクトリをコピーしようとしています。
gcloud compute scp --recurse instance-1:~/directory ~/Desktop/
「gcloud auth login」で再認証を試みましたが、まだ表示されます
ERROR: (gcloud.compute.scp) Could not fetch resource:
- Insufficient Permission: Request had insufficient authentication scopes.
Gcloudコマンドを実行しようとしているマシンから「gcloud auth login」を実行してみてください。
詳細については この古い投稿をご覧ください 、彼らは同じ問題を報告しています。
使用している認証情報のインスタンスにSSHまたはSCPを使用するには、roles/compute.instanceAdmin.v1
が必要です。最も簡単な方法は、Compute Instance Admin
を認証情報に追加することです。
使用している認証情報を確認するには、gcloud auth list
を実行します。アカウントの左側の列にアスタリスクが表示されます。
実行している権限を把握するには、gcloud projects get-iam-policy PROJECT_ID
を実行します
理解を深めるためにコード全体を提供する
private static void upload() throws GeneralSecurityException, IOException {
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
Drive driveService = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
.setApplicationName(APPLICATION_NAME)
.build();
File fileMetadata = new File();
fileMetadata.setName("My Report");
fileMetadata.setMimeType("application/vnd.google-apps.spreadsheet");
Java.io.File filePath = new Java.io.File("/exportData.csv");
FileContent mediaContent = new FileContent("text/csv", filePath);
File file = driveService.files().create(fileMetadata, mediaContent)
.setFields("id")
.execute();
System.out.println("File ID: " + file.getId());
}