代码之家  ›  专栏  ›  技术社区  ›  Hyetigran

Netlify计划函数未将文件保存到产品中的GCP

  •  0
  • Hyetigran  · 技术社区  · 1 年前

    我有一个简单的处理程序,它从api中获取数据,并每10分钟将JSON内容保存在GCP桶中。

    export const handler: Handler = async () => {
      const credentials = require("./project-name-digits.json");
      const storage = new Storage({
        projectId: credentials.project_id,
        credentials,
      });
      
      const bucket = storage.bucket("my-bucket");
      const result = await axios("example.com/api");
    
      const file = bucket.file("my-filename");
      const contents = JSON.stringify(result.data);
    
      file.save(contents);
    
      return {
        statusCode: 200,
      };
    };
    

    我的netlify.toml文件指定包含json文件

    [functions]
        node_bundler = "esbuild"
    
    [functions."scheduled-lending"]
        schedule = "*/10 * * * *"
        included_files = ["project-name-digits.json"]
    
    

    我能够在本地运行fn,它可以毫无错误地写入GCP存储桶。

    我可以记录凭据,当处理程序在prod中运行时,它确实会正确显示,但它实际上并没有写入GCP桶。

    我将服务帐户设置为 Storage Object Admin bucket的角色。

    我在这里错过了什么?

    1 回复  |  直到 1 年前
        1
  •  3
  •   Doug Stevenson    1 年前

    我不是Netlify功能的专家,但如果它们的行为完全像谷歌云功能,你必须等待所有承诺得到解决,然后再向来电者发送回复。否则,任何运行中的异步工作都可能被运行时关闭,以节省计算成本。

    这意味着您应该等待的结果 file.save() 以确保其完成。