Есть ли способ изменить файлы в виртуальной машине Compute Engine с помощью API Compute Engine + NodeJS - PullRequest
0 голосов
/ 17 марта 2020

Я занимаюсь разработкой проекта в Google Cloud с использованием как App Engine, так и Compute Engine. У меня установлен экземпляр виртуальной машины на Compute Engine с именем «instance-1». В данном случае это файл python (file.py):

name = '<REPLACE_WITH_YOUR_NAME>'

print(name)

Ну, это не совсем файл.py, но концепция применима ниже. Кроме того, у меня есть проект App Engine, написанный на NodeJS, который подключается к этому экземпляру через Google Compute Engine API. Вот что у меня есть по этому поводу:

const Compute = require('@google-cloud/compute');

const compute = new Compute();
const zone = compute.zone('us-east1-b');
const vm_name = 'instance-1';
const vm = zone.vm(vm_name);
const my_name = "David Weiss"

// TODO: insert the variable my_name into the python code file.py where it says '<REPLACE_WITH_YOUR_NAME>'
// In my head, it would look something like this: vm.getFile('file.py', 'write').replace('<REPLACE_WITH_YOUR_NAME>', my_name);

После получения экземпляра 'instance-1, я не знаю, как изменить (или даже добавить / заменить / удалить) файлы на нем, используя NodeJS и API вычислительного механизма. Можно ли это сделать? Если невозможно заменить текст в файле file.py, я могу удалить весь файл и просто написать новый файл с уже введенным в него my_name.

1 Ответ

1 голос
/ 17 марта 2020

Думайте о своем экземпляре Compute Engine как о «компьютере». Если у вас есть файлы на P C, как бы вы изменили файлы на этом P C удаленно? GCP API для вычислительных машин не дает вам доступа к файловой системе этого экземпляра. Вместо этого вам придется использовать такие технологии, как scp или ftp. Возможно, если бы вы описали историю более высокого уровня, мы могли бы использовать альтернативные концепции. Например, при загрузке Compute Engine он может запустить сценарий запуска, который может скопировать откуда-либо (например, GCS). Другая возможность состоит в том, что ваш вычислительный движок может запустить само приложение, для которого вы можете делать запросы REST и передавать данные, которые будут содержимым файла, записанного приложением вычислительного движка.

Если вы все еще хотите go вниз по маршруту копирования файлов, и вы хотите, чтобы запрашивающее приложение было записано в python, тогда можно рассмотреть:

Как добавить Python?

2020-03-17 - на основе дополнительных комментариев

Для предоставления новых экземпляров Compute Engine ... Я чувствую, что вы используете GCP API для создания новых экземпляров Compute Engine через приложение App Engine , Если бы головоломка, которую вы представляете, была передо мной, я бы обдумал следующие строки:

Когда приложение App Engine решит, что должен быть создан новый экземпляр Compute Engine, мы, очевидно, должны предоставить этот новый экземпляр. уникальное имя. Никакие два вычислительных экземпляра не могут иметь одинаковую идентичность. Таким образом, у нас есть «ключ» для этого случая. Затем я хотел бы, чтобы приложение App Engine создавало файл в Google Cloud Storage (GCS), который содержит именно тот файл, который вам нужен внутри Compute Engine. Ваше приложение может динамически создавать содержимое файла. Для каждого экземпляра вычислительного механизма будет один файл, а имя файла будет соответствовать имени экземпляра вычислительного механизма. На данный момент у нас есть нужный файл в GCS. Затем я хотел бы создать сценарий оболочки, который копирует файл из GCS (на основе имени вычислительного механизма, в котором выполняется сценарий) в локальную файловую систему экземпляра вычислительного механизма. Наконец, я хотел бы указать этот сценарий как «сценарий запуска», который выполняется при загрузке Compute Engine.

Когда вычислительный механизм загружается, он запускает сценарий запуска в начале цикла загрузки, но до пользователь может войти в систему. Сценарий скопирует файл из GCS в локальное хранилище файловой системы, и по завершении сценария пользователь сможет войти в систему и найти файл.

См. Также:

...