我使用的是django-s3-storage == 0.11.2和boto3 == 1.4.4.这些在settings.py中:
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static_cdn')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media_cdn')
AWS_S3_BUCKET_NAME = "my-bucket-name"
AWS_ACCESS_KEY_ID = 'test_id_x'
AWS_SECRET_ACCESS_KEY = 'test_id_x+test_id_x'
DEFAULT_FILE_STORAGE = "django_s3_storage.storage.S3Storage"
STATICFILES_STORAGE = "django_s3_storage.storage.StaticS3Storage"
AWS_S3_ADDRESSING_STYLE = "auto"
AWS_S3_BUCKET_AUTH_STATIC = False
AWS_S3_MAX_AGE_SECONDS_STATIC = 60 * 60 * 24 * 365 # 1 year.
AWS_S3_BUCKET_AUTH = False
AWS_S3_MAX_AGE_SECONDS = 60 * 60 * 24 * 365 # 1 year.
Run Code Online (Sandbox Code Playgroud)
我也运行了这些命令:
manage.py s3_sync_meta django.core.files.storage.default_storage
Run Code Online (Sandbox Code Playgroud)
但是当我跑collectstatic或这个命令
manage.py s3_sync_meta django.contrib.staticfiles.storage.staticfiles_storage
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
botocore.exceptions.ParamValidationError: Parameter validation failed:
Invalid bucket name "": Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$"
Run Code Online (Sandbox Code Playgroud)
我已经创建了存储桶,存储桶名称是正确的.因为这可以工作,并没有给出任何错误:
s3.meta.client.head_bucket(Bucket='my-bucket-name')
Run Code Online (Sandbox Code Playgroud)
我不知道我在这里错过了什么?你能帮帮我吗?
好吧,它看起来也让我感到困惑.
以下是我的观察 -
1.桶名模式
Bucket name should not have '/' in them .
It would be good if you can update the AWS_S3_BUCKET_NAME from
"my-bucket-name" to the pattern which actually resembles with your
bucket name.
Source: https://github.com/boto/botocore/issues/680
Run Code Online (Sandbox Code Playgroud)
2.它说,在Django S3存储文档中
If your are updating a project that used django-storages
just for S3 file storage, migration is trivial.
Follow the installation instructions, replacing 'storages' in INSTALLED_APPS.
Be sure to scrutinize the rest of your settings file for changes,
most notably AWS_S3_BUCKET_NAME for AWS_STORAGE_BUCKET_NAME.
Run Code Online (Sandbox Code Playgroud)
您可以尝试在settings.py中更改AWS_S3_BUCKET_NAME_STATIC = bass-line-shop吗?
如果有帮助,请告诉我!