使用Django Storage与Boto3无法从AWS S3获取媒体文件的技术求助
解决AWS S3
IllegalLocationConstraintException 静态文件访问问题 你遇到的这个错误核心原因是区域端点不匹配:me-south-1(中东巴林区域)属于AWS的区域特定端点,默认的S3请求路由无法正确适配这个区域,导致请求被发送到错误的节点,触发位置约束不兼容的报错。
解决方案:添加区域专属端点配置
在你的settings.py中新增AWS_S3_ENDPOINT_URL配置项,指定me-south-1对应的S3专属端点即可解决问题:
AWS_ACCESS_KEY_ID = <key> AWS_SECRET_ACCESS_KEY = <secret-key> AWS_STORAGE_BUCKET_NAME = <bucket-name> AWS_DEFAULT_ACL = None AWS_S3_FILE_OVERWRITE = False AWS_S3_REGION_NAME = 'me-south-1' # 新增区域专属端点配置 AWS_S3_ENDPOINT_URL = 'https://s3.me-south-1.amazonaws.com' AWS_S3_USE_SSL = True AWS_S3_VERIFY = False DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
额外检查项
为了确保问题彻底解决,建议你再确认两点:
- 你的S3 Bucket确实是在
me-south-1区域创建的,避免Bucket区域和配置区域不匹配 AWS_S3_REGION_NAME的拼写没有错误(注意是me-south-1,不要和其他相似区域混淆)
修改配置后重启开发服务器,再尝试访问静态文件应该就能正常加载了。
内容的提问来源于stack exchange,提问作者Swalhamdan
相关产品推荐
相关产品推荐

