微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

S3.upload在生产环境中不起作用,但在localhost NodeJS中起作用

如何解决S3.upload在生产环境中不起作用,但在localhost NodeJS中起作用

我喜欢使用AWS,但是我似乎无法使用Node.js将任何应用程序上传到生产环境中的存储桶中,但是在localhost开发中,它似乎没有问题。我的应用托管在生产中的netlify上。

问题出在生产中,回调从未触发,我在netlify服务器中看到日志,例如“ this is image Metadeta”日志,以及除回调之外的所有其他触发信号。

有人知道为什么这个问题只会在生产中发生吗?我将所有存储桶策略/用户角色设置为允许使用“ AmazonS3FullAccess”策略进行所有访问

还有我的角色政策

{
    "Version": "2012-10-17","Statement": [
        {
           "Sid": "VisualEditor0","Effect": "Allow","Action": "s3:*","Resource": [
              "arn:aws:s3:::testbucket
              "arn:aws:s3:::testbucket/testbucket"
           ]
       }
   ]
}

这是我的代码,用于将图像上传到存储桶uploadProfilePicToS3函数

function uploadProfilePicToS3(file) {
let s3bucket = new AWS.S3({
 accessKeyId: IAM_USER_KEY,secretAccessKey: IAM_USER_SECRET,Bucket: BUCKET_NAME,});
s3bucket.createBucket(function () {
 var params = {
   Bucket: BUCKET_NAME,Key: `instacloneprofilepics/${file.name}`,Body: file.data,ACL: "public-read",ContentType: file.mimetype,};
 console.log("this is the image Metadeta",params);
 s3bucket.upload(params,function (err,data) {
   if (err) {
     console.log("error in callback");
     console.log(err);
     return;
   }

   console.log("POST UPLOADED SUCCESS FROM CALLBACK");

   console.log(data);
   return data;
 });
});
}

然后我只需在路由中调用从前端发送的数据/文件中的函数即可。

   const file = req.files.img;

   busboy.on("finish",function () {
     console.log("Upload finished");

     console.log(file);
     uploadProfilePicToS3(file);
   });

   req.pipe(busboy);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。