从我的api-url启动google vm实例,并通过特定的URL-api端点运行特定的命令

时间:2019-01-17 05:54:22

标签: node.js google-app-engine google-api google-cloud-platform debian

GCP和NodeJS的新功能。请忍受我缺乏专业知识。

我的Google VM实例是Debian

Api端点1

mynodejsserverongooglevminstance.com/api/startservice

这将在Debian VM实例上运行一些命令

screen
node start.js
node index.js

API端点2

mynodejsserverongooglevminstance.com/api/stopservice
node stop.js

stopservice端点将运行更多命令...

基本上我在问什么是最好的选择?

1 个答案:

答案 0 :(得分:0)

在此示例中,我将使用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脚本