コスパの良いS3へのバックアップについて

0

毎日15,000個、計5Tバイト程のデータをS3にアーカイブしたいと考えています あくまで万が一に備えたバックアップで、復元する事は年に1度あるかないかです 最もコストパフォーマンスのよい設定は何でしょうか?

aws s3 cp $SOURCE_DIR s3://$S3_BUCKET/$BACKUP_DIR --storage-class DEEP_ARCHIVE --recursive

今は毎日上書きしているだけですが、それ自体にも課金はされるようで、悩んでいます

質問済み 1ヶ月前36ビュー
3回答
0
承認された回答

コストパフォーマンスの良いS3バックアップ戦略について、以下の提案をさせていただきます:

  1. S3 Glacier Deep Archiveの利用: 年に1度程度しか復元しない長期保存データには、S3 Glacier Deep Archiveが最適です。これは最も低コストなS3ストレージクラスで、めったにアクセスされないデータの長期保存に適しています。

  2. ライフサイクルポリシーの活用: 毎日上書きするのではなく、ライフサイクルポリシーを設定して古いバージョンを自動的に削除または低コストのストレージクラスに移行することをお勧めします。例えば:

  • 最新の2週間分のバックアップはS3 Standardに保存
  • その後3ヶ月分はS3 Standard-IAに移行
  • さらに古いデータはS3 Glacier Deep Archiveに移行
  • 5年経過したデータは自動削除
  1. S3 Intelligent-Tieringの検討: アクセスパターンが予測不可能な場合、S3 Intelligent-Tieringの使用を検討してください。これにより、アクセス頻度に応じて自動的に最適なストレージクラスにデータが移動され、コスト最適化が図れます。

  2. バージョニングの活用: 上書きではなくバージョニングを有効にし、必要に応じて古いバージョンを低コストのストレージクラスに移行または削除することで、より柔軟な管理が可能になります。

  3. S3 Storage Lensの利用: 定期的にS3 Storage Lensを使用して、ストレージの使用状況を分析し、最適化の機会を見つけることをお勧めします。

これらの戦略を組み合わせることで、バックアップの信頼性を維持しつつ、コストを大幅に削減できる可能性があります。具体的な設定は、データの重要性やアクセス頻度に応じて調整することをお勧めします。
Sources
Amazon S3 - AWS Prescriptive Guidance
Save on storage costs using Amazon S3
Analyze access patterns and use the most cost-effective Amazon S3 storage class | AWS Storage Blog
Using Amazon S3 Storage Lens to optimize your storage costs - Amazon Simple Storage Service

profile picture
回答済み 1ヶ月前
0

S3の料金のうち、検討すべきものはストレージ、リクエスト、転送の3項目かと思います。うち以下の二項目は、すでに最小限の料金ではないかと思います。

  • ストレージ … 既に保管容量あたりのコストが小さいS3 Glacier Deep Archiveが使用されている。残る検討事項としては、もし不要になるバックアップデータがあるなら、それを削除(ライフサイクルポリシー等を使って自動的に)するぐらいだと思います。
  • 転送 … インターネット→S3への転送であれば、料金は発生しない。バックアップ(送信)元がAWSの場合や、経路がVPNなどの場合は、転送量を最小にすることを検討してください。

aws s3 cp $SOURCE_DIR s3://$S3_BUCKET/$BACKUP_DIR --storage-class DEEP_ARCHIVE --recursive
今は毎日上書きしているだけですが、それ自体にも課金はされるようで、悩んでいます

上記からすると、毎日15,000回の上書き(PUT)リクエストが発生していそうです。またもし転送量が発生する場合、計5Tバイト程に対する転送量も発生しそうです。変更されていないファイルがある場合、変更されたファイルだけを転送対象にすることで、リクエスト回数や転送データ量を減らせそうです。これには、オブジェクトをコピーする aws s3 cp の代わりに、同期する aws s3 sync を使うのが容易だと思います。

syncコマンドでは、同期対象の判別をタイムスタンプとファイルサイズで行う、ファイルサイズだけで行う、タイムスタンプの扱いを完全一致飲みにするなどのオプションがあります。詳細はドキュメントをご覧ください。

回答済み 22日前
  • ありがとうございます! 試してみようと思います!

0

圧縮して一つのファイルにしてからS3にアップロードするのはいかがでしょうか?(5TBなので圧縮してもかなりのサイズになると思うので、ファイルをいくつかに分割して圧縮後にアップロードでもよいと思います)
S3は保存されている容量とAPIの実行回数 (今回の場合だとファイルごとにputobjectが実行されているはずです) で料金が発生するので、ファイルを一つにまとめて圧縮することで少しでも料金を安くすることができると思います。
https://aws.amazon.com/jp/s3/pricing/
https://tech.gunosy.io/entry/s3_costcut#%E4%BB%95%E7%B5%84%E3%81%BF

profile picture
エキスパート
回答済み 1ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ