Доступ к файлам s3 запрещен для больших файлов с использованием Cyberduck
Когда я использую пользовательскую политику ниже, я получаю следующую ошибку при загрузке больших файлов (1G и более) с помощью Cyberduck
доступ к файлу запрещен. пожалуйста, обратитесь к поставщику услуг веб-хостинга за помощью
Однако загрузка небольших файлов (около 200 МБ) не является проблемой, также у меня нет проблем с созданием новых папок и файлов с кибер-уткой и теми же учетными данными для входа. Так что у меня определенно есть доступ для чтения / записи.
Кроме того, если я добавляю предварительно определенную политику (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 ответ
Я продолжал копаться и обнаружил, что Amazon рекомендует использовать многоэтапную загрузку для всех файлов размером более 100 МБ ( 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 также оказался очень полезным, чтобы выяснить, чего не хватает и где его следует разместить.