После трёх часов, проведённых в отчаянных попытках заставить конфигурацию AWS S3 работать с Discourse на экземпляре AWS Lightsail, я твёрдо убеждён, что простой и понятный учебник по этой теме был бы очень кстати. Здесь существует бесконечное количество тупиковых путей. Я, конечно, без проблем создал бакет, который может удалённо загружать файлы по предоставленному URL AWS S3, но как только подключается CDN, появляется конечная точка S3 Endpoint (хотя в интерфейсе настроек явно указано, что её можно оставить пустой, при попытке загрузки появляется внутреннее сообщение: «Конечная точка не может быть пустой»), и возникают такие базовые вопросы, как: какой именно уровень разрешений действительно необходим при использовании CDN через Amazon CloudFront?
Это просто слишком много. Я перерыл весь интернет, но не нашёл ничего даже отдалённо похожего, и уж тем более ничего актуального для текущей версии Discourse.
Спасибо за любые подсказки.
Сейчас моя главная проблема — это, по крайней мере с точки зрения Discourse, запрашивающего ID ключа и секретный ключ. У меня в IAM создан пользователь для этих целей, но в информации о бакетах S3 нет ничего, что связывало бы этого пользователя с конкретным бакетом, поэтому я понятия не имею, является ли это причиной сбоя. Честно говоря, я использую LightSail и AWS уже более 8 лет, но эта область S3 оформлена в каком-то стиле UX для разработчиков, намеренно запутывающем, с 50 различными способами выполнения одних и тех же действий. Это совсем не интуитивно.
Привет, Джей. Да, я уже много раз смотрел на это. Поскольку это версия 2020 года, там есть такие настройки, как DISCOURSE_S3_REGION, но в панели администратора подобной настройки нет.
Кроме того… разве я не должен импортировать старые данные после правильной настройки S3 и проверки её работоспособности?
Вот именно о таких вещах я и говорю. Настройки в Discourse предполагают, что пользователь знает AWS, командную строку и Discourse так же хорошо, как разработчик.
Но вы показываете, что не следуете этим инструкциям.
Именно поэтому вам нужно следовать этим инструкциям и не делать это через интерфейс пользователя.
Вот инструкции, которым нужно следовать.
И не упустите момент, когда вы добавляете настройки в YAML-файл для загрузки ресурсов в S3.
Я бы сделал это на тестовом сайте, чтобы не сломать ваш рабочий.
Да. Добавьте настройки S3 в переменные окружения в YAML-файле, пересоберите проект, затем проверьте, что они работают, и только после этого запустите rake-задачу. Они должны быть настроены там, а не в базе данных. Не совсем понятно, почему их не скрыли из интерфейса пользователя.
Спасибо за эти ссылки. В первом опубликованном вами разделе AWS есть ещё одна ссылка (Set up file and image uploads to S3) от 2013 года, поэтому я сразу же натыкаюсь на рекомендацию добавить политику X для бакета (что, похоже, устарело), тогда как AWS CDN через CloudFront уже заменил эту политику собственной. Менять или оставить? Вот о чём я говорю. Ужас!
Дело не столько в настройках «Заполните пропуски» в app.yml или в настройках администратора. Проблема скорее в том, как эти настройки взаимодействуют с созданным bucket или CDN и т. д. Поэтому нужно внести ясность именно в сторону Amazon. Я понимаю, что это не часть Discourse, но это точно помогло бы пользователям Discourse, которые пытаются настроить корректную работу через S3. Надеюсь, я понятно выразился.
Понятно. Я уже давно не настраивал бакет AWS. Этот этап может быть более сложным, но вы не описали, как именно вы это сделали.
Тем не менее, это тоже довольно просто: вы вставляете необходимые данные, а если возникают ошибки, то можете их устранить.
Это единственная проблема, которую вы описали.
Как вы настроили бакет? Какие права доступа вы предоставили пользователю? Сгенерировали ли вы ключи? Какие ошибки вы получили (хотя, казалось бы, вы говорили, что добавили изображение в пост, и это сработало?)