Netlify 计划功能未将文件保存到产品中的 GCP

问题描述 投票:0回答: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 存储桶。

我可以记录凭据,并且当处理程序在产品中运行时它确实会正确显示,但它实际上不会写入 GCP 存储桶。

我将服务帐户设置为存储桶的

Storage Object Admin
角色。

我在这里缺少什么?

javascript google-cloud-platform google-cloud-storage serverless netlify-function
1个回答
1
投票

我不是 Netlify 函数方面的专家,但如果它们的行为与 Google Cloud Functions 完全相似,那么您有义务等待所有承诺解决,然后再向调用者发送响应。如果不这样做,就意味着运行时可能会关闭任何正在进行的异步工作,以节省计算成本。

这意味着您应该等待

file.save()
的结果以确保它完成。

© www.soinside.com 2019 - 2024. All rights reserved.