Javascript 从Google云功能(JS)中运行Google存储命令

Javascript 从Google云功能(JS)中运行Google存储命令,javascript,node.js,google-cloud-functions,google-cloud-storage,Javascript,Node.js,Google Cloud Functions,Google Cloud Storage,我正在使用云函数将GCS中某个文件夹的全部内容移动到同一存储桶中的另一个文件夹。我正在使用Javascript。 虽然bucket和源对象存在,但我一直得到一个错误,即该对象不存在 这是云功能代码: // Imports the Google Cloud client library const {Storage} = require('@google-cloud/storage'); // Creates a client const storage = new Storage(); as

我正在使用云函数将GCS中某个文件夹的全部内容移动到同一存储桶中的另一个文件夹。我正在使用Javascript。 虽然bucket和源对象存在,但我一直得到一个错误,即该对象不存在

这是云功能代码:

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

async function moveFile() {
  // Moves the file within the bucket
  await storage
    .bucket("my-bucket")
    .file("folder/source/**")
    .move("folder/target/**");

  console.log(
    `gs://${bucketName}/${srcFilename} moved to gs://${bucketName}/${destFilename}.`
  );
}
exports.moveContent = (req, res) => {
   moveFile().catch(console.error);
  res.send("done")
}
这是package.json的源代码

{
  "name": "move-content",
  "version": "0.0.1",
  "dependencies": {
    "googleapis": "37.1.0",
    "@google-cloud/storage": "^4.5.0"
  }
}
这就是我(从谷歌日志中)得到的错误:

我错过了什么


谢谢在您的示例中,您似乎在使用通配符。我相信这些通配符适用于名为
gsutil
的工具。是gsutil通配符的一篇文章

如果我们查看Node.js客户端的API,就不会看到类似通配符的任何描述。例如,
bucket
对象的
file
函数表示名称为:

此存储桶中的文件名

如果要移动多个文件,看起来必须执行
getFiles
API调用(请参阅)。这将返回解析为文件对象数组的承诺。然后,您可以迭代每个文件对象,并对每个对象执行
move
API调用(请参阅)


这个故事似乎与您收到的错误消息一致。

BTW,您知道是否可以在
bigquery.dataset.table.load
函数中使用通配符以并行加载多个文件?对于您的BQ问题。。。看看这里的API。。。似乎只显示一个文件的异步加载。然而,我并没有看到任何评论会说您无法运行所需数量的函数调用(每个源文件一个)。因为这些是非阻塞的。。。我们应该可以。你需要移动多少文件?可以是几十到几百个。如果你因为文件太多而出现超时问题,请毫不犹豫地发布另一个问题!
move-content 3m89p16m58bb { Error: file#copy failed with an error - No such object: my-bucket/folder/source/** at new ApiError (/srv/node_modules/@google-cloud/common/build/src/util.js:58:15) at Util.parseHttpRespBody (/srv/node_modules/@google-cloud/common/build/src/util.js:193:38) at Util.handleResp
...