Доступ запрещен при загрузке объектов S3 - PullRequest
0 голосов
/ 11 ноября 2019

Я следую этому руководству по добавлению / перечислению объектов из S3.

Сначала у меня возникла проблема с перечислением объектов из-за ошибки Access Denied, поэтому я обнаружил, что янеобходимо добавить дополнительное разрешение s3:ListBucket и ресурс arn:aws:s3:::my-bucket к роли, созданной cognito для пользователя без прав доступа :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        }
    ]
}

Теперь, когда я пытаюсь загрузить файл, яполучаю еще один Access Denied.

Я что-то не так делаю или в этом руководстве столько ошибок?

Дополнительные проверки:

  • в корзине есть CORS
  • Я не изменил никаких разрешений для группы после ее создания (все по умолчанию)
  • Я использую правильный идентификатор Cognito Identity Pool (я могу перечислить albmus)
  • Я могу удалить альбом
  • После ошибки Access Denied я вижу, что в Cognito Unauth появилась новая личность, поэтому скрипт работает правильно.
  • Владелец корзины (я) прочитал/ запись доступа к ведру

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Я не уверен, как внутренне работает cognito, и он может играть с ACL объекта s3. Таким образом, добавление s3:PutObjectAcl и s3:GetObjectAcl операций доступа может помочь. Кроме того, если ваш код выполняет многокомпонентную загрузку на S3, вы должны рассмотреть возможность добавления s3:ListBucketMultipartUploads операции доступа. Операция s3:PutObject уже добавляет разрешения для Инициирование многоэтапной загрузки , Загрузка части , Полная многоэтапная загрузка .

0 голосов
/ 11 ноября 2019

Добавьте роль IAM с политикой, это позволит пользователю загружать любой файл с помощью API или консоли.

{
    "Version": "2012-10-17",
    "Id": "1",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::777777:user/myuser"
                 ]
            },
            "Action": [
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:GetObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::bucketname/*",
                "arn:aws:s3::: bucketname"
            ]
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...