AWS: Доступ запрещен при попытке загрузить presigned URL (прямая FileUpload браузер)

Обновить

April 2019

Просмотры

13 раз

1

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

Я в первую очередь позволяет корневой AWS учетную запись для использования putObject. У меня нет каких - либо дополнительных счетов - я просто хочу, чтобы работать на моей учетной записи суперпользователя , чтобы начать с. Вот политика Ковш:

{
    "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 });


}

Любые идеи, что я сделал не так?

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

0 ответы