Node.js - GCP - Облачные функции - Снимок диска виртуальной машины во всех регионах и виртуальных машинах - PullRequest
0 голосов
/ 20 декабря 2018

Я хотел бы использовать GCP без сервера - облачные функции для резервного копирования дисков виртуальной машины во всех регионах,

В основном - я хочу сделать резервную копию всех дисков виртуальной машины с именем снимка с меткой времени, например, snapshot-vm_name-timestamp

любая резервная копия старше 14 дней, удалите ее.Так что это функция самообслуживания.

Документация отстой и не очень помогает.Это то, как далеко я мог бы получить

exports.run_process = (req, res) => {
  let message = req.query.message || req.body.message || 'Hello World!';

  console.log(message);

  const Compute = require(`@google-cloud/compute`);
  const compute = new Compute();
  const zone = compute.zone('us-east1-b');

  zone.getDisks(function(err, disks) {
    // `disks` is an array of `Disk` objects.
    disks.map(disk => {
      console.log(disk);
    });
  });

  res.status(200).send(message);
};

любая помощь или совет очень ценится.

ссылка: https://cloud.google.com/nodejs/docs/reference/compute/0.10.x/Zone

1 Ответ

0 голосов
/ 21 декабря 2018

В вашем коде есть ошибка.Где вы используете оператор const Compute = require(@google-cloud/compute);.Вместо "`"вы должны использовать" ' ".Кроме того, не забудьте использовать библиотеку, вам нужно добавить зависимости.Ваш package.json должен выглядеть следующим образом:

{   
    "name": "sample-http",   
    "version": "0.0.1",   
    "dependencies": {
    "google-cloud": "^0.58.2",
    "@google-cloud/compute": "^0.10.0"   
    } 
 }

Продолжая, следующие шаги должны выглядеть примерно так:

  1. Используйте код в Документация по снимкам для загрузки всех доступных снимков.Используйте ту же логику, что и при получении дисков

  2. Получите снимок creationTimeStamp и рассчитайте разницу в днях

  3. Создайте переменную, которая будет получать текущую дату в «ДД-ММ-ГГГГ» в формате var datetime = new Date().toLocaleDateString();, чтобы использовать ее в качестве суффикса для новых снимков

  4. Используйте этот метод new_snapshot_name = new_snapshot_name.replace(/\//g, '-');, чтобы заменить все / на - для соответствия регулярному выражению '(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?)'

  5. Используйте метод getDisk(...), чтобы получить список всехдиски и создание снимков из них

Я немного программировал, и это сработало для меня.Функция делает все, что вы описали в вашем вопросе.Вы можете найти мой пример кода в GitHub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...