データ転送量の課金に要注意!【WordPress EC2 無料利用枠】

Blog-Thumbnail_KUDs-01

はじめに

こんにちは、KUDs です。
現在、AWS EC2 にて WordPress をホストしています。
先日、「データ転送量の無料利用枠超過」についてアラートメールを受信しました。
今回は、WordPress 利用時の転送量最適化について、対策方法を解説します。

AWS からのコスト発生アラート

通常、無料利用枠超過前に、以下のようなアラートメールが AWS から届きます。

Your AWS account xxxxxxxxxxxx has exceeded 85% of the usage limit for one or more AWS Free Tier-eligible services for the month of July.

ProductAWS Free Tier Usage as of 07/09/2023Usage LimitAWS Free Tier Usage Limit
AWSDataTransfer1 GB1 GB1.0 GB for free per month as part of AWS Free Usage Tier (Global-DataTransfer-Regional-Bytes)

To learn more about your AWS Free Tier usage, please access the AWS Billing & Cost Management Dashboard.

You can find more information on AWS Free Tier here.

e-mail subtitled “AWS Free Tier limit alert” from aws.

今回はデータ転送量の超過なので「AWSDataTransfer」です。

要約すると「1 GB の無料利用枠を超過しそうですよ」とのこと。

コストの内容を確認

次に、実際にコストの内容を確認してみましょう。

AWS マネジメントコンソールから [AWS Billing] > [Bills] を選択し、詳細を確認します。

Data Transfer
 Asia Pacific (Tokyo)
  Bandwidth
   - $0.000 per GB - data transfer in per month: 1.024 GB
   - $0.000 per GB - data transfer out under the monthly global free tier: 0.911 GB
   - $0.000 per GB - regional data transfer under the monthly global free tier: 1 GB
   - $0.01 per GB - regional data transfer - in/out/between EC2 AZs or using elastic IPs or ELB: 0.163 GB

ざっくりと整理すると以下です。

  • data transfer in per month: 1.024 GB
    • EC2 等の AWS サービスへのデータ転送量です
    • これ自体は通常無料です
  • data transfer out under the monthly global free tier: 0.911 GB
    • AWS からインターネットへの出力データ転送量です
    • こちらは無料枠 1 GB までで、0.911GB使用しています
  • regional data transfer under the monthly global free tier: 1 GB
    • 同一リージョン内での異なるAZ間のデータ転送量です
    • これも無料枠 1 GB までで、すでに1GB使用しています
  • regional data transfer – in/out/between EC2 AZs or using elastic IPs or ELB: 0.163 GB
    • 同一リージョン内での異なる AZ 間のデータ転送量です
    • 無料枠を超えた部分についての料金です
    • 0.163GB * $0.01 = $0.00163の料金が発生しています

データ転送量削減のための対応

データ転送量の最適化

まずは、データ転送量そのものを最適化することで、費用を削減することができます。

例えば、以下のような対応が挙げられます。

  • 画像や動画の圧縮
  • キャッシュの利用

これらは、WordPress プラグインでも実行可能で比較的簡単に対応可能です。

アベイラビリティーゾーンの最適化

先程、同一リージョン内での異なる AZ 間のデータ転送量が発生していました。
これについては、同じ AZ 内での転送のみに操作を限定すれば費用は発生しません。

しかし、これにはもちろん、アーキテクチャの見直しが必要です。
また、システムの耐障害性や DR 設計に直接影響します。

キャッシュ/CDNの利用

CloudFront のような CDN を使用することで、ユーザーが最も近いエッジロケーションからコンテンツを取得することができます。
これによって、AWS からインターネットへの出力データ転送量を減らせます。

ただし、CloudFront 自体の料金は発生します。
つまり、トータルコストとしてはトラフィック量やユーザのロケーションを考慮する必要があります。

おすすめの対応は?

まず、「データ転送量の最適化」を行いましょう。
WordPress には豊富なプラグインがあります。
比較的簡単に、画像サイズの最適化やキャッシングを自動で実装できます。

次に、「アベイラビリティーゾーンの最適化」を検討しましょう。
そもそも、AZ 複数利用する必要あったの?」と自問し、当初の設計方針を見直すきっかけになります。
とはいえ、マルチ AZ の運用自体は耐障害性が高いです。
課金対策のためだけに、シングル AZ での運用に切り替えることはあまり推奨しません。

最後に、「キャッシュ/CDNの利用」を検討しましょう。
ただし、トラフィック量が少ない場合や、ユーザのロケーションが限定的な場合は、CloudFront のパフォーマンスが最大限に発揮されません。
そのため、これを検討するのはサイトが成長してきた段階で問題ないかと思います。
そもそも、今回の記事は、無料利用枠超過への対策です。
つまり、あなたのビジネスのフェーズは初期段階という想定なので、いったんは考えなくてよいのかなと思います。

さいごに

今回は、AWS でのデータ転送量を削減するための方法をいくつか紹介しました。

実際に、WordPress のプラグイン「TinyPNG – JPEG, PNG & WebP image compression」を使って、画像ファイルの最適化を行いました。

検証では約 70 % のサイズ縮小ができました。

以下の記事に詳細を記載しておりますので、もし興味があればご覧ください。

コメント