こんにちは
Docker ベースの Discourse 環境を運用しています。以下の AWS 環境変数が設定されています:
env:
AWS_REQUEST_CHECKSUM_CALCULATION: "WHEN_REQUIRED"
AWS_RESPONSE_CHECKSUM_VALIDATION: "WHEN_REQUIRED"
UI から S3 へのアップロードバックアップを実行すると、マルチパートアップロードフェーズで失敗します。
問題は /var/www/discourse/lib/backup_restore/s3_backup_store.rb の以下の行で発生しています:
obj.upload_file(source_path, content_type: content_type)
ログの正確なエラーメッセージは以下の通りです:
[2026-07-11 10:18:38 UTC] /var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/multipart_file_uploader.rb:186:in block (2 levels) in Aws::S3::MultipartFileUploader#upload_in_threads': undefined method downcase' for nil (NoMethodError)
k = "checksum_#{algorithm.downcase}".to_sym
upload_file に checksum_algorithm を明示的に渡すことで、一時的に問題を修正できました。具体的には以下のようにしました:
obj.upload_file(
source_path,
content_type: content_type,
checksum_algorithm: "CRC32"
)
この変更を適用すると、アップロードは正常に動作します。ただし、これはコンテナ内での手動変更であるため、次にコンテナを再構築すると消去されてしまいます。
コアコードベースでこのバグの修正をご検討いただけますでしょうか?
ありがとうございます!