我使用非常简单的函数将文件写入AWS
function writeToS3(filePath, data) {
try {
let s3 = new AWS.S3();
s3.config.update({ accessKeyId: process.env.AWSACCESSKEY, secretAccessKey: process.env.AWSSECRET });
var params = {
Body: String(data),
Bucket: process.env.AWSBUCKET,
Key: filePath,
};
s3.upload(params, async function (err, data) {
if (err) {
console.error(err, err.stack);
} else {
console.log(`Uploading ${data}succesfully`)
return data;
}
});
} catch (ex) {
console.error(`S3 ${filePath} error ${ex.message}.`);
return null;
}
}
module.exports = { readFromS3, writeToS3 };
函数正常工作,我在调试器上看到“数据”对象,但存储桶上的文件确实丢失,我称此函数为
let Aws = require('../util/s3service')
Aws.writeToS3("/file1", "hello world")
有成功日志
Uploading [object Object]succesfully
我使用 WinSCP 检查文件是否存在或现在文件丢失。没有任何错误,一切正常,但是存储桶中的文件丢失了,出了什么问题?
在 Amazon S3 中,对象键(文件名)不应以斜杠 (/
) 开头。
/file1
更改为
file1
。前面有斜杠,它可能会尝试创建一个没有名称的“文件夹”,而不是生成错误。它可能通过 aws s3 ls s3://bucket-name//
可见,它显示了
/
文件夹的内部。