Нет доступа к сайту после настройки учетных данных S3

Я не могу получить доступ к сайту после настройки учетных данных S3 для резервного копирования. Я ничего не менял, кроме этого.

Вы можете посмотреть в /var/discourse/shared/log/rails/production.log (или что-то подобное) и увидеть ошибку.

Возможно, вам нужно

cd /var/discourse
./launcher enter app
rails c
# а затем что-то вроде
SiteSetting.backup_location='local'

Но это может быть совпадением: резервные копии S3 не имеют к этому отношения, и у вас просто переполнен диск.

Спасибо. Я пытался, но не смог исправить ошибку. Ниже приведён журнал ошибок.

ActionView::Template::Error (s3_upload_bucket)
/var/www/discourse/lib/file_store/s3_store.rb:153:in `s3_bucket'
Started HEAD "/" for 35.111.111.163 at 2020-03-05 06:34:08 +0000
Processing by ListController#latest as HTML
  Rendering list/list.erb within layouts/application
  Rendered list/list.erb within layouts/application (Duration: 6.1ms | Allocations: 2278)
  Rendered layouts/_head.html.erb (Duration: 0.2ms | Allocations: 102)
  Rendered common/_google_universal_analytics.html.erb (Duration: 0.2ms | Allocations: 79)
  Rendered common/_discourse_stylesheet.html.erb (Duration: 0.4ms | Allocations: 200)
Completed 500 Internal Server Error in 60ms (ActiveRecord: 0.0ms | Allocations: 17538)
ActionView::Template::Error (s3_upload_bucket)
/var/www/discourse/lib/file_store/s3_store.rb:153:in `s3_bucket'

Свободно 5 ГБ места.

Я бы отключил настройки S3 из консоли Rails. Выше я привел пример. Возможно, вам стоит поискать здесь ещё несколько примеров.

Вы не установили параметр s3_upload_bucket.
Просто выполните:

cd /var/discourse
./launcher enter app
rails c
SiteSetting.s3_upload_bucket = 'thenameofyourbucket'

где вы замените последнюю строку, указав фактическое имя вашего S3-бакета.

Спасибо. Это решило проблему. Но почему это произошло? Потому что я хотел использовать S3 только для резервных копий, поэтому не указал ни один бакет для загрузок. Это нормально или это ошибка?

Я могу воспроизвести эту проблему только при включении enable_s3_uploads.

Вот что, по моему мнению, произошло и привело к экрану «Oops»:

  • вы добавили s3 access key id и s3 secret access key;
  • вы настроили s3_upload_bucket;
  • вы включили enable_s3_uploads;
  • вы установили backup_location в значение s3;
  • вам пришлось задать s3_backup_bucket, и вы установили его в тот же бакет;
  • это привело к ошибке: Нельзя использовать один и тот же бакет для ‘s3_upload_bucket’ и ‘s3_backup_bucket’. Выберите другой бакет или укажите другой путь для каждого бакета.;
  • вы очистили s3_upload_bucket, чтобы использовать s3_backup_bucket;
  • вы не отключили enable_s3_uploads.

Ошибка заключается в том, что включение enable_s3_uploads требует наличия s3_upload_bucket, но очистка этого параметра при всё ещё включённых загрузках в S3 приводит к сбою форума.

Что-нибудь можно сделать, чтобы исправить это, @eviltrout?

Уже существует валидация, предотвращающая это:

Однако она не покрывает случай, когда вы очищаете бакет, но оставляете загрузки включёнными.

Этого должно быть достаточно: