You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Cookiecutter Docker环境下DO Spaces连接AWS端点报错

Django-Cookiecutter + Docker 环境配置 DigitalOcean Spaces 端点错误解决

问题场景

已确认DO Spaces的环境变量配置无误:

DJANGO_AWS_ACCESS_KEY_ID='DO00CBN....BATCXAE'
DJANGO_AWS_SECRET_ACCESS_KEY='vkmMV3Eluv8.....U1nvalkSFugkg'
DJANGO_AWS_STORAGE_BUCKET_NAME='my-key'
DJANGO_AWS_DEFAULT_ACL = 'public-read'
DJANGO_AWS_S3_REGION_NAME = 'sgp1'

DJANGO_AWS_S3_CUSTOM_DOMAIN = 'https://my-key.sgp1.digitaloceanspaces.com'

在production.py中修改域名后缀后,仍出现端点连接错误:

AWS_ACCESS_KEY_ID = env("DJANGO_AWS_ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY = env("DJANGO_AWS_SECRET_ACCESS_KEY")
AWS_STORAGE_BUCKET_NAME = env("DJANGO_AWS_STORAGE_BUCKET_NAME")
AWS_QUERYSTRING_AUTH = False
_AWS_EXPIRY = 60 * 60 * 24 * 7
AWS_S3_OBJECT_PARAMETERS = {
    "CacheControl": f"max-age={_AWS_EXPIRY}, s-maxage={_AWS_EXPIRY}, must-revalidate",
}
AWS_S3_MAX_MEMORY_SIZE = env.int( "DJANGO_AWS_S3_MAX_MEMORY_SIZE",
    default=100_000_000,  # 100MB)
AWS_S3_REGION_NAME = env("DJANGO_AWS_S3_REGION_NAME", default=None)
AWS_S3_CUSTOM_DOMAIN = env("DJANGO_AWS_S3_CUSTOM_DOMAIN", default=None)

# aws_s3_domain = AWS_S3_CUSTOM_DOMAIN or f"{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com"
aws_s3_domain = AWS_S3_CUSTOM_DOMAIN or f"{AWS_STORAGE_BUCKET_NAME}.digitaloceanspaces.com"

错误信息:

botocore.exceptions.EndpointConnectionError: Could not connect to the endpoint URL: "https://my-key.s3.sgp1.amazonaws.com/static/sass/project.scss"

解决方法

1. 强制指定DO Spaces端点URL

问题根源是boto3默认使用AWS S3端点,需在production.py中添加**AWS_S3_ENDPOINT_URL**配置,直接指向DO Spaces的区域端点:

AWS_S3_ENDPOINT_URL = f"https://{AWS_S3_REGION_NAME}.digitaloceanspaces.com"

若已通过环境变量配置DJANGO_AWS_S3_ENDPOINT_URL,也可通过env读取:

AWS_S3_ENDPOINT_URL = env("DJANGO_AWS_S3_ENDPOINT_URL", default=f"https://{AWS_S3_REGION_NAME}.digitaloceanspaces.com")

2. Docker环境下的配置方式

通过production.yml环境变量配置

在production.yml的django服务环境变量段添加:

services:
  django:
    environment:
      - DJANGO_AWS_S3_ENDPOINT_URL=https://sgp1.digitaloceanspaces.com
      # 保留其他已有环境变量

通过Dockerfile配置(可选)

如需在镜像构建阶段注入环境变量,可在Dockerfile中添加:

ENV DJANGO_AWS_S3_ENDPOINT_URL=https://sgp1.digitaloceanspaces.com

3. 验证配置

添加端点配置后,boto3会直接连接DO Spaces端点,不再指向AWS S3。同时确保AWS_S3_REGION_NAME与你的DO空间区域一致(如sgp1)。


内容的提问来源于stack exchange,提问作者diogenes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 17:42:50