Несколько заметок из моего опыта по настройке этого (не до конца завершённой):
Я совершил ошибку, поместив все переменные конфигурации в панель администратора Discourse, из-за чего migrate_to_s3 не работал, пока я также не добавил эти переменные в свой app.yml.
Сначала я не понял, что эта настройка также предназначена для обслуживания статических файлов из R2, поэтому мне пришлось выполнить rake s3:upload_assets, как это сделал joshhabka.
Из-за этого я также добавил следующее в свой app.yml, чтобы обеспечить повторную загрузку ресурсов при пересборке:
hooks:
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
Также я столкнулся с ошибкой You can only specify one checksum at a time. Как отмечалось, она была исправлена добавлением:
AWS_REQUEST_CHECKSUM_CALCULATION: "when_required"
AWS_RESPONSE_CHECKSUM_VALIDATION: "when_required"
Затем я столкнулся с той же ошибкой 1 of x uploads are not migrated, которую упомянул joshhabka.
Migrating uploads to S3 for 'default'...
Uploading files to S3...
- Listing local files
=> 79 files
- Listing S3 files
. => 81 files
- Syncing files to S3
...............................................................................
Updating the URLs in the database...
Removing old optimized images...
Flagging all posts containing lightboxes for rebake...
18 posts were flagged for a rebake
rake aborted!
FileStore::ToS3MigrationError: 1 of 88 uploads are not migrated to S3. S3 migration failed for db 'default'. (FileStore::ToS3MigrationError)
/var/www/discourse/lib/file_store/to_s3_migration.rb:132:in 'FileStore::ToS3Migration#raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:73:in 'FileStore::ToS3Migration#migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:385:in 'FileStore::ToS3Migration#migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:59:in 'FileStore::ToS3Migration#migrate'
/var/www/discourse/lib/tasks/uploads.rake:126:in 'Object#migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:106:in 'block in Object#migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in 'RailsMultisite::ConnectionManagement::NullInstance#with_connection'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:36:in 'RailsMultisite::ConnectionManagement::NullInstance#each_connection'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:17:in 'RailsMultisite::ConnectionManagement.each_connection'
/var/www/discourse/lib/tasks/uploads.rake:104:in 'Object#migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:100:in 'block in <main>'
/usr/local/bin/bundle:25:in 'Kernel#load'
/usr/local/bin/bundle:25:in '<main>'
Tasks: TOP => uploads:migrate_to_s3
(See full trace by running task with --trace)
Я пока не нашёл способа решить эту проблему самостоятельно. Кажется, что всё работает до момента отметки постов для пересборки, а затем происходит сбой. При этом контент, похоже, был успешно перенесён. Интересно, как мне определить, какой именно контент не был загружен корректно.