在aws中上传图片时拒绝访问

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

我已经从aws education创建了aws帐户。我正在尝试将图片上传到AWS s3。但是我总是得到拒绝访问错误。在这里,我将发布我的代码。请帮我解决这个错误我也将发布aws设置

const multer = require('multer');
const multerS3 = require('multer-s3');
const config = require('../config');

aws.config.update({
  secretAccessKey: config.AWS_SECRET_ACCESS_KEY,
  accessKeyId: config.AWS_ACCESS_KEY_ID,
  region: 'us-east-1'
});

const s3 = new aws.S3();

const fileFilter = (req, file, cb) => {
  if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png' || file.mimetype === 'image/jpg') {
    cb(null, true);
  } else {
    cb(new Error('Invalid file type, only JPEG and PNG is allowed!'), false);
  }
}

const upload = multer({
  fileFilter,
  storage: multerS3({
    acl: 'private',
    s3,
    bucket: 'acc-partner',
    metadata: function (req, file, cb) {
      cb(null, {
        fieldName: 'TESTING_METADATA'
      });
    },
    key: function (req, file, cb) {
      cb(null, Date.now().toString())
    }
  })
});

module.exports = upload;
const express = require('express');
const router = express.Router();
const UserCtrl = require('../controllers/user');

const upload = require('../services/image-upload');

const singleUpload = upload.single('image');


router.post('/image-upload', UserCtrl.authMiddleware, function(req, res) {
  singleUpload(req, res, function(err) {
    if (err) {
      return res.status(422).send({errors: [{title: 'Image Upload Error', detail: err.message}]});
    }

    return res.json({'imageUrl': req.file.location});
  });
});

module.exports = router;

邮递员错误

    "errors": [
        {
            "title": "Image Upload Error",
            "detail": "Access Denied"
        }
    ]
}

先谢谢您picture of errorpicture of setting in aws

node.js amazon-s3
1个回答
0
投票

这是因为您尚未设置存储桶的公共策略(正如我在AWS映像中看到的那样)。尝试将您的存储桶策略设置为公共(单击“存储桶策略”按钮)。

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::acc-partner/*"
        }
    ]
}

您可以在https://awspolicygen.s3.amazonaws.com/policygen.html处使用策略生成器。

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