pfaffman
(Jay Pfaffman)
2020 年 1 月 28 日午後 4:37
1
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 を使用しているサイトを確認しましたが、バックアップは問題なく動作しています。
gerhard
(Gerhard Schlager)
2020 年 1 月 28 日午後 6:24
2
「/admin/backups」にアクセスした瞬間にエラーが発生しますか?最近、その部分は変更していませんが、beta8からbeta10 の間にaws-s3 gem のバージョンを 1.36.1 から 1.60.1 に更新しました。これで Google バケットがもう動作しない可能性があります。原因は CHANGELOG に見つかるかもしれません。Gem の異なるバージョンでテストして、特定してみてください。
pfaffman
(Jay Pfaffman)
2020 年 1 月 28 日午後 6:32
3
はい。
gerhard:
その部分は最近変更していません。
困ったね。
最悪だ。おそらく知らないだろうが、グーグルのエンジニアに連絡して、他に何か見つかるか探してみる。
どうもありがとう。
pfaffman
(Jay Pfaffman)
2020 年 1 月 28 日午後 7:18
4
つまり、コンテナにログインして 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 へのアップロード自体は機能していますが、バックアップだけは機能していません。
pfaffman
(Jay Pfaffman)
2023 年 12 月 14 日午後 6:39
6
これは解決済みだと思われます。Google は次の URL でサポートされているようです。