1

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

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

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

谢谢

4

2 回答 2

3

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

运行时包括一个完整的文件系统。文件系统是只读的,但位置 /tmp 除外,它是在 App Engine 实例的 RAM 中存储数据的虚拟磁盘。

因此,考虑到这一点,您可以写入,/tmp但我建议使用 Cloud Storage,因为如果缩放关闭所有实例,数据将会丢失。

您还可以考虑提供 HDD 的 App Engine Flex(因为它的后端是 VM),但最小大小为 10GB,因此它比使用存储更糟糕。

于 2020-06-27T06:08:32.420 回答
-1

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

无论如何,没有明确的代码如何使用 /tmp 目录并使用应用程序引擎托管的 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}`);
        }
    }
}

于 2020-07-01T02:13:49.077 回答