使用 GCP Cloud 函数 NodeJS 将 CSV 文件从 Google 存储桶发送到 SFTP 服务器

Send CSV file from Google bucket to SFTP server using GCP Cloud function NodeJS

我正在尝试使用 Google Cloud Functioncsv 文件发送到 SFTP 服务器。 这意味着 -

Step 1 - 需要用 SFTP Server

创建一个 Connection

Step 2- 从 GCP Bucket

中选择 csv File

Step 3 - Push 文件到 SFTP Server 在特定位置

这是我正在使用的 nodejs 脚本 -

exports.helloWorld = (req, res) => {
  let Client = require('ssh2-sftp-client');
  let sftp = new Client();

sftp.connect({
  host: process.env.SFTP_SERVER,
  username: process.env.SFTP_USER,
  port: process.env.SFTP_PORT,
  password: process.env.SFTP_PASSWORD
}).then(() => {
  return sftp.list('/public');
}).then(data => {
  console.log(data, 'the data info');
}).catch(err => {
  console.log(err, 'catch error');
});
};

这是我的 Package.json 文件

{
  "name": "sample-http",
  "version": "0.0.1",
  "dependencies": {
    "node-fetch": "^2.6.0",
    "@google-cloud/bigquery": "5.10.0",
    "@google-cloud/storage": "5.18.0",
    "ssh2-sftp-client": "7.2.1"
    
  }
}

现在一切正常,但什么也没做。 谁能指出我在这里缺少什么脚本,以及是否有任何 documentation 可以执行以下步骤??

因为 SFTP 代码都是异步的,你的函数可能在 .then() 有 运行 之前 returning 并且你的执行环境在它开始上传文件之前就结束了.你应该让你的 helloWorld 函数异步并等待和 return 在 returning:

之前的响应
exports.helloWorld = async (req, res) => {
  // ...
  await sftp.connect({
    // ...
  });
  res.send(200);
  res.end();
};