Запустите экземпляр gmm vm из моего api-url и выполните конкретные команды для определенных конечных точек URL-api. - PullRequest
0 голосов
/ 17 января 2019

Впервые в GCP и NodeJS. Пожалуйста, мирись с моей нехваткой опыта.

Мой экземпляр виртуальной машины Google - Debian

Api-конечная точка 1

mynodejsserverongooglevminstance.com/api/startservice

Это будет запускать некоторые команды на экземпляре виртуальной машины Debian

screen
node start.js
node index.js

API-оконечная точка 2

mynodejsserverongooglevminstance.com/api/stopservice
node stop.js

конечная точка stopservice будет выполнять еще несколько команд ...

По сути, я спрашиваю, что было бы лучше всего для этого?

1 Ответ

0 голосов
/ 17 января 2019

В этом примере я собираюсь использовать библиотеку Express HTTP

const express = require('express');
const app = express();
const { exec } = require('child_process');

const AuthValidator = (req, res, next) => {
  if(req.headers['X-Secret-Code'] === 'some_super_secret_password') return next();
  
  return res.status(400).end('Bad Authorization');
  
}

app.get('/api/startservice', (req, res) => {
  exec('screen && node start.js && node index.js', (error, stdout) => {
    if (error) {
      console.error(`Fail to start Node app: ${error}`);
      return res.status(500).end(error.message);
    }
    res.status(201).end(stdout);
  });
});

app.get('/api/stopservice', (req, res) => {
  exec('node stop.js', (error, stdout) => {
    if (error) {
      console.error(`Fail to stop Node app: ${error}`);
      return res.status(500).end(error.message);
    }
    res.status(201).end(stdout);
  });
});

И как только клиент выполнит запрос GET к конечной точке /api/startservice, приложение Node поможет выполнить три из этих команд

То же самое относится к /api/stopservice, как только этот конечный пункт получит триггер, приложение Node выполнит stop.js скрипт

...