S3 の画像帯域幅コストが面倒になってきている

当サイトの S3 画像サービスの帯域幅(転送)コストが上がり続けています。料金は 1GB につき 0.09 ドルで、これがすぐに積み上がってしまいます。私だけがこの問題を抱えているわけではないと思いますか?現在、転送だけで Amazon に月額 70 ドルを支払っており、それは VM のコストよりも高いです。S3 のストレージコストは月額 5 ドルに過ぎず、問題のすべては転送料金にあります。

CDN やキャッシングの設定は行っておらず、S3 画像バケットを使用する Linode VM 上で動作する完全に標準的な Discourse 環境です。画像を大量に扱う大規模サイトではどのような対策を講じているのでしょうか?CDN(コスト削減に役立つと推測します)?Digital Ocean Spaces や Minio の利用?他に何か見落としていることがあるのでしょうか?

「いいね!」 7

Using a CDN for S3 is the right approach. That will drive the transfer costs way down.

If you are in a tight budget, you may be able to use a cloudflare subdomain for that.

「いいね!」 10

Hmm… looking at the bandwidth costs on Fastly and the Amazon CloudFront (and others) they are pretty much the same as the .09/GB I am paying now :frowning:

Cloudflare seems to not charge for bandwidth?? Maybe that is the thing to try then. Is there a post on how to hook up Cloudflare for S3 images CDN on Discourse? I see the s3_cdn_url but can’t find instructions on how to use it (other than I need to rebake once I set it up). Looking at Cloudflare it seems like you need to have your own domain since the DNS needs to be changed… so I would have to make a CNAME something like s3-cloudflare.mydomain.com which would point to my S3 bucket IP, and tell Cloudflare to do it’s thing on that URL, and also set s3_cdn_url to that, and then rebake?

Here is a support page I found at Cloudflare which seems to indicate this might work:

https://support.cloudflare.com/hc/en-us/articles/360013791312-Fetching-object-storage-assets-through-the-Cloudflare-CDN-using-a-Cloudflare-Worker

Anybody doing this?? I am a bit surprised there are not many sites with this issue as it is more than doubling the monthly cost for me at least.

「いいね!」 5

I’m using Cloudflare on my Discourse site and it works fine. You basically route all your traffic through Cloudflare and tell it what to process or cache and that’s it. There are a few things to keep in mind though:

  1. Configure Cloudflare to NOT cache anything (set up exceptions using page rules, see below).
  2. Don’t let Cloudflare touch your Javascript - specifically, turn off Rocket Loader.
  3. I’m not sure about Brotli compression yet, I disabled it.
  4. Set up page rules to cache the avatar and upload directories as below (ignore rule #1, it’s site specific).

Cloudflare is currently caching a little over 3TB of data per month for me and it’s serving large graphics pretty fast.

If you’re more interested in a CDN I can also recommend https://www.belugacdn.com/ (I’m not affiliated with them). I use them on a large WordPress platform and performance is good, at a fraction of the cost of some other CDN platforms I looked at (those might be even more performant, but Beluga meets my needs).

「いいね!」 18

結局、@scottfsmith さんは Amazon CloudFront から移行されたのでしょうか?

私も同様に支出が増加している状況にあります。

CloudFront は私にとって比較的新しいものです。ここ数年は S3 バケットのみを運用していましたが、ここでの推奨に基づき、先月に CloudFront を設定しました。

これによって、S3 のデータ転送コストが CloudFront のデータ転送コストに置き換わっただけで、毎月の請求総額は変わっていません。

データ転送の月額請求額が持続不可能な水準に近づいていると感じています。

「いいね!」 2

同じ状況です。私も最近 CloudFront に移行しましたが、コストは同様のようです。ローカルキャッシングによる何らかの節約があるかと思っていました。つまり、同じ画像が同じ地理的場所から繰り返し読み込まれる場合、帯域幅は少なくなるだろうと。しかし、今のところそうはなっていないようです。

CloudFront の代わりに機能する他の CDN が何かあるはずです。Discourse が行っているのは画像 URL の書き換えだけなので、かなり汎用的な仕組みのようです(少なくともそう見えます)。もしかすると、画像のみには Cloudflare を使えるかもしれません。

「いいね!」 3

私もまさに同じ理解をしていました。

トラフィックの98%以上がイギリス発であり、当然ながらCloudFront経由のS3 egressの98%もイギリス向けです。

今のところ、CDNを導入しても何のメリットも感じていません。もしトラフィックが世界中に広がっていたら、状況は違ったかもしれません。

今後、Cloudflareについて調べてみます(なぜこの2社がこれほど似た名前を名乗っているのか不思議です!)。何かメリットがあるか確認してみます。

ありがとうございます :+1:t2:

「いいね!」 4

何か見つかった場合は、こちらでフォローアップしてください。私も本来は自分で確認するつもりでした。

「いいね!」 2

@Richie さん、@scottfsmith さん、

https://www.stackpath.com/ のように月額 10 ドルで固定費の CDN があります。以前は アップロードにオブジェクトストレージを使用する (S3 とクローン) のテストにすべてこれを使用していました。コミュニティにはこちらの方が適しているかもしれません。

「いいね!」 6

Stackpath CDN は月額20ドルで、1TBまでが上限ですが、多くの月でそれを超えてしまいます。すると、20TBまでの上限で月額200ドルに跳ね上がり、これはAmazonが私に請求している月額100ドル程度よりも高くなってしまいます。

もしかしたら、そのリストの中にもっと良いものがあるかもしれませんね。リストのことを思い出させていただき、ありがとうございます。

「いいね!」 2

Imgur は誰でも無料で利用できますが、これに対応するプラグインはありません。

Tobey Maguire Reaction GIF

「いいね!」 4

そのようなプラグインは何を行うのでしょうか?単にIMGURのプラグインをダウンロードしないだけなのか、それとも現在のシステムと同様に、おそらく存在する何らかのAPIインターフェースを介してすべての画像をIMGURにアップロードするのでしょうか?

あなたにとってそれはどれだけの価値がありますか?CDCKのビジネスモデルにとって理にかなったものではないと思います。彼らの有料ホスティングがDiscourseを私たち全員にとって可能にしているものであり、IMGURプラグインがなくても彼らのホスティングは問題なく機能しています。

「いいね!」 6

この設定は2022年でも問題なく動作するか、どなたか確認していただけますか? :slight_smile:

「いいね!」 1

Cloudflareのセットアップはまだ使用しています。

「いいね!」 2

ご確認ありがとうございます。

お使いの設定はフルページキャッシュではありませんよね?

それとも、Cloudflare CDN を他のものより使用する特別なメリットはありますか?

「いいね!」 1

いいえ、アップロードとアバターのディレクトリのみをキャッシュしています。上記のルールを参照してください。それ以外のことを試すと、Discourseが壊れる可能性があります。

無料だからです :slight_smile:

「いいね!」 4

JSやCSSのような静的アセットについてはどうですか?

こちらのガイド を使用してCDNを利用する場合、アップロードやアバター(私の認識が正しければ)とともに静的アセットも配信されます。

では、なぜCloudflare経由で全ての静的アセットを配信するとDiscourseが壊れるのでしょうか?

「いいね!」 1

思い出せません、もう何年も前のことです。試してみて、結果を報告してくれませんか?

「いいね!」 1

このスレッドが再びアクティブになったので、フォローアップします。Amazon CloudFront が大幅に値下げしたようです。何をしたのか全く分かりませんが、私の平均的な AWS コストは月額約 80 ドルから 15 ドルに下がりました。これは、S3 と CloudFront の両方で、大量の画像があるサイトの画像(のみ)に使用しています。

「いいね!」 2

Cloudflareは問題ありません。Rocket Loader機能を無効にするだけです。

設定の手間なしに、サーバーへの帯域幅を半分節約できます。

数年前はCloudflareがDiscourseとうまく連携していなかったかもしれませんが、今日ではそうではありません。それについての疑念が継続して見られるのは残念です。もし特定の問題がある場合は、ここでサポートスレッドを開始し、何が機能していないかを説明してください。

「いいね!」 5