无法将数据写入Amazon S3

问题描述 投票:0回答:1

我使用非常简单的函数将文件写入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 检查文件是否存在或现在文件丢失。没有任何错误,一切正常,但是存储桶中的文件丢失了,出了什么问题?

javascript amazon-web-services amazon-s3
1个回答
0
投票

在 Amazon S3 中,对象键(文件名)不应以斜杠 (/) 开头。

因此,请尝试将 

/file1

更改为

file1
前面有斜杠,它可能会尝试创建一个没有名称的“文件夹”,而不是生成错误。它可能通过 

aws s3 ls s3://bucket-name//

可见,它显示了

/
文件夹的内部。
    

© www.soinside.com 2019 - 2024. All rights reserved.