Python Django无法从开发服务器中的aws S3加载媒体文件

Python Django无法从开发服务器中的aws S3加载媒体文件,python,django,amazon-web-services,amazon-s3,Python,Django,Amazon Web Services,Amazon S3,媒体文件已正确上载到aws s3存储桶,但不会呈现到html页面。有人能帮我吗?我找不到出什么问题了 错误 如果我点击下面图片的链接,错误就会出现 <Error> <Code>InvalidRequest</Code> <Message> The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256. </Message

媒体文件已正确上载到aws s3存储桶,但不会呈现到html页面。有人能帮我吗?我找不到出什么问题了

错误 如果我点击下面图片的链接,错误就会出现

<Error>
<Code>InvalidRequest</Code>
<Message>
The authorization mechanism you have provided is not supported. Please 
use AWS4-HMAC-SHA256.
</Message>
<RequestId>C6FE9209F5DE6296</RequestId>
<HostId>
 ry5ZRPCWjDxcxsYzII8q+x6BVMzRRiqvU1kZYxA5OQd07ojkyaqGoAd/OI=
</HostId>
</Error>
设置.py 变量设置如下所示

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
CRISPY_TEMPLATE_PACK = 'bootstrap4'

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRECT_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')

AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
您可能需要添加

AWS_S3_SIGNATURE_VERSION = "s3v4"
确保s3没有使用v2,这不是所有地区都支持的。我对S3的完整设置是:

#AWS S3 settings
AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', '')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', '')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME', '')
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_S3_REGION_NAME = "eu-central-1"
AWS_S3_SIGNATURE_VERSION = "s3v4"
AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}
AWS_STATIC_LOCATION = 'static'

错误的原因是bucket Policy为空。我补充说,现在的政策很好。下面显示的策略(注意:我在下面的策略中提供了大多数情况下不推荐的公共访问权限)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "allow-file-download-stmt",
            "Effect": "Allow",
            "Principal":"*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::zen-blogs/*"
        }
    ]
}

我已经添加了我的完整设置,也许会有帮助。您需要将区域名称更改为您的AWS S3服务器所在的位置。使用参考设置添加了变量,但未起作用。您是否检查了环境变量是否在您的环境中(本地和远程)?是的,检查结果都相同。