S3 и Cloudfront — настройка не работает

Всем привет!

Я следовал этому руководству, чтобы настроить S3.

Единственный параметр, который я не смог найти, — это «убедитесь, что флажок Программный доступ установлен».

Я не нашёл ни одного такого параметра.

Но S3 не работает.

Примечание: CDN работает через CloudFront (S3 является источником для CloudFront).

Спасибо.

Запускаемая вами задача rake настаивает на том, чтобы указанные значения находились в переменных окружения; она не будет использовать значения из настроек сайта.

Спасибо за ответ.

Я использовал rake, думая, что URL-адреса изображений будут заменены на ссылки CDN.

Но сама настройка S3 не работает.

Не упустил ли я что-то в конфигурации S3?

Да, для выполнения задачи rake по миграции на S3 необходимо установить переменные окружения.

Я не понимаю. Надеюсь, вы проверили мои настройки Discourse.

Нужны ли какие-либо дополнительные шаги помимо этого руководства? Set up file and image uploads to S3

Я считаю, что вы можете получить обзор необходимых переменных окружения здесь:
Configure an S3 compatible object storage provider for uploads

РЕДАКТИРОВАНИЕ: В контексте команды rake см. ответ ниже :point_down:

или из ошибки:

Они должны быть заданы в окружении, а не в настройках сайта.

Вы можете передать их при запуске задачи rake, например:

DISCOURSE_S3_BUCKET=foo DISCOURSE_S3_REGION=us-east-1 DISCOURSE_S3_USE_IAM_PROFILE=true rake uploads:migrate_to_s3

О, хорошо!

Значит, я добавлю это в app.yml

Пример:

DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: us-west-1
  DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
  DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
  DISCOURSE_S3_CDN_URL: https://falcoland-files-cdn.falco.dev
  DISCOURSE_S3_BUCKET: falcoland-files
  DISCOURSE_S3_BACKUP_BUCKET: falcoland-files/backups
  DISCOURSE_BACKUP_LOCATION: s3

Пожалуйста, прочитайте ответ Майкла!

Так как моя установка свежая!

Мое единственное беспокойство касается новых изображений. Я выполнил Rake, как было предложено в статье.

Я думал, что достаточно просто добавить настройки S3 через административную панель Discourse, чтобы новые изображения обслуживались из S3!

См. Настройка провайдера объектного хранилища, совместимого с S3, для загрузки файлов

Да, так как у меня настроены S3 и Cloudfront, я добавил код для S3 следующим образом.

Сейчас пересобираю. Надеюсь, S3 заработает!

Не сработало! Мне кажется, не хватает чего-то, связанного с правами доступа к S3!

Есть какие-нибудь предложения?

Здесь три вопроса:

  • Может ли Discourse читать/записывать и т.д. в бакет?
  • Могут ли анонимные пользователи читать из бакета?
  • Может ли CDN читать из бакета?

Похоже, не работает второй пункт?

Пожалуйста, проверьте мою конфигурацию и дайте знать, если я что-то упустил: S3 и CDN CloudFront

Основано на этом руководстве

Создано два бакета:

Один для CDN (также включена ACL)
Один для резервных копий
Создана политика с добавлением двух бакетов, привязана к пользователю IAM и сгенерированы ключи доступа.

Создано два распределения CloudFront:

  1. cdn.mysite.com (источник — бакет CDN) с настройкой CNAME.

  2. assets.mysite.com (источник — mysite.com) (Сообщество находится на основном домене, а не на поддомене) с настройкой CNAME.

Основано на этом руководстве:

Добавлен код AWS S3 и конфигурация в файл app.yml следующим образом:

Спасибо.

Большое спасибо @pfaffman

За подсказку по использованию www в адресе хоста. Мой форум использовал версию без www!

Я переключился на версию с www и пересобрал его!

Теперь всё работает отлично, включая CDN и активы!

Спасибо.

Не совсем понимаю, как это помогло, но рад, что вы всё решили!

Как я объяснял здесь, после этого действия сайт перестал быть доступным. Поэтому я не смог увидеть результат. Однако, когда я попробовал ту же настройку на тестовом поддомене, всё работало исправно. Следовательно, я подозреваю, что проблема связана с SSL.

Исходя из вашего указания на www, я изменил адрес хоста, и проблема немедленно решилась.

Также я подозреваю, что сайт мог стать недоступным из-за недавнего сбоя в работе Cloudflare.

В любом случае, всё исправилось.

Спасибо!