我想将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
settings.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'
也许有人已经这样做了吗?
感谢每一个提示! BR
答案 0 :(得分:2)
[这是一个假设]::您正在尝试使用 minio凭据访问 minio设置/资料。但是, django-storage 软件包在aws s3的API上使用了它。
如果您尝试使用 minio ,则应使用 minio支持的,这可以通过使用django-minio-storage来实现。
我已经在生产中使用 django-minio-storage 的帮助实现了媒体存储和静态存储,并且可以无缝运行。
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"
答案 1 :(得分:0)
这就是我要使其正常工作的地方
# 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)
版本:
注意:版本是使用pip install <package>
我没有尝试使用django-minio-storage
,因为它不支持Django3。
如果您已升级软件包版本,请尝试我所做的。如果没有,请尝试设置S3_HOST = '127.0.0.1:9000'
。
AWS_S3_ENDPOINT_URL
来自django-storage docs
AWS_S3_ENDPOINT_URL
(可选:默认为无,仅 boto3 )
连接到S3时使用的自定义S3 URL(包括方案)。覆盖AWS_S3_REGION_NAME
和AWS_S3_USE_SSL
。为避免AuthorizationQueryParametersError错误,还应该设置AWS_S3_REGION_NAME
。
问题排查
断开互联网连接,然后运行manage.py collectstatic
来查看Boto无法连接到的地址。