Django/AWS - 调用 HeadObject 操作时发生错误 (403):Forbidden

问题描述 投票:0回答:3

我正在尝试设置 Django 项目以在 AWS S3 存储桶上托管静态图像,但是当我尝试通过 Django 管理面板上传图像时,出现以下错误

这些是我在 Django 中的设置

AWS_ACCESS_KEY_ID = 'some_key' 
AWS_SECRET_ACCESS_KEY = 'some_key_aswell' 
AWS_STORAGE_BUCKET_NAME = 'bucket_name'

AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

AWS_S3_REGION_NAME = 'us-east-2' 

存储桶的 Cors 策略设置

 [
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "POST",
            "PUT"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]
django amazon-s3
3个回答
0
投票

运行 Django 应用程序的计算机(或容器)使用的 IAM 角色需要添加以下 IAM 策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
              "s3:GetObject",
            ],
            "Resource": "arn:aws:s3:::<bucket>/<prefix>/*"
        }
    ]
}

如果您的对象已加密,请确保您还允许您的 IAM 角色使用用于加密您的对象的 KMS 密钥。


0
投票

我过去并将存储桶策略更改为:

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::YOUR-BUCKET-NAME/*"
        }
    ]
}

并且成功了。


0
投票

我曾经遇到过同样的错误。我将“Action”:“s3:GetObject”更改为“Action”:“s3:*”。它对我有用

© www.soinside.com 2019 - 2024. All rights reserved.