Google Bucketのバックアップで問題が発生

Google バケットへのバックアップとアップロードが正常に動作していたサイトにおいて、バックアップページに以下のエラーが表示されるようになりました。

Failed to access backup storage: A header or query you provided requested a function that is not implemented.

最初はバケットの権限設定の問題かと思ったのですが(同じ設定が数週間前まで正常に動作していたため、あまり理にかなっていません)、メッセージを再読すると、Discourse が何らかの「実装されていない」処理を試みているようにも聞こえます(これも極端な推測ですが)。

別の Google バケットへの S3 アップロードは問題なく動作しています。本番環境では 2.4.0.beta9、ステージング環境では 2.4.0.beta10 が動作しており、ステージング環境ではさらにアップグレードを施しました。

標準的な 2 コンテナ構成で、標準プラグインのみを使用し、S3 設定は .yml ファイル内の env: で指定しています。編集:yml から ENV 設定を削除して再構築しましたが(destroy/start では設定が削除されませんでした)、問題は解決しませんでした。

原因となりそうな明らかなコミットは見当たりません。

編集:同じ設定で動作している 2.4.0.beta8 の標準インストールインスタンスが他にもあり、そちらは正常に動作しています。したがって、beta8 と beta9 の間で何かが起きたようです。これは明らかにバグのようです。@gerhard さん、これはあなたのバックアップ関連の変更と関係があるのでしょうか?

追伸:DigitalOcean Spaces を使用しているサイトを確認しましたが、バックアップは問題なく動作しています。

「いいね!」 2

「/admin/backups」にアクセスした瞬間にエラーが発生しますか?最近、その部分は変更していませんが、beta8からbeta10 の間にaws-s3 gem のバージョンを 1.36.1 から 1.60.1 に更新しました。これで Google バケットがもう動作しない可能性があります。原因は CHANGELOG に見つかるかもしれません。Gem の異なるバージョンでテストして、特定してみてください。

「いいね!」 3

はい。

困ったね。

最悪だ。おそらく知らないだろうが、グーグルのエンジニアに連絡して、他に何か見つかるか探してみる。

どうもありがとう。

「いいね!」 3

つまり、コンテナにログインして Gemfile を編集し、

gem 'aws-sdk-s3', require: false

gem 'aws-sdk-s3', '1.51.0', require: false

に変更してから、

bundle install --no-deployment
sv restart unicorn

を実行して動作確認を行いました。バージョンを二分探索した結果、1.51.0 が動作する最後のバージョンであることがわかりました。したがって、1.52.0 で導入された「Feature - Adding support in SelectObjectContent for scanning a portion of an object specified by a scan range.」という機能に問題の根源があるようです。

次にどうすべきか確信が持てません。GitHub - aws/aws-sdk-ruby: The official AWS SDK for Ruby · GitHub に Issue を立てようと思いますが、彼らが関心を持ってくれるかどうかわかりませんよね?もしかしたら Google にチケットを出すべきでしょうか?

なお、Discourse は Google Buckets へのアップロード自体は機能していますが、バックアップだけは機能していません。

「いいね!」 5

これは解決済みだと思われます。Google は次の URL でサポートされているようです。

このトピックは、最後の返信から30日後に自動的にクローズされました。新しい返信は許可されていません。