1

Когда я использую пользовательскую политику ниже, я получаю следующую ошибку при загрузке больших файлов (1G и более) с помощью Cyberduck

доступ к файлу запрещен. пожалуйста, обратитесь к поставщику услуг веб-хостинга за помощью

Однако загрузка небольших файлов (около 200 МБ) не является проблемой, также у меня нет проблем с созданием новых папок и файлов с Cyberduck и теми же учетными данными для входа. Так что у меня определенно есть доступ для чтения / записи.

Кроме того, если я добавляю предварительно определенную политику (AmazonS3FullAccess), то загрузка больших файлов также работает нормально. Я немного потерян здесь. Как моя политика ограничивает загрузку больших файлов? Что мне не хватает?

моя политика

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

Политика AmazonS3FullAccess

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*"
    }
  ]
}

1 ответ1

2

Я продолжал копаться и обнаружил, что Amazon рекомендует использовать многоэтапную загрузку для всех файлов размером более 100M (http://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html), что, как мне кажется, делается Cyberduck.

Все, что мне нужно было сделать, это добавить отсутствующие разрешения (ListMultipartUploadParts и ListBucketMultipartUploads), чтобы включить многочастную загрузку. Теперь моя политика выглядит так

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

Я нашел основную подсказку, включив ведение журнала, в котором было много ошибок "AccessDenied 243" для REST.GET.UPLOADS. Amazon Simulator Policy также оказался очень полезным, чтобы выяснить, чего не хватает, и где его следует разместить.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .