Доступ к файлам проекта из виртуальной машины

Открыв командный терминал из 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

person user1492428    schedule 30.06.2019    source источник


Ответы (1)


Команда 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, либо посмотреть на программу, которую я только что выпустил, которая реализует интерфейс командной строки для Cloud Shell. Если вы выбрали второй метод, выполните аутентификацию в Cloud Shell со своего рабочего стола, а затем скопируйте файл user_credentials.json с моей программой на свой экземпляр виртуальной машины. Тогда у вас есть довольно мощный инструмент командной строки для взаимодействия с Cloud Shell.

интерфейс командной строки Google Cloud Shell

person John Hanley    schedule 30.06.2019
comment
Спасибо за информацию. У меня уже есть большая кривая обучения с использованием GCS, поэтому проверить вашу программу сложно. Я думаю, что сейчас я просто попытаюсь обойти свою проблему. - person user1492428; 01.07.2019
comment
Без проблем. В своем посте я дал вам ответ. - person John Hanley; 01.07.2019