如何解决尝试从 sftp-client 上传到 AWS Transfer 时出现访问被拒绝错误
我正在 AWS 上设置 SFTP 服务器。 我正在使用 WinSCP 对其进行测试,文件正在传输到 S3,但出现了一些错误:
The server does not support the operation.
Error code: 8
Error message from server (US-ASCII): SETSTAT unsupported
在我的 lambda 中,我有这个:
exports.lambdaHandler = async (event,context) => {
let response
try {
await sftp.connect({
host: "myhost",port: myport,username: process.env.SFTP_USERNAME,privateKey: mykey
})
let dst = fs.createWriteStream('/tmp/csvStream.csv');
await sftp.get('/share/csvTest.csv',dst);
await sftp.end()
let fileContent = fs.readFileSync('/tmp/csvStream.csv')
const params = {
Bucket: "my-bucket",Key: 'csvTest.csv',Body: fileContent,ContentType: 'text/csv',}
let s3UploadPromise = new Promise((resolve,reject) => {
S3.putObject(params,function (error,data) {
if (error) {
reject(error);
}
resolve(`File was Uploaded Successfully. csvTest.csv`)
});
})
let result = await s3UploadPromise
// const ret = await axios(url);
response = {
'statusCode': 200,'body': JSON.stringify({
message: result,// location: ret.data.trim()
})
}
} catch (err) {
console.log(err);
return err;
}
return response
};
我得到:
Invoking app.lambdaHandler (nodejs14.x)
Skip pulling image and use local one: amazon/aws-sam-cli-emulation-image-nodejs14.x:rapid-1.22.0.
Mounting F:\GingerBlack\DataRetriever\Retriever as /var/task:ro,delegated inside runtime container
START RequestId: d1a73d3a-04d7-4b6b-9c95-5bd657211988 Version: $LATEST
} custom: trueeam.Transform._write (internal/streams/transform.js:193:12) {3:15)7:17)99:18) Access denied /share/csvTest.csv
END RequestId: d1a73d3a-04d7-4b6b-9c95-5bd657211988
REPORT RequestId: d1a73d3a-04d7-4b6b-9c95-5bd657211988 Init Duration: 0.13 ms Duration: 5323.93 ms Billed Duration: 5400 ms Memory Size: 128 MB Max Memory Used: 128 MB
{"code":3,"custom":true}
并且文件没有被传输。
我的 s3、服务器和 IAM 角色现在允许一切,因为我只想测试它,但不确定拒绝访问的来源。
谢谢
解决方法
我的 sftp.get 指向了我之前在本地运行时设置的错误位置。我只是放了 ./csvTest.csv 来修复它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。