簡體   English   中英

以 minio 作為后端的 Django-Storages S3

[英]Django-Storages S3 with minio as backend

我想將 django-storages 與 minio 一起使用,所以我嘗試采用設置、配置等。我在網上找到,但由於某種原因,我的訪問密鑰或提供它的方式失敗,並出現以下錯誤:

botocore.exceptions.ClientError: An error occurred (InvalidAccessKeyId) when calling the PutObject operation: The AWS Access Key Id you provided does not exist in our records.

如果我運行manage.py collectstatic

設置.py

#S3 config
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'MyProject/static'),
]
AWS_ACCESS_KEY_ID = '9VOWWCTSMX4ZEGVW7N9D'
AWS_SECRET_ACCESS_KEY = 'zJFf9BYWk0TM3FVwyY98UFy0o+DQF0oY1vCXgLqV'
AWS_STORAGE_BUCKET_NAME = 'static'
AWS_S3_CUSTOM_DOMAIN = '127.0.0.1:9000'

AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}

AWS_LOCATION = 'static'
STATIC_URL = 'http://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

也許有人已經這樣做了?

這是我為使其正常工作所做的工作

# settings.py

STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

AWS_STORAGE_BUCKET_NAME = 'static'

AWS_ACCESS_KEY_ID = minio_access_key
AWS_SECRET_ACCESS_KEY = minio_secret_key
AWS_S3_ENDPOINT_URL = minio_address (eg. http://localhost:9000)

版本:

  • boto3==1.10.45
  • Django==3.0.1
  • Django 存儲==1.8
  • Minio==2019-12-26T01:55:09Z(從源代碼構建的Docker鏡像在RPi4上運行)

注意:使用pip install <package>時版本是最新的

我沒有嘗試使用django-minio-storage因為它不支持 Django3。

如果您升級了軟件包版本,請嘗試我所做的。 如果沒有嘗試設置S3_HOST = '127.0.0.1:9000'

來自django-storage 文檔的AWS_S3_ENDPOINT_URL

AWS_S3_ENDPOINT_URL (可選:默認為 None,僅限 boto3
連接到 S3 時使用的自定義 S3 URL,包括方案。 覆蓋AWS_S3_REGION_NAMEAWS_S3_USE_SSL 為避免 AuthorizationQueryParametersError 錯誤,還應設置AWS_S3_REGION_NAME

故障排除
斷開 Internet 連接並運行manage.py collectstatic以查看 boto 無法連接到的地址。

為什么會出錯?

[這是一個假設]:您正在嘗試使用minio credential訪問minio 設置/內容 但是, django-storage包在 aws s3 的 API 上使用它。


如果您嘗試使用minio ,則應該使用minio backed ,這可以通過使用django-minio-storage 來實現

我已經在django-minio-storage的幫助下在生產中實現了媒體存儲和靜態存儲,並且它可以無縫地工作。


我的 django-minio 配置設置

DEFAULT_FILE_STORAGE = 'minio_storage.storage.MinioMediaStorage'
STATICFILES_STORAGE = 'minio_storage.storage.MinioStaticStorage'
MINIO_STORAGE_ENDPOINT = '127.0.0.1:9000'
MINIO_STORAGE_STATIC_BUCKET_NAME = "static"
STATIC_URL = f'https://{MINIO_STORAGE_ENDPOINT}/{MINIO_STORAGE_STATIC_BUCKET_NAME}/'
MINIO_STORAGE_USE_HTTPS = True
MINIO_STORAGE_AUTO_CREATE_MEDIA_BUCKET = True
MINIO_STORAGE_AUTO_CREATE_STATIC_BUCKET = True

MINIO_STORAGE_ACCESS_KEY = #your ACCESS_KEY
MINIO_STORAGE_SECRET_KEY = # Your SECRET_KEY
MINIO_STORAGE_MEDIA_BUCKET_NAME = "media"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM