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

**URL:** https://meta.discourse.org/t/configure-an-s3-compatible-object-storage-provider-for-uploads/148916
**Category:** Self-Hosting
**Tags:** cdn, configuring, how-to, reference
**Created:** [2020 年 4 月 22 日午後 10:37 UTC](https://meta.discourse.org/t/configure-an-s3-compatible-object-storage-provider-for-uploads/148916 "2020-04-22T22:37:37Z")
**Posts on this page:** 1
**Showing post:** 339

<div class="post-metadata">

### Author: ![Jerome\_Hordies](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jerome_hordies/32/267141_2.png) [@Jerome\_Hordies](https://meta.discourse.org/u/Jerome_Hordies)
#### Post date: [2022 年 8 月 25 日午前 11:37 UTC](https://meta.discourse.org/t/configure-an-s3-compatible-object-storage-provider-for-uploads/148916/339 "2022-08-25T11:37:21Z")

</div>

こんにちは。

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

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

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

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

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

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

バケットのルートにtest.jpgを入れてCDNをテストしましたが、[https://www.example.com/discourse-uploads/test.jpg](https://www.example.com/discourse-uploads/test.jpg) からアクセスできませんでした。バケット内にdiscourse-uploadsというサブフォルダを作成し、test.jpgを移動したところ、[https://www.example.com/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](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](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](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](https://www.example.com/discourse-uploads/assets/admin-31467dc73634cbfb81799737c43df0e2939307d893ef32713f1d0770bcb3532c.br.js)

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

> [@Falco](#):
>
> ` DISCOURSE_S3_BACKUP_BUCKET: falcoland-files/backups`

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

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

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

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

ありがとうございます！

---

_[View the full topic](https://meta.discourse.org/t/configure-an-s3-compatible-object-storage-provider-for-uploads/148916)._
