AWS: доступ запрещен при попытке загрузить заранее назначенный URL (браузер с прямой загрузкой файлов) - PullRequest
1 голос
/ 24 апреля 2019

Я пытаюсь использовать заранее заданный URL, но я продолжаю получать 403 Forbidden Access Denied, несмотря на то, что все настроено так, как я считаю.Я хочу загрузить файл непосредственно из браузера в Amazon S3.

Прежде всего, я хочу, чтобы корневая учетная запись AWS использовала putObject.У меня нет никаких дополнительных учетных записей - я просто хочу, чтобы это работало для моей учетной записи root.Вот политика корзины:

{
    "Version": "2012-10-17",
    "Id": "XXXX",
    "Statement": [
        {
            "Sid": "XXXXX",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::XXXX:root"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::XXXXX/*"
        }
    ]
}

Это мой сервер Node.js.Здесь я просто генерирую URL и отправляю его на веб-интерфейс.Немного кода для бэкэнда:

const aws = require('aws-sdk');

aws.config.update({
  region: "eu-north-1",
  accessKeyId: "XXX",
  secretAccessKey: "YYY"
});

const s3 = new aws.S3({ apiVersion: "2006-03-01" });

app.get('/geturl', (req,res) => {

   const s3Params = {
      Bucket: 'XXXXXXXXXXXXX',
      Key: req.query.filename,
      Expires: 500,
      ContentType: req.query.type,
      ACL: "public-read"
   };

   s3.getSignedUrl("putObject", s3Params, (err, data) => {
      res.send(data);
   });

})

Во внешнем интерфейсе я делаю простой вызов, используя URL с файлом, который я хочу загрузить.Когда я выполняю второй вызов извлечения, он выдаст ошибку:

async function handleUpload(e) {
     const file = e.target.files[0];

     const res = await fetch('http://localhost:3001/geturl');

     const url  = await res.text();

     const resUpload = await fetch(url, { method: 'PUT', body: file });


}

Есть идеи, что я сделал не так?

Правка - Похоже, это работает, если я сниму галочку с первогофлажок - это большое дело или это всегда должно быть заблокировано в производственной среде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...