我正在尝试连接到 SFTP 服务器并列出文件/ARCHIVE
夹中的文档。凭据存储在 .env 文件中。当我在本地机器上运行它时,它可以工作并列出文档。
async function main (event){
let Client = require('ssh2-sftp-client');
let sftp = new Client();
const dotenv = require('dotenv');
dotenv.config();
const ftpOptions = {
host: process.env.FTP_HOST,
port: process.env.FTP_PORT,
username: process.env.FTP_USER,
password: process.env.FTP_PASSWORD,
debug: console.log
}
await sftp.connect(ftpOptions);
let documentList = await sftp.list('/ARCHIVE');
console.log(documentList);
sftp.end();
}
但是如果我在我的 AWS lambda 函数中尝试它,它会尝试连接并超时。env 变量在sftp.connect(ftpOptions)
执行之前已加载并可用。日志显示该函数正在尝试连接到服务器,但甚至无法使用凭据登录。
Function Logs:
START RequestId: 20d3c3b7-19d8-49cf-8997-1f2331eb0b6e Version: $LATEST
2020-06-04T08:27:12.837Z 20d3c3b7-19d8-49cf-8997-1f2331eb0b6e INFO Debugging turned on
2020-06-04T08:27:12.860Z 20d3c3b7-19d8-49cf-8997-1f2331eb0b6e INFO DEBUG: Local ident: 'SSH-2.0-ssh2js0.4.10'
2020-06-04T08:27:12.898Z 20d3c3b7-19d8-49cf-8997-1f2331eb0b6e INFO DEBUG: Client: Trying ftp_foo.com on port 22 ...
2020-06-04T08:27:32.929Z 20d3c3b7-19d8-49cf-8997-1f2331eb0b6e INFO CLIENT[sftp]: Connection attempt 1 failed. Trying again.
2020-06-04T08:27:33.931Z 20d3c3b7-19d8-49cf-8997-1f2331eb0b6e INFO DEBUG: Local ident: 'SSH-2.0-ssh2js0.4.10'
2020-06-04T08:27:33.931Z 20d3c3b7-19d8-49cf-8997-1f2331eb0b6e INFO DEBUG: Client: Trying ftp_foo.com on port 22 ...
2020-06-04T08:27:53.951Z 20d3c3b7-19d8-49cf-8997-1f2331eb0b6e INFO CLIENT[sftp]: Exhausted all connection attempts. Giving up
2020-06-04T08:27:53.957Z 20d3c3b7-19d8-49cf-8997-1f2331eb0b6e ERROR Invoke Error {"errorType":"Error","errorMessage":"connect: Timed out while waiting for handshake after 2 attempts","code":"ERR_GENERIC_CLIENT","custom":true,"stack":["Error: connect: Timed out while waiting for handshake after 2 attempts"," at Object.formatError (/var/task/node_modules/ssh2-sftp-client/src/utils.js:62:18)"," at Client.connectErrorListener (/var/task/node_modules/ssh2-sftp-client/src/index.js:98:21)"," at Object.onceWrapper (events.js:417:26)"," at Client.emit (events.js:310:20)"," at Timeout._onTimeout (/var/task/node_modules/ssh2/lib/client.js:697:14)"," at listOnTimeout (internal/timers.js:549:17)"," at processTimers (internal/timers.js:492:7)"]}
2020-06-04T08:27:53.959Z 20d3c3b7-19d8-49cf-8997-1f2331eb0b6e ERROR Unhandled Promise Rejection {"errorType":"Runtime.UnhandledPromiseRejection","errorMessage":"Error: end: No SFTP connection available","reason":{"errorType":"Error","errorMessage":"end: No SFTP connection available","code":"ERR_NOT_CONNECTED","custom":true,"stack":["Error: end: No SFTP connection available"," at formatError (/var/task/node_modules/ssh2-sftp-client/src/utils.js:62:18)"," at Object.haveConnection (/var/task/node_modules/ssh2-sftp-client/src/utils.js:612:20)"," at /var/task/node_modules/ssh2-sftp-client/src/index.js:1248:19"," at new Promise (<anonymous>)"," at SftpClient.end (/var/task/node_modules/ssh2-sftp-client/src/index.js:1236:12)"," at downloadPDFs (/var/task/index.js:40:14)"," at processTicksAndRejections (internal/process/task_queues.js:97:5)"]},"promise":{},"stack":["Runtime.UnhandledPromiseRejection: Error: end: No SFTP connection available"," at process.<anonymous> (/var/runtime/index.js:35:15)"," at process.emit (events.js:310:20)"," at processPromiseRejections (internal/process/promises.js:209:33)"," at processTicksAndRejections (internal/process/task_queues.js:98:32)"]}
[ERROR] [1591259273978] LAMBDA_RUNTIME Failed to post handler success response. Http response code: 403.
是否有可能发生在我的本地机器上以提供我没有在 lambda 函数中实现的连接?