アップロードのためのS3互換のオブジェクトストレージプロバイダーを設定する

こんにちは。

少し行き詰まってしまい、混乱しているので、どなたか助けていただけると幸いです。
最初はBitnamiでインストールしましたが、後々問題が多く発生することに気づき、標準インストールで再インストールしました。
バックアップを復元することができ、2.8から2.9ベータに移行したにもかかわらず、すべてうまくいきました。

Google Bucket上のバックアップを再度テストしましたが、問題なく動作しました。

なお、S3の設定はすべてWebインターフェースで行われ、環境変数経由ではありませんでした。

GDPRの理由から、ヨーロッパに新しいバックアップバケット(discourse-backup-euと呼びます)を作成しました。環境変数を変更できるようになり、DISCOURSE_S3_ENDPOINT: https://storage.googleapis.com を設定し、アプリを再構築し、Webインターフェースでバックアップバケット名を変更し、バックアップを再度実行したところ、ヨーロッパの新しいバックアップバケットにバックアップファイルが表示されるのを見て非常に満足しました。

次に、VMのディスク容量を圧迫しないように、アップロードを別のバケットに保存したいと思いました。

新しいバケット(discourse-uploadsと呼びます)を設定し、公開しました。その新しいバケットに対して、サービスアカウントにStorage Legacy Bucket Ownerロールを追加しました。
次に、既存のロードバランサー(https://www.example.comと呼びます)に、こちらの指示に従って、Cloud CDNを有効にしたバックエンドバケットを使用するようにルールを追加しました。ルールは /discourse-uploads/* で、バケット discourse-uploads を指します。

バケットのルートにtest.jpgを入れてCDNをテストしましたが、https://www.example.com/discourse-uploads/test.jpg からアクセスできませんでした。バケット内にdiscourse-uploadsというサブフォルダを作成し、test.jpgを移動したところ、https://www.example.com/discourse-uploads/test.jpg からテスト画像を見ることができるようになりました。

Web UIでは、「s3 upload bucket」(設定時に以前設定する必要があったダミーバケット名)をdiscourse-uploadsに変更し、CDN URLにhttps://www.example.com/discourse-uploads を入力し、「enable s3 uploads」にチェックを入れました。

その後、画像をアップロードしようとすると、ブラウザウィンドウに「無効な引数」というポップアップが表示されました(422エラーと、基本的に同じ内容のJSONコンテンツが表示されました)。

すべての投稿を再ベイクしてみましたが、効果はなく、エラーは発生したままでした。

そこで、Web UIではなく環境変数を使用してみようと思いました。

そして、以下の設定を使用しました。

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: whatever
DISCOURSE_S3_INSTALL_CORS_RULE: false
FORCE_S3_UPLOADS: 1
DISCOURSE_S3_ENDPOINT: https://storage.googleapis.com
DISCOURSE_S3_ACCESS_KEY_ID: MY_KEY_ID
DISCOURSE_S3_SECRET_ACCESS_KEY: MY_ACCESS_KEY
DISCOURSE_S3_CDN_URL: https://www.example.com/discourse-uploads
DISCOURSE_S3_BUCKET: discourse-uploads/discourse-uploads
DISCOURSE_S3_BACKUP_BUCKET: discourse-backup-eu
DISCOURSE_BACKUP_LOCATION: s3

アプリを再構築しました。
その後、アセットがバケットにアップロードされなかったため、Discourseを開くことができなくなりました(404エラーが発生しました)。
https://www.example.com/discourse-uploads/assets/admin-31467dc73634cbfb81799737c43df0e2939307d893ef32713f1d0770bcb3532c.br.js

バケットのサブフォルダに直接アップロードしようとすることは、OPでは(少なくともバックアップバケットについては)うまくいくと示唆されているにもかかわらず、少し無理があると思いました。

環境変数を以下のように変更しました。
DISCOURSE_S3_BUCKET: discourse-uploads
(後でホストルールを調整して、サブフォルダにアップロードする必要をなくせるかもしれないと思いました。)

そして、何かアップロードされるか確認するために再構築しましたが、何もアップロードされず、Discourseは404エラーのため開いたままになりませんでした。

そこで、私の質問は以下の通りです。

  • Web UIと環境変数は競合しますか?
  • アセットはいつバケットにアップロードされる予定ですか?
  • これをデバッグするにはどうすればよいですか?ログにエラーが見つかりません。
  • 設定でバケットのサブフォルダを指定することは可能ですか?
  • これがうまくいったら、以前にアップロードされた画像はバケットに転送されますか?再ベイクした場合、以前にアップロードされた画像のURLはどのようになりますか?

ありがとうございます!

「いいね!」 1