代码之家  ›  专栏  ›  技术社区  ›  Soerendip

使用Django的非AWS S3存储?

  •  0
  • Soerendip  · 技术社区  · 3 年前

    我有一个S3存储,它不是由AWS托管的。我尝试将我的AWS帐户作为文件存储,但当我将凭据切换到非AWS提供商时,效果很好:

    botocore.exceptions.ClientError:调用HeadObject操作时发生错误(403):Forbidden

    在django日志中,以及

    位于/admin/api/mebolomicsmxxml/add的客户端错误/ 调用HeadObject操作时发生错误(403):Forbidden

    显示在浏览器中。

    我使用 django-storages 具有以下配置:q :

    AWS_ACCESS_KEY_ID = os.getenv('AWS_ACCESS_KEY_ID')
    AWS_SECRET_ACCESS_KEY = os.getenv('AWS_SECRET_ACCESS_KEY')
    AWS_STORAGE_BUCKET_NAME = os.getenv('AWS_STORAGE_BUCKET_NAME')
    AWSS_S3_SIGNATURE_VERSION = 's3v4'
    AWS_S3_REGION_NAME = 'ca-central-1'
    AWS_S3_FILE_OVERWRITE = False
    AWS_DEFAULT_ACL = None
    AWS_S3_VERIFY = True
    AWS_ENDPOINT_URL = 'example.com:443'
    
    DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' 
    

    是否可以使用 django-storages boto3 与非AWS提供商合作?还有其他包我应该试试吗?


    我试过了

    AWS_S3_ENDPOINT_URL = 'example.com:443'
    

    AWS_S3_ENDPOINT_URL = 'example.com'
    

    然后我得到

    ValueError:无效的终结点:。。。

    1 回复  |  直到 3 年前
        1
  •  0
  •   Soerendip    3 年前

    它终于奏效了。

    我不得不将S3端点的格式更改为:

    'https://example.com'
    

    它起作用了!我现在可以使用django的非AWS S3存储。