在 Google App Engine 中托管时如何更新文件?

How to update file when hosting in Google App Engine?

我在 Google Cloud App Engine 上有节点 js 服务器服务 运行。 我在需要通过进程更新的项目的资产文件夹中有 JSON 文件。 我能够读取文件和文件中的配置。但是当添加文件时,从 GAE 获取只读服务错误。

有没有一种方法可以不使用云存储选项将信息写入文件?

它是一个非常小的文件,使用云存储的东西将使用非常大的钻孔机来钻内六角扳手螺丝

谢谢

不,在 App Engine 标准中没有这样的文件系统。在docs中提到了以下内容:

The runtime includes a full filesystem. The filesystem is read-only except for the location /tmp, which is a virtual disk storing data in your App Engine instance's RAM.

所以有这个考虑你可以写在/tmp但是我建议云存储,因为如果缩放关闭所有实例,数据将会丢失。

你也可以想到 App Engine Flex,它提供了一个 HDD(因为它的后端是一个 VM),但最小大小是 10GB,所以它比使用存储更糟糕。

感谢您指导我不要浪费时间寻找问题的黑客解决方案。

任何方式都没有明确的代码如何使用 /tmp 目录和 download/upload 使用应用程序引擎托管的文件 node.js 应用程序。 如果有人需要,这是代码

const {
    Storage
} = require('@google-cloud/storage');
const path = require('path');

class gStorage {
    constructor() {
        this.storage = new Storage({
            keyFile: 'Please add path to your key file'
        });
        this.bucket = this.storage.bucket(yourbucketname);
        this.filePath = path.join('..', '/tmp/YourFileDetails');
        // I am using the same file path and same file to download and upload
    }

    async uploadFile() {
        try {
            await this.bucket.upload(this.filePath, {
                contentType: "application/json"
            });
        } catch (error) {
            throw new Error(`Error when saving the config. Message :  ${error.message}`);
        }
    }

    async downloadFile() {
        try {
            await this.bucket.file(filename).download({
                destination: this.filePath
            });
        } catch (error) {
            throw new Error(`Error when saving the config. Message :  ${error.message}`);
        }
    }
}