Ошибка 403 при попытке загрузить в корзину s3 с помощью aws sdk - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь напрямую загрузить файл на S3, используя библиотеку JavaScript AWS SDK.Я следую инструкции, изложенной здесь:

https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-photo-album-full.html

с поддержкой

https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/getting-started-browser.html

Я уверен, что у меня естьнастроить все правильно, но всякий раз, когда я пытаюсь запустить код, я получаю ошибку 403.Сначала я попытался сделать это с самой слабой защитой с намерением постепенно ужесточить ее.

Вот что я сделал:

  1. Создал новое ведроназывается Playground с настройками по умолчанию, выбранными в мастере создания.

  2. Создан пул идентификаторов Cognito с именем Playground с неаутентифицированными удостоверениями.Имя роли, не прошедшее проверку подлинности, было Cognito_PlaygroundUnauth_Role

  3. Добавьте политику к роли IAM без проверки подлинности следующим образом

    {
       "Version": "2012-10-17",
       "Statement": [
          {
             "Effect": "Allow",
             "Action": [
                "s3:*"
             ],
             "Resource": [
                "arn:aws:s3:::playground/*"
             ]
          }
       ]
    }
Добавлены разрешения CORS для новой корзины Playground
    <?xml version="1.0" encoding="UTF-8"?>
    <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedMethod>DELETE</AllowedMethod>
        <AllowedMethod>HEAD</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    </CORSConfiguration>

На этом этапе все должно быть настроено на основе руководств, перечисленных выше, но я получаю 403. Сначала я пытался упростить вещи ипросто реализуйте метод listAlbums в ссылочных URL-адресах выше.

Тогда я подумал, что, возможно, добавление политики корзины в корзину Playground может помочь, но это не

{
    "Version": "2012-10-17",
    "Id": "Policy1549895523201",
    "Statement": [
        {
            "Sid": "Stmt1549895522186",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::925601331860:role/Cognito_PlaygroundUnauth_Role"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::playground/*"
        }
    ]
}

Обновление Я смогу выполнить эту работу, если обновлю ACL общего доступа в корзине, чтобы каждый мог перечислять и писать объекты.Однако я не хочу открывать это для всех.Только анонимная роль Cognito

Есть мысли?

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