S3 생성시 퍼블릭으로 생성

const express = require('express');
const router = express.Router();
const multer = require('multer');
const AWS = require('aws-sdk');
const multerS3 = require('multer-s3');
const uuidv1 = require('uuid/v1');
const path = require('path');
const authMiddleware = require('../middleware/auth');
const FileModel = require('../models/File');

AWS.config.update({
  region: 'ap-northeast-2',
  accessKeyId: process.env.S3_ACCESS_ID,
  secretAccessKey: process.env.S3_SECRET_KEY,
});

const upload = multer({
  storage: multerS3({
    s3: new AWS.S3(),
    bucket: 'gns-static-s3',
    key(req, file, cb) {
      const ext = path.extname(file.originalname);
      const pathname = 'images/';
      const filename = `${uuidv1()}${ext}`;
      cb(null, `${pathname}${filename}`);
    }
  }),
  limits: { fileSize: 20 * 1024 * 1024 },
});

router.post('/upload', authMiddleware, upload.single('file'), async (req, res) => {
  const { decoded } = req;
  const { file } = req;
  const File = new FileModel({
    name: file.key.substr(file.key.indexOf('/') + 1),
    originalFilename: file.originalname,
    size: file.size,
    extension: path.extname(file.key).substr(1),
    path: file.key.substring(0, file.key.indexOf('/') + 1),
    url: file.location,
    created_by: decoded.id,
  });

  try {
    const result = await File.save();
    console.log(result);
    res.json({ message: '등록 성공', file: result });
  } catch (e) {
    console.error(e);
    res.status(500).json({ message: '등록 실패' });
  }
});

module.exports = router;

그런데 location 접근이 안된다. 권한 설정 필요?

버킷 정책 수정 필요

{
    "Id": "Policy1566729167104",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1566729164746",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::gns-static-s3/*",
            "Principal": "*"
        }
    ]
}