【发布时间】:2021-12-12 00:26:48
【问题描述】:
我正在使用以下配置将静态和媒体文件存储到 S3
USES_S3 = config('USES_S3') == 'True'
if USES_S3:
AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID')
AWS_SECRET_KEY = config('AWS_SECRET_KEY')
AWS_STORAGE_BUCKET_NAME = config('AWS_STORAGE_BUCKET_NAME')
AWS_DEFAULT_ACL = 'public-read'
AWS_S3_REGION_NAME = config('AWS_S3_REGION_NAME')
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.{AWS_S3_REGION_NAME}.amazonaws.com'
AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=94608000'}
STATICFILES_LOCATION = 'static'
STATICFILES_STORAGE = 'custom_storages.StaticStorage'
MEDIAFILES_LOCATION = 'media'
DEFAULT_FILE_STORAGE = 'custom_storages.MediaStorage'
STATICFILES_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/static/'
MEDIAFILES_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/media/'
else:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
但是,当我尝试运行 collectstatic 时,我不断收到以下错误
k_date = self._sign(('AWS4' + key).encode('utf-8'),
TypeError: can only concatenate str (not "NoneType") to str
当您无法连接到 S3 时,似乎会发生此错误。我在做什么错,任何帮助表示赞赏。
【问题讨论】:
-
这一行中'key'的值是多少? 'key' 是否等于 None?
-
@NickODell 我不确定,也不确定如何检查。
-
您是否以某种方式配置了
AWS_SECRET_KEY?我猜现在是None。 -
@AKX 如何配置 AWS 密钥。另外我有一个单独的 eb 密钥,它可以工作,猜想 S3 的密钥不工作。
-
不知道你的
config()函数是什么;我猜它正在获取环境变量,但很难说。无论哪种方式,您都可以像将USES_S3设置为True一样设置它。