这是上传到特定存储桶的存储桶政策,在本例中为static。
{
"Version": "2008-10-17",
"Id": "StaticAndMediaPermissions",
"Statement": [
{
"Sid": "AllowAnybodyToGetBucketLocation",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetBucketLocation",
"Resource": "arn:aws:s3:::<bucket_name>"
},
{
"Sid": "AllowCollectstaticUserToListStaticDirectory",
"Effect": "Allow",
"Principal": {
"AWS": "<collectstatic_user_arn_from_iam_user_summary>"
},
"Action": [
"s3:ListBucket",
"s3:ListBucketMultipartUploads"
],
"Resource": [
"arn:aws:s3:::<bucket_name>",
"arn:aws:s3:::<bucket_name>/static"
]
},
{
"Sid": "AllowCollectstaticUserAccessToAllObjectsInStaticDirectory",
"Effect": "Allow",
"Principal": {
"AWS": "<collectstatic_user_arn_from_iam_user_summary>"
},
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObjectAcl",
"s3:ListMultipartUploadParts",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::<bucket_name>/static/*"
}
]
}
您仍然需要从我的其他答案中添加 IAM 用户策略。
确保在您的settings.py 中将AWS_LOCATION 变量设置为/static/。如果你没有那个设置,这将不起作用。
来源:
* http://blogs.aws.amazon.com/security/post/Tx1P2T3LFXXCNB5/Writing-IAM-policies-Grant-access-to-user-specific-folders-in-an-Amazon-S3-bucke
- 了解如何设置特定目录的权限
* https://stackoverflow.com/a/9649233/1999151
- 提示我使用 AWS_LOCATION
或者,如果您想为静态文件和媒体文件设置单独的目录,则需要按照此处的说明进行操作:
https://stackoverflow.com/a/10626241/1999151
并从settings.py 中删除AWS_LOCATION。
您仍然需要从我的其他答案中添加 IAM 用户策略。
然后您需要将 AWS 存储桶策略调整为以下内容:
{
"Version": "2008-10-17",
"Id": "StaticAndMediaPermissions",
"Statement": [
{
"Sid": "AllowAnybodyToGetBucketLocation",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetBucketLocation",
"Resource": "arn:aws:s3:::<bucket_name>"
},
{
"Sid": "AllowCollectstaticUserToListStaticAndMediaDirectories",
"Effect": "Allow",
"Principal": {
"AWS": "<collectstatic_user_arn_from_iam_user_summary>"
},
"Action": [
"s3:ListBucket",
"s3:ListBucketMultipartUploads"
],
"Resource": [
"arn:aws:s3:::<bucket_name>",
"arn:aws:s3:::<bucket_name>/media"
"arn:aws:s3:::<bucket_name>/static"
]
},
{
"Sid": "AllowCollectstaticUserAccessToAllObjectsInStaticAndMediaDirectories",
"Effect": "Allow",
"Principal": {
"AWS": "<collectstatic_user_arn_from_iam_user_summary>"
},
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObjectAcl",
"s3:ListMultipartUploadParts",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::<bucket_name>/media/*",
"arn:aws:s3:::<bucket_name>/static/*"
]
}
]
}