Невозможно пересобрать из-за обновления gem AWS SDK и новых средств защиты целостности данных AWS

Привет, кто-нибудь может помочь?

I, [2025-02-24T17:35:41.516926 #1]  INFO -- : Завершение асинхронных процессов
I, [2025-02-24T17:35:41.516987 #1]  INFO -- : Отправка INT для HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main pid: 38
105:signal-handler (1740418541) Получен SIGTERM, планирование завершения работы...
I, [2025-02-24T17:35:41.517067 #1]  INFO -- : Отправка TERM для exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 105
2025-02-24 17:35:41.517 UTC [38] LOG:  получен запрос на быстрое завершение работы
2025-02-24 17:35:41.518 UTC [38] LOG:  отмена всех активных транзакций
2025-02-24 17:35:41.521 UTC [38] LOG:  фоновый процесс "logical replication launcher" (PID 52) завершился с кодом выхода 1
105:M 24 Feb 2025 17:35:41.523 # Пользователь запросил завершение работы...
105:M 24 Feb 2025 17:35:41.523 * Сохранение финального RDB-снимка перед выходом.
2025-02-24 17:35:41.525 UTC [47] LOG:  завершение работы
2025-02-24 17:35:41.538 UTC [47] LOG:  начало контрольной точки: завершение работы немедленно
2025-02-24 17:35:41.550 UTC [47] LOG:  контрольная точка завершена: записано 0 буферов (0.0%); добавлено 0 WAL-файлов, удалено 0, переработано 0; запись=0.005 с, синхронизация=0.001 с, общее время=0.025 с; файлы синхронизации=0, максимальное время=0.000 с, среднее=0.000 с; расстояние=0 КБ, оценка=1122 КБ
2025-02-24 17:35:41.581 UTC [38] LOG:  система баз данных завершена
105:M 24 Feb 2025 17:35:41.657 * База данных сохранена на диск
105:M 24 Feb 2025 17:35:41.657 # Redis теперь готов к выходу, пока...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets завершилась с ошибкой, код возврата #<Process::Status: pid 2845 exit 1>
Место ошибки: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
Выполнение завершилось ошибкой с параметрами {"cd"=>"$home", "cmd"=>["sudo -E -u discourse bundle exec rake s3:upload_assets", "sudo -E -u discourse bundle exec rake s3:expire_missing_assets"]}
Загрузка не удалась с кодом выхода 1
** НЕ УДАЛОСЬ ЗАГРУЗИТЬСЯ ** пожалуйста, прокрутите вверх и поищите более ранние сообщения об ошибках, их может быть несколько.
./discourse-doctor может помочь диагностировать проблему.
c08b2ad74e9f1171f7677979af4e41a46be92877a0783350b2f020359895a431

Фактическая ошибка произошла гораздо раньше. Вам стоит её найти.

I, [2025-02-24T18:17:21.167441 #1]  INFO -- : > cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets
rake aborted!
Aws::S3::Errors::InvalidArgument: Unsupported header 'x-amz-checksum-crc32' received for this API call. (Aws::S3::Errors::InvalidArgument)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/dualstack.rb:21:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/accelerate.rb:43:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/checksum_algorithm.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/invocation_id.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/request_callback.rb:89:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/response_target.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `block in call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/telemetry/no_op.rb:29:in `in_span'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:53:in `span_wrapper'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/request.rb:72:in `send_request'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/client.rb:17315:in `put_object'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/object.rb:2994:in `block in put'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/user_agent.rb:69:in `metric'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/object.rb:2993:in `put'
/var/www/discourse/lib/s3_helper.rb:82:in `upload'
/var/www/discourse/lib/tasks/s3.rake:41:in `block in upload'
/var/www/discourse/lib/tasks/s3.rake:41:in `open'
/var/www/discourse/lib/tasks/s3.rake:41:in `upload'
/var/www/discourse/lib/tasks/s3.rake:197:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/s3.rake:197:in `each'
/var/www/discourse/lib/tasks/s3.rake:197:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => s3:upload_assets
(See full trace by running task with --trace)
I, [2025-02-24T18:17:32.242989 #1]  INFO -- : Installing CORS rules...
skipping
Skipping: assets/break_string-cc617154cd957804f2f6a1f3bc68258c9cdca3d4b9a322bf777d145fed04790e.js
Skipping: assets/break_string-cc617154cd957804f2f6a1f3bc68258c9cdca3d4b9a322bf777d145fed04790e.br.js
Skipping: assets/break_string-cc617154cd957804f2f6a1f3bc68258c9cdca3d4b9a322bf777d145fed04790e.gz.js
Skipping: assets/break_string-cc617154cd957804f2f6a1f3bc68258c9cdca3d4b9a322bf777d145fed04790e.js.map
Skipping: assets/service-worker-9312562dd27728d5fd952130f6bb72f4fd253fec8ef551a6e7c3c8ecd9b256da.js
Skipping: assets/service-worker-9312562dd27728d5fd952130f6bb72f4fd253fec8ef551a6e7c3c8ecd9b256da.br.js
Skipping: assets/service-worker-9312562dd27728d5fd952130f6bb72f4fd253fec8ef551a6e7c3c8ecd9b256da.gz.js
Skipping: assets/service-worker-9312562dd27728d5fd952130f6bb72f4fd253fec8ef551a6e7c3c8ecd9b256da.js.map
Skipping: assets/locales/i18n-3b40e842fd72b9bcc74ea83e094c823cd9ca535e4ecc5e78722e6f99d3656137.js
Skipping: assets/locales/i18n-3b40e842fd72b9bcc74ea83e094c823cd9ca535e4ecc5e78722e6f99d3656137.br.js
Skipping: assets/locales/i18n-3b40e842fd72b9bcc74ea83e094c823cd9ca535e4ecc5e78722e6f99d3656137.gz.js
Skipping: assets/scripts/discourse-test-listen-boot-c65930f97c9935680e942f8e32df616cc91ab7c9371b86db6e5ddf9ad868ae22.js
Skipping: assets/scripts/discourse-test-listen-boot-c65930f97c9935680e942f8e32df616cc91ab7c9371b86db6e5ddf9ad868ae22.br.js
Skipping: assets/scripts/discourse-test-listen-boot-c65930f97c9935680e942f8e32df616cc91ab7c9371b86db6e5ddf9ad868ae22.gz.js
Uploading: assets/locales/ar-a9eaeaec3fdb08b678d93b1eb6bd3dc9331b5e2f441daff74cbd5eea246f1176.js

I, [2025-02-24T18:17:32.244254 #1]  INFO -- : Terminating async processes
I, [2025-02-24T18:17:32.244314 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main pid: 38
105:signal-handler (1740421052) Received SIGTERM scheduling shutdown...
I, [2025-02-24T18:17:32.244356 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 105
2025-02-24 18:17:32.244 UTC [38] LOG:  received fast shutdown request
2025-02-24 18:17:32.312 UTC [38] LOG:  aborting any active transactions
2025-02-24 18:17:32.316 UTC [38] LOG:  background worker "logical replication launcher" (PID 52) exited with exit code 1
105:M 24 Feb 2025 18:17:32.317 # User requested shutdown...
105:M 24 Feb 2025 18:17:32.317 * Saving the final RDB snapshot before exiting.
2025-02-24 18:17:32.317 UTC [47] LOG:  shutting down
2025-02-24 18:17:32.319 UTC [47] LOG:  checkpoint starting: shutdown immediate
2025-02-24 18:17:32.349 UTC [47] LOG:  checkpoint complete: wrote 25 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.023 s, sync=0.002 s, total=0.033 s; sync files=16, longest=0.001 s, average=0.001 s; distance=77 kB, estimate=915 kB
2025-02-24 18:17:32.382 UTC [38] LOG:  database system is shut down
105:M 24 Feb 2025 18:17:32.479 * DB saved on disk
105:M 24 Feb 2025 18:17:32.479 # Redis is now ready to exit, bye bye...

Не могли бы вы, пожалуйста, подсказать, как провести диагностику этой проблемы?

Не знаю, но ваши настройки AWS, по крайней мере, выглядят как-то сломанными.

@Falco, похоже, что новейшая версия Discourse больше не поддерживает BackBlaze

Я нашел этот твит, не уверен, что он напрямую связан: https://x.com/jkostolansky/status/1880623631145030054

Да, я думаю, что проблема именно в этом.
Aws::S3::Errors::InvalidArgument: Unsupported header 'x-amz-checksum-crc32' received for this API call. (Aws::S3::Errors::InvalidArgument)

Есть ли способ вручную понизить версию gem aws-sdk-s3?

Вероятно, проблема в настройках S3? Неверные ключи? Истек срок действия кредитной карты?

Вы настраивали S3 уже какое-то время?

До обновления до последней версии никаких проблем не было.

Я проверил B2 и не достиг никаких лимитов.

b2 не поддерживает x-amz-checksum-crc32. Я думаю, это и есть причина.

Попробуйте добавить в ENV

AWS_REQUEST_CHECKSUM_CALCULATION: WHEN_REQUIRED
AWS_RESPONSE_CHECKSUM_VALIDATION: WHEN_REQUIRED

Здравствуйте, у меня по-прежнему возникает ошибка

env:
  DISCOURSE_ENABLE_CORS: true
  AWS_REQUEST_CHECKSUM_CALCULATION: WHEN_REQUIRED
  AWS_RESPONSE_CHECKSUM_VALIDATION: WHEN_REQUIRED
  
  DISCOURSE_USE_S3: true
rake aborted!
Aws::S3::Errors::InvalidArgument: Unsupported header 'x-amz-checksum-crc32' received for this API call. (Aws::S3::Errors::InvalidArgument)
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:expire_missing_assets failed with return #<Process::Status: pid 2900 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "cmd"=>["sudo -E -u discourse bundle exec rake s3:upload_assets", "sudo -E -u discourse bundle exec rake s3:expire_missing_assets"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

Сообщается, что AWS SDK не учитывает эти переменные окружения для операций DELETE, поэтому пока вам нужно удалить

- sudo -E -u discourse bundle exec rake s3:expire_missing_assets

эту строку.

Значит, кто-то должен обновить раздел b2 в статье Настройка провайдера объектного хранилища, совместимого с S3, для загрузки файлов?

После подтверждения, что это работает? Определенно.

Кроме того, это затронет большинство провайдеров, поэтому большинству клонов потребуются корректировки.

Спасибо, я попробую во время технического обслуживания.

Выполнение команды
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
может вызвать какие-либо побочные эффекты?

Да, ресурсы больше не будут удаляться из бакета.

Так что если я не буду удалять активы вручную, то теоретически он будет расширяться бесконечно?

Да, именно так всё и произойдёт.

Похоже, это не критическая проблема, но есть ли способ её исправить? В предыдущей версии всё работало нормально, верно?