Error: Timed out while waiting for handshake in Lambda logs
Error: Timed out while waiting for handshake in Lambda logs
SFTP 的功能在本地运行并且配置正确。
问题出在 Lambda 的日志上,它通过给我一个错误来抱怨我认为的配置:等待握手时超时。
const config = {
host: 'ftp.xxxx.at',
port: '22',
username: 'SFTP_xxx',
password: 'xxx9fBcS45',
MD5_Fingerprint: 'xxx:8f:5b:1a',
protocol: "sftp",
algorithms: {
serverHostKey: ['ssh-rsa', 'ssh-dss']
}
};
// get file
// get sftp file
// here ....
const get = () => {
sftp.connect(config).then(() => {
return sftp.get('./EMRFID_201811210903.csv', null, 'utf8', null);
}).then((stream) => {
let body = stream.on('data', (chunk) => {
body += chunk;
})
stream.on('end', () => {
uploadRFIDsToS3(body)
// close connection
sftp.end()
});
}).catch((err) => {
console.log('catch err:', err)
})
};
-
vpc:
securityGroupIds:
- sg-01c29be1d8fbxx59
subnetdIds:
- subnet-007a88d9xxea434d
-
2019-02-18T13:53:51.121Z e688c7bd-24fc-45a1-a565-f2a4c313f846 catch err: { Error: Timed out while waiting for handshake
at Timeout._onTimeout (/var/task/node_modules/ssh2-sftp-client/node_modules/ssh2/lib/client.js:695:19)
at ontimeout (timers.js:482:11)
at tryOnTimeout (timers.js:317:5)
at Timer.listOnTimeout (timers.js:277:5) level: 'client-timeout' }
我在 AWS 中添加了 VPC 和安全组,但仍然出现相同的错误。
我 运行 不知道如何修复它。
增加 lambda 函数的超时值。分配更多内存和超时的选项是 aws
中任何 lambda 函数的一些设置
我明白了。
问题在于 Lambda 实际上是在没有建立连接的情况下转到另一个函数。
所以我所做的是,我将 await 添加到连接和其他不应相互干扰的功能中以使其正常工作。
要了解有关 await 的更多信息,请转到此 link:
https://javascript.info/async-await
SFTP 的功能在本地运行并且配置正确。 问题出在 Lambda 的日志上,它通过给我一个错误来抱怨我认为的配置:等待握手时超时。
const config = {
host: 'ftp.xxxx.at',
port: '22',
username: 'SFTP_xxx',
password: 'xxx9fBcS45',
MD5_Fingerprint: 'xxx:8f:5b:1a',
protocol: "sftp",
algorithms: {
serverHostKey: ['ssh-rsa', 'ssh-dss']
}
};
// get file
// get sftp file
// here ....
const get = () => {
sftp.connect(config).then(() => {
return sftp.get('./EMRFID_201811210903.csv', null, 'utf8', null);
}).then((stream) => {
let body = stream.on('data', (chunk) => {
body += chunk;
})
stream.on('end', () => {
uploadRFIDsToS3(body)
// close connection
sftp.end()
});
}).catch((err) => {
console.log('catch err:', err)
})
};
-
vpc:
securityGroupIds:
- sg-01c29be1d8fbxx59
subnetdIds:
- subnet-007a88d9xxea434d
-
2019-02-18T13:53:51.121Z e688c7bd-24fc-45a1-a565-f2a4c313f846 catch err: { Error: Timed out while waiting for handshake
at Timeout._onTimeout (/var/task/node_modules/ssh2-sftp-client/node_modules/ssh2/lib/client.js:695:19)
at ontimeout (timers.js:482:11)
at tryOnTimeout (timers.js:317:5)
at Timer.listOnTimeout (timers.js:277:5) level: 'client-timeout' }
我在 AWS 中添加了 VPC 和安全组,但仍然出现相同的错误。 我 运行 不知道如何修复它。
增加 lambda 函数的超时值。分配更多内存和超时的选项是 aws
中任何 lambda 函数的一些设置我明白了。 问题在于 Lambda 实际上是在没有建立连接的情况下转到另一个函数。 所以我所做的是,我将 await 添加到连接和其他不应相互干扰的功能中以使其正常工作。
要了解有关 await 的更多信息,请转到此 link: https://javascript.info/async-await