AWS SDK gemのバージョンアップと新しいAWS Data Integrity Protectionsのため、再構築できません

もしアプリを再構築したなら、コンテナ内の変更は消えます。おそらくBackblazeのスタッフが、その間に問題を修正したのかもしれません。

「いいね!」 1

S3をコメントアウトして再構築しました。今後はローカルストレージを使用します。

「いいね!」 1

ローカルストレージは正常に機能しています。削除が機能しないだけです。

投稿していただき、AWS SDKをダウングレードしない限り、現在の回避策がないことを確認していただきありがとうございます。golang AWS SDKを使用している別のプロジェクトから、VictoriaMetricsデータベースをバックアップしようとした際に、b2 s3 APIで問題が発生しました。

エンジニアリングチームから、この問題をどのように、またはいつ解決する可能性があるか、あるいはサポートされている回避策の更新を追跡/取得する方法について何か分かっていますか? プロジェクトをフォークして依存関係の変更を伴って再コンパイルするか、アップデートを少し待つべきか判断しようとしています!

ありがとうございます!

以下の手順は、私がAWS Gemsをダウングレードするのに役立ちました:

 # コンテナに入るには:
./launcher enter app
# どうやらGemfile.lockをアンフリーズするために必要:
bundle config set frozen false
# sdk-s3 gemの古いバージョンを設定:
sed -i 's/gem "aws-sdk-s3", require: false/gem "aws-sdk-s3", "1.177.0", require: false/' Gemfile
# Gemfileに合うようにS3 gemをダウングレード:
bundle update aws-sdk-s3
# さらにaws-sdk-core gemもダウングレード:
bundle add aws-sdk-core --version 3.215.

これらの変更を行った後、B2にバックアップを正常に保存できました。これは一時的な回避策だけだと思うので、次のDiscourseのアップデートで失われる可能性があります。そのため、@PatPattersonさんやBackblazeチームがより恒久的な互換性の修正を近いうちに提供できることを期待しています。

「いいね!」 2

これを実行する必要はないことを願っていますが、sed コマンドを app.yml に記述して、再構築時に自動的に実行されるようにすることができます。プラグインがクローンされる場所の下に貼り付けるだけでよいと思います。しかし、私が考えているよりも複雑な可能性があります。

「いいね!」 1

AntiMetaman様

先週S3ストレージでバックアップを機能させようと試行錯誤し、ようやくこのスレッドでバックアップを機能させることができました。正直なところ、どの部分が機能したのかはよくわかりません。

gemのアンインストールとインストールの手順を参考にしましたが、画像をアップロードしようとするとエラーが発生します。エラーログには次のように表示されます。

not entitled /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/aw

サーバー全体を破棄して最初からやり直す前に(正直なところ、この時点で続けたいかどうかもわかりません)、gemのアンインストールとインストールの手順を元に戻して、問題が解決するかどうかを確認する方法をご存知でしょうか?

私たちのインスタンス(Backblazeをバックアップに使用している)の挙動は、通知なしに2月からバックアップが失敗し始めたことです。たまたま今日気づいたのですが、私たちのバックアップを時々確認しています。この状況はかなり深刻な問題と見なせますか?

Backblazeやその他の非AWSプロバイダーに対して回避策が見つかるまで、AWS-SDKをダウングレードすることは可能でしょうか?

しかし、Backblaze を使用しているサイトではこれを行う必要がありました。次のようなテンプレートを /root/aws-revert-template.yml に作成しました。

# This template reverts aws-sdk-s3 to a version that works with backblaze
# このテンプレートは、Backblaze で動作するバージョンに aws-sdk-s3 をロールバックします

params:
  home: /var/www/discourse

hooks:
  after_bundle_exec:
    - exec:
        cd: $home
        cmd:
          - bundle config set frozen false
          - "sed -i 's/gem \\\"aws-sdk-s3\\\", require: false/gem \\\"aws-sdk-s3\\\", \\\"1.177.0\\\", require: false/' Gemfile"
          - bundle update aws-sdk-s3
          - bundle add aws-sdk-core --version 3.215

そして、次のように app.yml に追加しました。

# IMPORTANT: SET A SECRET PASSWORD in Postgres for the Discourse User
# TODO: change SOME_SECRET in this template
# 重要:Discourse ユーザーの Postgres に秘密のパスワードを設定してください
# TODO:このテンプレートの SOME_SECRET を変更してください

templates:
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Uncomment these two lines if you wish to add Lets Encrypt (https)
## Let's Encrypt (https) を追加したい場合は、これらの 2 行をコメント解除してください
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "/root/aws-revert-template.yml"

そして、stable にアップグレードを実行したところ、動作しているようです。

テンプレートの内容を直接 app.yml に追加することもできます。

「いいね!」 3

このページ - S3-Compatible API - で、checksum-* ヘッダーがサポートされていないという記載がなくなったことに気づきました。

@PatPatterson このスレッドにまだいらっしゃるか分かりませんが、公式にサポートが追加されたのでしょうか?

「いいね!」 2

提案した修正なしで、Backblaze B2が機能することを確認していただけますか?

迅速なご対応ありがとうございます。すみません、もっと詳細を追加すべきでした。別のオープンソースパッケージ(Mastodon)では、Backblaze を使用している(そしておそらく他のものも、しかしそこで発生しました)人々のために、この問題を正確に処理するために aws-sdk-core gem を 3.216.0 未満にロックする必要がありました。

しかし、ここ数週間で気づいたことは次のとおりです。

  • Backblaze のサイトのそのページには、これらのヘッダーがサポートされていないとはもう記載されていません。
  • 最近の AWS gem のリリースでは、以前は when_required が完全に尊重されていなかった問題を修正したことが言及されています。

以前の調査で、ほぼ同じ問題のこのスレッドを見ていました。Backblaze がそのサポートを追加した、または gem が問題の回避策を完全に実装するようになった場合、現在安全に gem を更新できるかどうかを理解しようとしていました。

「いいね!」 2

こんにちは。はい、Backblaze B2 は今年の初めにチェックサムヘッダーの公式サポートを追加しました。

「いいね!」 2

素晴らしい!確認ありがとうございます。