S3 認証情報を設定後、サイトへのアクセスができなくなった

S3 認証情報をバックアップ用に設定した後、サイトにアクセスできなくなりました。この設定以外に変更を加えていません。

/var/discourse/shared/log/rails/production.log(またはそれに類するファイル)を確認してエラーを確認してください。

おそらく、以下の手順が必要です。

cd /var/discourse
./launcher enter app
rails c
# そして以下のようなコマンドを実行
SiteSetting.backup_location='local'

ただし、S3 バックアップとは無関係で、ディスク容量がいっぱいになっている可能性もあります。

ありがとうございます。試しましたが、修正できませんでした。エラーログは以下の通りです。

ActionView::Template::Error (s3_upload_bucket)
/var/www/discourse/lib/file_store/s3_store.rb:153:in `s3_bucket'
Started HEAD "/" for 35.111.111.163 at 2020-03-05 06:34:08 +0000
Processing by ListController#latest as HTML
  Rendering list/list.erb within layouts/application
  Rendered list/list.erb within layouts/application (Duration: 6.1ms | Allocations: 2278)
  Rendered layouts/_head.html.erb (Duration: 0.2ms | Allocations: 102)
  Rendered common/_google_universal_analytics.html.erb (Duration: 0.2ms | Allocations: 79)
  Rendered common/_discourse_stylesheet.html.erb (Duration: 0.4ms | Allocations: 200)
Completed 500 Internal Server Error in 60ms (ActiveRecord: 0.0ms | Allocations: 17538)
ActionView::Template::Error (s3_upload_bucket)
/var/www/discourse/lib/file_store/s3_store.rb:153:in `s3_bucket'

5 GBの空き容量があります。

Rails コンソールから S3 設定を無効にしてください。上記に例を示しました。さらに例を探す必要があるかもしれません。

s3_upload_bucket パラメータが設定されていません。
以下の手順を実行してください。

cd /var/discourse
./launcher enter app
rails c
SiteSetting.s3_upload_bucket = 'thenameofyourbucket'

最後の行を、実際の S3 バケット名に変更してください。

ありがとうございます。これで問題が解決しました。しかし、なぜこのようなことが起きたのでしょうか?私はバックアップ用にのみ S3 を使いたかったので、アップロード用のバケットは入力しませんでした。これは正常な動作でしょうか、それともバグでしょうか?

この問題は、enable_s3_uploads を有効にした場合にのみ再現できます。

以下のような手順を踏んだ結果、「Oops」画面が表示されたと考えられます。

  • s3 access key ids3 secret access key を追加した
  • s3_upload_bucket を設定した
  • enable_s3_uploads を有効にした
  • backup_location を S3 に設定した
  • s3_backup_bucket を設定する必要があり、同じバケットに設定した
  • その結果、以下のエラーメッセージが表示された:‘s3_upload_bucket’ と ‘s3_backup_bucket’ に同じバケットを使用することはできません。別のバケットを選択するか、各バケットに対して異なるパスを使用してください。
  • s3_upload_bucket を空にして s3_backup_bucket を使用できるようにした
  • enable_s3_uploads を無効にしなかった

バグの原因は、enable_s3_uploads を有効にするには s3_upload_bucket の設定が必要であるにもかかわらず、S3 アップロードが有効な状態でこの設定を空にすると、フォーラムがクラッシュしてしまうことです。

上記の問題を解決するために何かできることはありますか、@eviltroutさん

これを防ぐためのバリデーションは既に存在します:

ただし、アップロードを有効にしたままバケットを空白にするケースはカバーしていません。

これで問題ないはずです: