【问题标题】:[Django]Cant run collectstatic to upload media to S3[Django]无法运行 collectstatic 将媒体上传到 S3
【发布时间】: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 一样设置它。

标签: django amazon-s3


【解决方案1】:

我今天也遇到了同样的问题。

settings.py 看起来不错,但应用仍然没有连接到 S3 并返回 None 而不是密钥。

根据我在类似主题中发现的信息,django-storage 可以使用的区域列表和 AWS 中可用的区域列表存在一些不匹配。 无论我从应用程序和 AWS 进行什么设置/权限,我都在使用 eu-central-1 (Frankfurt) 并反复出现相同的 NoneType 错误。所以,我决定在 us-west-2(俄勒冈州)创建新的存储桶。和奇迹 - 它的作品。写入和读取静态文件。然后我换回 eu-central-1 存储桶进行仔细检查(使用与 us-west-2 相同的设置)并...再次出现 NoneType 错误。

结论:django-storage + 一些 AWS 区域有问题。

尝试从您现在使用的区域切换到另一个区域。

【讨论】:

    猜你喜欢
    • 2019-07-01
    • 2016-02-21
    • 2021-11-03
    • 2020-04-21
    • 2012-10-24
    • 2021-04-26
    • 2015-08-30
    • 2012-10-05
    • 2014-04-15
    相关资源
    最近更新 更多