Не удается установить политику S3 для операций HEAD (403 - запрещено)
Я использую Django
с django-storages
библиотека для загрузки файлов моей модели на S3 и необходимо добавить политику, чтобы заблокировать прямую загрузку с URL-адресов корзины.
Я добился этого, установив политику ниже (проверьте Referer
) но это привело к проблеме, когда я использую функцию автоматического переименования библиотеки. Моя текущая политика:
{
"Version": "2012-10-17",
"Id": "Policy1542209806458",
"Statement": [
{
"Sid": "Block access globally except by the indicated referers.",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::my-bucket/subfolder/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"http://ref.localhost:8000/*",
"http://localhost:8000/*"
]
}
}
}
]
}
Отладкой я обнаружил, что когда библиотека пытается выполнить HEAD
запрос на получение существующей информации о файле (которая будет указывать на необходимость переименования), ответ - ошибка HTTP 403. Я пытался в том числе Action
Ниже (из других источников и документации), чтобы иметь более разрешительный доступ, но та же проблема сохраняется.
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetObjectAcl",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:DeleteObject",
"s3:DeleteObjectVersion"
]
У меня нет такой проблемы при добавлении новых файлов с уникальными именами, только когда необходимо переименование.