有没有办法使用 Compute Engine API + NodeJS 修改 Compute Engine 虚拟机中的文件

Is there a way to modify the files in a Compute Engine virtual machine using the Compute Engine API + NodeJS

我正在使用他们的 App Engine 和 Compute Engine 在 Google Cloud 中开发一个项目。我在 Compute Engine 上设置了一个虚拟机实例,名称为 "instance-1"。在这个实例中是 python 文件 (file.py):

name = '<REPLACE_WITH_YOUR_NAME>'

print(name)

嗯,这不完全是 file.py,但该概念适用于下文。此外,我有一个用 NodeJS 编写的 App Engine 项目,它通过 Google 的计算引擎 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 和 Compute Engine API 修改(甚至 add/replace/delete)其上的文件。这可以做到吗?如果无法替换 file.py 中的文本,我可以删除整个文件并编写一个全新的文件,其中已插入 my_name。

将您的 Compute Engine 实例想象成一个 "computer"。如果您在 PC 上有文件,您将如何远程修改该 PC 上的文件? Compute Engines 的 GCP API 不允许您访问该实例的文件系统。相反,您将不得不使用 scp 或 ftp 等技术。也许如果您描述了更高层次的故事,我们可能会使用其他概念。例如,当计算引擎启动时,它可以 运行 一个可能从某个地方(例如 GCS)复制的启动脚本。另一种可能性是您的计算引擎可以 运行 一个应用程序本身,您可以针对它发出 REST 请求并传递数据,这些数据将是计算引擎应用程序编写的文件的内容。

如果您仍然想沿着文件复制路线走下去,并且希望将请求的应用程序写入 python,那么可能会审查:

How to scp in Python?

2020-03-17 - 基于更多评论

用于配置新的 Compute Engine 实例...我感觉到您正在使用 GCP API 通过您的 App Engine 应用创建新的 Compute Engine 实例。如果你提出的难题在我面前,我会思考以下几行。

当 App Engine 应用确定要创建一个新的 Compute Engine 实例时,我们显然必须为该新实例指定一个唯一的名称。任何两个计算实例都不能具有相同的标识。因此,对于该实例,我们有一个 "key" 。接下来,我会让 App Engine 应用程序在 Google 云存储 (GCS) 中创建一个文件,其中包含您想要在 Compute Engine 中使用的确切文件。您的应用程序可以动态构建文件的内容。每个计算引擎实例将有一个文件,文件名将与计算引擎实例的名称相匹配。此时,我们在 GCS 中有了您想要的文件。接下来,我将创建一个 shell 脚本,将文件从 GCS(基于脚本 运行s 所在的计算引擎的名称)复制到本地计算引擎实例文件系统。最后,我会将此脚本指定为计算引擎启动时执行的 "startup script"。

当计算引擎启动时,它将 运行 在启动周期的早期但在用户能够登录之前启动脚本。该脚本会将文件从 GCS 复制到本地文件系统存储,当脚本完成时,用户可以登录并找到该文件。

另请参阅: