S3(AWSではない)がランダムに機能しなくなった、おそらくアップデート以降

バケットセットを使用していますが、デフォルトを使用しようとしているようです。

軽量なMinIOの代替としてGarageHQを使用しています。

3.6.0.beta1-devを使用しています。
( ed6beea336 )

[2025-09-14 10:40:34] tmp ‘/var/www/discourse/tmp/backups/default/2025-09-14-104012’ ディレクトリを削除中…
[2025-09-14 10:40:34] アーカイブをアップロード中…
[2025-09-14 10:40:35] 例外: バケットが見つかりません: default

[2025-09-14 10:40:35] /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.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.227.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.227.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.227.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.227.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.227.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.227.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.227.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.227.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.227.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.227.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.227.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.227.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.227.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:3710:in `create_multipart_upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/multipart_file_uploader.rb:67:in `initiate_upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/multipart_file_uploader.rb:58:in `upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/file_uploader.rb:42:in `block in upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/user_agent.rb:90:in `metric'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/file_uploader.rb:40:in `upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/customizations/object.rb:477:in `block in upload_file'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/user_agent.rb:90:in `metric'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/customizations/object.rb:476:in `upload_file'
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:48:in `upload_file'
/var/www/discourse/lib/backup_restore/backuper.rb:351:in `upload_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:41:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:9:in `backup'
/var/www/discourse/script/spawn_backup_restore.rb:31:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'

昨日のバックアップは成功しましたが、今はもう動作していません。他のサービスはローカルS3へのバックアップを問題なく実行できています。

これを修正する方法を知っている人はいますか?

はい。AWSが多くの他のサービスでS3ライブラリを壊しました。

Can't rebuild due to AWS SDK gem bump and new AWS Data Integrity Protections には、いくつかの回避策があります。

古いバージョンに戻すために aws-revert-template.yml を作成しました。まだ機能するかどうかはわかりません。私のファイルは 2025-08-06T05:00:00Z の日付です。

うーん、それが問題だとは確信が持てません

私の勘違いでなければ、私は2日以上3.6にいましたが、それでも2日前と10日前にバックアップがありました。

それ以上ではありません。あなたの記憶違いだと思います。

あなたが現在使用しているコミットはこちらです:

また:

あなたのバケット名は「default」ですか?

はい、今コミットしています。この問題を投稿した当初はしていませんでした。バグを排除するために更新しました。

いいえ、OPで述べたように、これが私が同じ問題ではないと信じている理由です。バケットは指定されています。バックアップセクションのUI設定とYAMLの環境変数で試しましたが、それでもデフォルトを使用しようとします。

明確にするために、DiscourseまたはGarage側では、動作が停止してから変更されたことは、3.5へのアップデートと3.6へのアップデート以外には何もありません。

「いいね!」 1

実際のS3を持つ誰かが、バケットを正しく選択しているか確認できますか?Backblaze、R2などの他のサードパーティについても同様ですか?

「Default」という名前のバケットを作成し、意図したとおりに機能したので、指定したバケット名を正しく認識していません。

実際には、何千人もの人々やCDCKホスティングも影響を受ける可能性が高いですが、そうではありません。app.ymlの行に文字を削除または追加した可能性の方がはるかに高いです。

以下のようなことができます。

grep -i S3 /var/discourse/containers/*
docker exec -it app bash -c 'grep s3 /var/www/discourse/config/discourse.conf

そして、ENV変数ではなく設定でs3を構成した場合、アップロード用のS3互換オブジェクトストレージプロバイダーを構成するを見て、それらがどのようになっているかを確認できます。

セットアップに問題はありません。Discourseのアップデート以外は何も変更していません。YAMLでの設定もUIでの設定も試しましたが、UIの設定では「cyanlabs-community」と表示されているにもかかわらず、バックアップは「default」に保存しようとします。

UIでS3を設定しているにもかかわらず、discourse.confファイルには、あなたの2番目のコマンドに従ってもS3への参照が含まれていません。

しかし、これはバケットが存在しないことを意味します。新しいバケットと認証情報を作成して、そこでアップロードが機能するかどうか試していただけますか?

「いいね!」 1

ありがとうございます。しかし、ここでは堂々巡りのように感じます。

会話の開始時にはバケットのデフォルトが存在しませんでした。その後作成し、設定でバケット cyanlabs-community を設定しているにもかかわらず、そのバケットを使用しています。

cyanlabs-communitydefault の両方が s3 インスタンスに存在しますが、Discourse は私が何を試しても cyanlabs-community を使用しません。

新しいバケット cyanlabsdiscourse

バックアップの結果

[2025-09-22 15:14:59] バックアップを最終処理中...
[2025-09-22 15:14:59] データベースダンプファイル「cyanlabs-official-community-2025-09-22-151437-v20250916082012.sql.gz」を最終処理中...
[2025-09-22 15:14:59] 一時ファイル '/var/www/discourse/tmp/backups/default/2025-09-22-151437' ディレクトリを削除中...
[2025-09-22 15:14:59] アーカイブをアップロード中...
[2025-09-22 15:15:37] バックアップの after_create_hook を実行中...
[2025-09-22 15:15:37] 古いバックアップを削除中...
[2025-09-22 15:15:37] クリーンアップ中...
[2025-09-22 15:15:37] アーカイブをローカルストレージから削除中...
[2025-09-22 15:15:37] '.tar' の残骸を削除中...
[2025-09-22 15:15:37] バックアップ完了をマーク中...
[2025-09-22 15:15:37] ディスク統計情報を更新中...
[2025-09-22 15:15:37] バックアップ終了を 'CyanLabs' に通知中...
[2025-09-22 15:15:40] 完了!

cyanlabsdiscourse バケット

default バケット

興味深いのは、bucketname.s3.domain.tld、例えば cyanlabsdiscourse.s3.domain.tld で接続を試みていることです。DNS レコードを追加しないと、このサブサブドメインでは機能しないはずです。したがって、URL の設定は尊重されていますが、バケットの選択では無視されているようです。

もうすべてを試したような気がします。とりあえず、デフォルトのバケットを使用します。

AWSは不可解なことがありますね!ご希望のバケット名が機能しなかったとのこと、残念です。再現できないと、お手伝いするのは難しいので、バケット名としてデフォルトを使用することに甘んじるしかないでしょう。