Доступ к файлам проекта из vm - PullRequest
0 голосов
/ 30 июня 2019

При открытии командного терминала из Google Cloud Platform вас приветствует оболочка уровня проекта

account_name@cloudshell:/ (project_name)$

после запуска новой виртуальной машины можно отправлять файлы из файловой системы уровня проекта на виртуальную машину следующим образом:

account_name@cloudshell:/ (project_name)$ gcloud compute scp --recurse \
> ~/project-file vm-name:~

после ssh-в новой виртуальной машине, как вы выполняете такую ​​же передачу файлов изнутри виртуальной машины?

Все, что я пробовал, в итоге выглядит так:

account_name@vm-name:~$ gcloud compute scp --recurse \
> cloudshell:~/project-file ~
ERROR: (gcloud.compute.scp) Could not fetch resource:
 - The resource 'projects/project_name/zones/my_zone/instances/cloudshell' was not found

1 Ответ

2 голосов
/ 01 июля 2019

Команда gcloud compute scp не поддерживает Google Cloud Shell в качестве источника / цели.

Компания Google недавно добавила новые команды в альфа-версию gcloud, которые поддерживают Cloud Shell.

gcloud alpha cloud-shell scp cloudshell:~/REMOTE-DIR localhost:~/LOCAL-DIR

Проблема с использованием этой команды внутри виртуальной машиныНапример, виртуальные машины используют учетные данные учетной записи службы.Cloud Shell назначается / создается на основе учетных данных пользователя.Для каждого идентификатора пользователя существует отдельный экземпляр Cloud Shell, созданный на лету.С помощью учетной записи службы вы не можете определить Cloud Shell, с каким экземпляром вы хотите взаимодействовать.Это означает, что создается новый экземпляр Cloud Shell, не сопоставленный с идентификатором пользователя.

Примечание. Похоже, что API может поддерживать это в будущем, но в текущей реализации нет метода для указания пользователя.имя или учетные данные OAuth.

Вам необходимо использовать учетные данные пользователя (OAuth 2.0) для взаимодействия с Cloud Shell.Если у вас нет рабочего стола с графическим интерфейсом для запуска веб-браузера внутри экземпляра виртуальной машины, вы не можете создавать учетные данные пользователя, подходящие для аутентификации Google Cloud Shell.

Вы можете ограничить себя копированием файлов в / из экземпляра виртуальной машины с помощью командв экземпляре Cloud Shell или посмотрите на программу, которую я только что выпустил, которая реализует CLI для Cloud Shell.Если вы выбрали второй метод, выполните аутентификацию в Cloud Shell со своего рабочего стола, а затем скопируйте файл user_credentials.json с моей программой в ваш экземпляр виртуальной машины.Тогда у вас есть довольно мощный инструмент командной строки для взаимодействия с Cloud Shell.

CLI Google Cloud Shell

...