Django + AWS: файлы не синхронизируются с S3 - PullRequest
1 голос
/ 15 января 2020

Я унаследовал систему CMS, которая была реализована с использованием Django Suit. Одна из форм предназначена для загрузки файлов на S3, но этого не происходит (загрузка файлов на веб-сервер - EC2, но не на S3).

Что я определил до сих пор:

  1. Экземпляр EC2 имеет полный доступ к S3 (через роль)
  2. Пользователь, настроенный в файле конфигурации Django, имеет полный доступ к S3
  3. . CloudFront настроен для указать на корзину, и она работает, когда файлы доступны через URL. Конфигурация там работает
  4. Предыдущие разработчики использовали для обработки загрузки файлов следующее:

    DEFAULT_FILE_STORAGE = 'fallback_storage.storage.FallbackStorage' FALLBACK_STORAGES = ('django. core.files.storage.FileSystemStorage ',' main.custom_storages.MediaStorage ')

Я изучил эти 3 класса, чтобы убедиться, что мне не хватает конфигурации, но все выглядит хорошо.

Я не знаком с этим способом синхронизации файлов между веб-сервером и S3, поэтому я могу упустить что-то очень очевидное. Есть ли что-то вроде cron jon, которое нужно запускать в фоновом режиме?

Я нашел сообщение в блоге, объясняющее, как использовать Django для загрузки файлов в S3 с помощью FallbackStorage. Этот учебник использует docker. В этом случае docker вообще не используется.

Я потерян в этот момент. Тысячи классов распределены по десяткам python библиотек. Полный анализ кода займет целую вечность.

1 Ответ

0 голосов
/ 15 января 2020

Вам, вероятно, следует взглянуть на класс FallbackStorage, обычно для загрузки файлов на S3 это будет класс хранения с S3BotoStorage с правильным набором AWS_STORAGE_BUCKET, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY.

stored = models.FileField(storage=S3BotoStorage(bucket=AWS_BUCKET), upload_to='blog-uploads')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...