DEVELOPER’s BLOG
技術ブログ
Amazon S3のコストを60%以上削減!データストレージと転送最適化の4つの方法

1.背景
AWSを使用する多くの企業にとって、Amazon S3(Simple Storage Service)は最も利用されるストレージサービスの一つです。S3は、スケーラブルで信頼性が高く、データを安全に保存できるため非常に人気があります。しかし、使い方によってはストレージコストが膨らみ、毎月の予算を圧迫する原因にもなります。私たちAUCでは、SRE活動の一環としてAWSのコスト適正化を進めており、特にAmazon S3のコスト削減に焦点を当てました。
私たちがAmazon S3のコストを削減する上で直面した課題は、以下の点に集約されました。
- データストレージが急激に増加し、不要なデータが放置されている。
- データのライフサイクルポリシーが適切に設定されていないため、古いデータが自動削除されていない。
- ストレージクラスを見直していないため、アクセス頻度の低いデータが高コストのストレージクラスに残っている。
- データ転送の方法が最適化されていないため、予想外の転送料金が発生している。
これらの課題に対処するため、S3のコスト削減を図るための原因調査と最適化を実施しました。
この記事では、Amazon S3のコスト削減に向けた原因調査から解決策までのプロセスを具体的に記録します。
2.原因調査
まず、S3コストの内訳を確認するために、AWS Cost Explorerを活用してコスト分析を行いました。Amazon S3のコストは主に以下の2つの要素に分かれます。
- データストレージ料金:保存されているデータ量に応じて発生するコスト。
- データ転送料金:データをインターネットまたは他のAWSサービスへ転送する際に発生するコスト。
私たちの調査結果では、コストが急激に増加している主な原因は、ストレージクラスの選択ミスとデータライフサイクルの適切な管理が行われていなかったことにありました。また、転送コストが予想以上に高くなっていることも確認されました。以下、詳細な分析を進めました。
2-1.不要なデータの放置
長期間アクセスされていないデータが大量にS3バケットに保存されており、これがストレージコストを大幅に押し上げていました。具体的には、あるプロジェクトで使用されていたログデータやバックアップファイルが自動削除されることなく数年間にわたって保存され続けていたのです。
2-2.ストレージクラスの最適化不足
Amazon S3には、アクセス頻度に応じた複数のストレージクラスがあります。アクセス頻度が高いデータは「S3標準(Standard)」に保存されるべきですが、長期間アクセスされないアーカイブデータやバックアップデータに関しては「S3 Infrequent Access」や「S3 Glacier」などの低コストのクラスに移行すべきです。しかし、これが実施されていないために、全データがS3標準クラスに保存され、高いコストが発生していました。
2-3.データ転送の最適化不足
私たちの分析によると、EC2インスタンスからS3へのデータ転送が、VPCエンドポイントを使用せずに行われており、結果としてインターネット経由でデータが転送されていました。この設定ミスにより、不要なデータ転送料金が発生していました。
3.解決策
私たちは、以下のアプローチでS3のコスト削減を実現しました。
3-1.データライフサイクルポリシーの設定
まず、Amazon S3のデータライフサイクルポリシーを設定しました。これにより、特定期間が過ぎたデータを自動的にアーカイブする、あるいは削除することで、不要なデータが永続的に保存されないようにしました。例えば、アクセスされなくなってから90日を経過したデータは「S3 Glacier」に移動し、1年間アクセスがなかったデータは自動削除するように設定しました。
- S3 Lifecycle Rules:特定のオブジェクトを指定期間後に低コストのストレージクラスに移行する、または削除するポリシーを適用。
これにより、アーカイブデータや古いバックアップデータが適切に管理され、ストレージコストを削減することができました。
3-2.ストレージクラスの見直し
次に、すべてのS3バケットに保存されているデータのアクセス頻度を分析し、ストレージクラスの見直しを行いました。アクセス頻度の低いデータは、「S3 Infrequent Access」または「S3 Glacier」に移行することで、ストレージ料金を大幅に削減しました。
- S3 Standard:頻繁にアクセスされるデータ。
- S3 Infrequent Access:アクセス頻度が低いが必要なデータ。
- S3 Glacier:アーカイブデータ。
また、今後は新しいデータが自動的に適切なストレージクラスに保存されるように設定を行い、運用管理の負担を軽減しました。
3-3.VPCエンドポイントの導入
私たちは、EC2インスタンスとS3間のデータ転送を最適化するために、VPCエンドポイントを導入しました。VPCエンドポイントを利用することで、インターネットを介さずにVPC内部で直接データ転送を行うことができ、データ転送料金を大幅に削減することができました。
- VPCエンドポイント(Gatewayタイプ):S3との通信をインターネットを介さずに行うことで、データ転送料金を削減。
VPCエンドポイントの利用により、データ転送料金を最大で80%削減することに成功しました。
3-4.S3インテリジェントティアリングの利用
さらに、S3インテリジェントティアリングという機能を活用しました。これにより、アクセスパターンに基づいて自動的にストレージクラスを最適化し、手動での移行作業を減らしました。インテリジェントティアリングは、データのアクセス頻度が減少した際に自動的に低コストのストレージクラスに移行してくれるため、長期間にわたってストレージコストの削減に寄与します。
4.結果
これらの最適化施策により下記の成果を得られました。
4-1.データライフサイクルポリシーの設定によるコスト削減
前提条件
- 東京リージョン
- 保存されているデータ量:10TB(10,240GB)
- データのアクセス頻度は低く、90日後にほとんどアクセスされなくなる
アプローチ
- 90日後に「S3 Standard」から「S3 Glacier」にデータを移行
- 年間データを保持後、削除。
コスト計算
- S3 Standard: 0.023USD/GB/月
→10,240GB × 0.023USD × 3か月 = 706.56USD
- S3 Glacier Flexible Retrieval: 0.0045USD/GB/月
→10,240GB × 0.0045USD × 9か月 = 414.72USD
合計: 706.56USD + 414.72USD = 1,121.28USD/年
削減前のコスト
もし全データが「S3 Standard」に保存されていた場合 : 10,240GB × 0.023USD × 12か月 = 2,826.24USD/年
削減効果
1,121.28USD/年 vs 2,826.24USD/年 → 約1,705USDの削減(約60%の削減)
4-2.ストレージクラスの見直しによるコスト削減
前提条件
- 東京リージョン
- 10TBのデータのうち、頻繁にアクセスされるデータは40%(4TB)、残り60%(6TB)は低頻度
アプローチ
- 頻繁にアクセスされるデータ(4TB)を「S3 Standard」に保持
- 低頻度のデータ(6TB)を「S3 Infrequent Access」に移行
コスト計算
- S3 Standard: 0.023USD/GB/月
→4,096GB × 0.023USD × 12か月 = 1,130.496USD/年
- S3 Standard Infrequent Access: 0.0138USD/GB/月
→6,144GB × 0.0138USD × 12か月 = 1,017.4464USD/年
合計: 1,130.496USD + 1,017.4464USD = 2,147.9424USD/年
削減前のコスト
すべて「S3 Standard」に保存されていた場合 : 10,240GB × 0.023USD × 12か月 = 2,826.24USD/年
削減効果
2,147.9424USD/年 vs 2,826.24USD/年 → 約678USDの削減(約24%の削減)
4-3.VPCエンドポイントの導入によるデータ転送料金の削減
前提条件
- 東京リージョン
- 毎月、10TBのデータをEC2からS3に転送
- 現在は、インターネット (NAT Gateway) 経由で転送しているため、データ転送料金、およびNAT Gateway配置料金が発生している
アプローチ
- VPCエンドポイント(Gatewayタイプ)を導入し、インターネット (NAT Gateway) 経由の転送を排除
コスト計算
VPCエンドポイントデータ転送料金 : 0USD
VPCエンドポイント利用料金 : 0USD
削減前のコスト
- NAT Gatewayデータ転送料金:0.062USD/GB/月
→ 10,240GB × 0.062USD × 12か月 = 7,618.56USD/年
- NAT Gateway配置料金:0.062USD/時
→ 0.062USD × 8760h = 543.12USD/年
合計: 7,618.56USD + 543.12USD = 8161.68USD/年
削減効果
0USD/年 vs 8161.68USD/年 → 8,162USDの削減(100%の削減)
4-4.S3インテリジェントティアリングの利用によるコスト削減
前提条件
- 東京リージョン
- 保存データ:10TB(10,240GB)
- オブジェクト : 1,000件
- データアクセスパターン:最初の3か月は頻繁にアクセスされるが、それ以降はほとんどアクセスされない
アプローチ
- 「S3 Standard」ではなく「S3 Intelligent Tiering」を使用
- アクセスパターンに基づいて自動的に低コストのストレージクラスに移行
コスト計算
- S3 Intelligent Tiering:最初の3か月は「S3 Standard」相当、以降は低頻度アクセスストレージに移行
- 最初の3か月
Frequent Access Tier : 0.025USD/GB/月 → 10,240GB × 0.025USD × 3か月 = 768USD
- 残りの9か月
Infrequent Access Tier : 0.0138USD/GB/月 → 10,240GB × 0.0138USD × 9か月 = 1,271.808USD
- オブジェクト1,000件あたりのモニタリング・オートメーション料金 : 0.0025USD/月
0.0025USD × 12か月 = 0.03USD/年
合計: 768USD + 1,271.808USD + 0.03USD = 2,039.838USD/年
削減前のコスト
もし全データが「S3 Standard」に保存されていた場合 : 10,240GB × 0.023USD × 12か月 = 2,826.24USD/年
削減効果
2,039.838USD/年 vs 2,826.24USD/年 → 約786USDの削減(約28%の削減)
4-5.総合的なコスト削減効果
これらのアプローチを総合的に適用することで、S3のコストを大幅に削減することが可能です。
- データライフサイクルポリシーによる削減: 約1,705USD/年
- ストレージクラスの見直しによる削減: 約678USD/年
- VPCエンドポイントの導入による削減: 約8,162USD/年
- S3インテリジェントティアリングによる削減: 約786USD/年
これにより、合計で年間 約11,331USD の削減が見込めます。特に、データ転送コストの削減が大きなインパクトを与えていますが、データストレージの最適化も重要なポイントです。
今後の課題としては、さらなるデータの最適化と、各部門でのコスト意識の向上が挙げられます。AWSのベストプラクティスに従ったコスト管理を継続し、今後も新たなコスト削減の方法を模索していきます。
X(旧Twitter)・Facebookで定期的に情報発信しています!
Follow @acceluniverse