我正在使用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
s(来自其他来源和文档)以获得更宽松的访问权限,但同样的问题仍然存在。
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetObjectAcl",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:DeleteObject",
"s3:DeleteObjectVersion"
]
添加具有唯一名称的新文件时,我没有这样的问题,只有在需要重命名时。