使用 GCP Cloud 函数 NodeJS 将 CSV 文件从 Google 存储桶发送到 SFTP 服务器
Send CSV file from Google bucket to SFTP server using GCP Cloud function NodeJS
我正在尝试使用 Google Cloud Function
将 csv
文件发送到 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();
};
我正在尝试使用 Google Cloud Function
将 csv
文件发送到 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();
};