# #google-cloud-functions #google-cloud-storage #google-compute-engine #google-cloud-scheduler
Вопрос:
Я использую следующую команду в своем вычислительном механизме для запуска сценария, хранящегося в облачном хранилище:
gsutil cat gs://project/folder/script.sh | sh
Я хочу создать функцию, которая выполняет эту команду, и в конечном итоге запланировать запуск этой функции, но я не знаю, как это сделать. Кто-нибудь знает, как это сделать?
Комментарии:
1. У меня возникло бы искушение создать образ Docker, который включает GCP SDK и, следовательно, предоставляет вам gsutil. Затем вы можете написать приложение Node/Python/Java, которое экранирует оболочку и запускает команду. Затем вы можете определить изображение, которое будет запускаться с помощью Cloud Run. Таким образом, конечным результатом будет «Когда вы безопасно вызываете конечную точку, ваш сценарий запускается». Это та же семантика, что и облачные функции, но теперь вы получаете полный контроль над средой. Я не думаю, что мы можем предположить, что gsutil присутствует в облачных функциях.
2. В настоящее время невозможно запускать команды оболочки внутри функции Google Cloud.
Ответ №1:
Облачные функции не имеют сервера, и вы не можете управлять средой выполнения. Вы не знаете, что установлено в среде выполнения облачных функций, и не можете предположить, что GCLOUD существует.
Решение заключается в использовании облачного запуска. поведение очень близко к облачным функциям, просто перенесите свою функцию на веб-сервер (я написал свою первую статью об этом) и в своем контейнере установите то, что вы хотите, особенно GCLOUD SDK (вы также можете использовать базовый образ с уже установленным GCLOUD SDK). И на этот раз вы сможете вызывать системные двоичные файлы, потому что вы знаете, что они существуют, потому что вы их установили!
В любом случае, будьте осторожны при выполнении скрипта: контейнер неизменяем, вы не можете изменить файл, двоичные файлы, сохраненные файлы,… Я не знаю содержимого вашего сценария, но вы не находитесь на виртуальной машине, вы все еще находитесь в бессерверной среде с эфемерной средой выполнения.