【问题标题】:Using gcloud commands in nodejs application在 nodejs 应用程序中使用 gcloud 命令
【发布时间】:2020-11-13 09:10:12
【问题描述】:

某些 gcloud 命令不支持 API 或客户端库(例如 - this one)。

在这些情况下,是否有一种从 nodejs 应用程序运行 gcloud 命令的简单方法?

【问题讨论】:

    标签: node.js google-cloud-platform gcloud


    【解决方案1】:

    我不确定这是否能直接回答您的问题,但有一个 npm 包可以帮助您从应用程序中运行 unix 命令。

    查看shell.js

    【讨论】:

      【解决方案2】:

      在 node.js 中,我们有 child_process 模块。顾名思义,child_process 提供了类似spawnexec 的功能,可以创建像独立进程一样执行shell 命令的新子进程。 spawn 是一个以主命令为 第一个参数和其他命令行选项作为数组值代替第二个参数。 因此,对于您共享的链接,您最终可能会写出这样的内容:

      const { spawn } = require("child_process");
      const listening = spawn('gcloud', ['endpoints', 'services', 'blah', '--option','someValue']);
      
      listening.stdout.on("data", data => {
          console.log(`stdout: ${data}`);
      });
      
      listening.stderr.on("data", data => {
          console.log(`stderr: ${data}`);
      });
      
      listening.on('error', (error) => {
          console.log(`error: ${error.message}`);
      });
      

      参考资料: https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

      【讨论】:

        【解决方案3】:

        IAM 策略的 gcloud endpoints service 命令对我来说很难快速检查,但是如果是 IIRC(如果这类似于 IAM 策略的 gcloud projects 命令),并不是没有 API,而是没有单一的API 调用。

        您始终可以使用 gcloud 执行的操作是附加 --log-http 以查看幕后发生的情况。使用 IAM 策略突变(头顶式),您可以获取策略,对其进行突变,然后使用 GET 给您的 etag 将更改应用回来。后端检查策略的状态(etag 就像策略的哈希),如果没有更改,您可以进行更改。

        如果这里发生了这种情况,您应该能够使用现有的 (!) API 在 NodeJS 中重现该功能,并且如果您使用的是 API 客户端库(而不是云客户端库),则该功能将可用.

        除了向 gcloud 进行脱壳所涉及的复杂性之外,您还需要对其进行身份验证,然后您需要将数据(取消)编组到 shell 管理错误。因此,这很混乱,通常不鼓励。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-04
          • 2011-06-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多