首页 > 解决方案 > 带有 multer-3S 的 AWS lambda 上传不受支持的图像文件。但本地服务器上传正确

问题描述

我尝试将图像上传到 AWS S3。在我的本地环境(与生产环境相同的代码)中,图像成功上传到 S3,我可以下载此图像。

但是通过 lambda 环境,可以很好地上传到 S3,但是这个图片无法下载。这张图片甚至比通过本地服务器上传的图片还要大。

我在两个环境之间使用相同的 IAM。这是不可触及的图片网址(lambda 上传)

不能下载图片网址

这是可触摸的图片网址

可以下载图片网址

请帮我。

ps,我的 s3 政策在这里

{
"Version": "2012-10-17",
"Id": "Policy1536755128154",
"Statement": [
    {
        "Sid": "Stmt1536755126539",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::elebooks-image/*"
    },
    {
        "Sid": "Stmt1536827281212",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::elebooks-image"
    }
]

}

我的服务器代码

 export const bookCoverUploader = multer({
  storage: multerS3({
    s3: s3,
    bucket: bookCoverBucket,
    key: function (req, file, cb) {
      let extension = path.extname(file.originalname);
      cb(
        null,
        path.basename(file.originalname, extension) + Date.now().toString() + extension
      );
    },
    acl: 'public-read-write'
  })
});

标签: amazon-web-servicesamazon-s3aws-lambdaserverless

解决方案


推荐阅读