формально использование Google gcloud
Cloud SDK сбивает с толку.
google-cloud
и gcloud
(устарело) не предоставляют командной строкиСродни знакомой вам команде gcloud
, которая предоставляет, например, gcloud compute scp...
Эти пакеты NPM фактически являются SDK для различных API облачной платформы Google, лежащих в основе командной строки gcloud.
Когда вы запускаете gcloud ...
в командной строке, двоичный файл gcloud
выполняет API-вызовы к сервисам Google Cloud Platform, а пакеты NPM, на которые вы ссылаетесь, предоставляют JavaScript | Node.JS SDK для этих API-интерфейсов. Вы можете увидеть, какие API-интерфейсы вызываются командами gcloud
, добавляя --log-http
к любой команде.
В этом случае есть еще один недостаток, потому что gcloud
фактически использует установленную команду scp вашего хоста ниже--крышки;gcloud compute scp...
- это удобная оболочка для scp
, которая также управляет аутентификацией ssh для вас.
Это невозможно (поскольку командная строка gcloud
[вероятно] не установлена в экземпляре Cloud Functions). ) и не рекомендуется выполнять команды оболочки из облачных функций.
Когда вы запускаете свой код локально, он запускается под вашими учетными данными (gcloud config get-value account
), и у этого пользователя есть разрешение для ssh / scpэкземпляр благодаря рабочим ключам gcloud для пользователя в экземпляре.
Работая как облачная функция, вы, вероятно, захотите дать разрешение облачной функции выступать в качестве учетной записи службы экземпляра Compute Engine. Это может стать запутанным | сложным.
Альтернативой может быть выгрузка сценария в Google Cloud Storage (GCS) из облачной функции, а затем обращение к экземпляру Compute Engine | для получения его из GCS.
Не могли бы вы подробнее рассказать о том, что вы пытаетесь сделать? Я понимаю, что функция хочет сбросить сценарий на экземпляре. Но как функция получает скрипт и что делает скрипт?