Pinto!

企業のマーケティングを支援する「ピント!」

【エンジニア向け】よく聞くS3ってなに?ただのストレージじゃないの??

Writerライター

藤本 永一

株式会社PLAN-B Juicer事業部

2014年新卒入社。自社DMPの開発を行なうJuicer事業部にて新規機能開発を担当。バックエンドのプログラミングとインフラを担当している。

目次
    1. そもそもS3とは
    2. 基本中の基本「ストレージ機能」
      1. ライフサイクル
      2. バージョニング
      3. ログ記録
      4. 静的Webサイトホスティング
      5. イベント
      6. アクセス権限
      7. 暗号化
    3. AWSサービスのトリガー「イベント機能」
      1. 画像のサムネイルを随時作りたい
      2. 集計結果CSVをデータベースに取り込みたい
    4. Webサーバーにもなる「静的Webサイトホスティング機能」
      1. S3の静的Webホスティングの設定の流れ
    5. お金はどこにかかるの?
    6. まとめ

AWS(Amazon Web Service)といえばEC2、S3あたりをよく聞くのではないでしょうか?

S3は聞いたことあるけど、安いストレージかな?という認識の方が多いように感じます。もちろんストレージ機能は優秀で安く、使いやすいですが、もう一歩踏み込んだ使い方をご紹介します。


そもそもS3とは

S3とは、AWSの中のサービスの1つです。Simple Storage Serviceを略してS3と呼んでいます。

クラウド型のオブジェクトストレージサービス*です。ざっくりと言うと容量が無制限なFTPサーバーのようなイメージです。

1GBあたり0.025ドル(東京リージョン、スタンダードストレージ記事執筆時点の価格)と破格の安さながら、公式に99.999999999%の耐久性を謳っており、安さと高可用性を兼ね備えています。

*オブジェクトストレージとは、オブジェクト(ファイルなど)単位で出し入れが可能なストレージです。各地の物理的なデータセンターに分散して保存されていることで障害に強かったり、オブジェクト単位でのバージョンを残すことが出来たりと、メリットが多いです。

その反面、通常のHDDなどのストレージではファイルに追記ができますが、オブジェクト単位での出し入れしかできませんので、このような場合は出して追記して入れるなどの動作が必要です。

参考:S3公式ページ https://aws.amazon.com/jp/s3/


基本中の基本「ストレージ機能」

S3の最もメジャーな使い方は、ファイルをS3に保存するストレージ機能を使うことです。

ファイルのバックアップであったり、ファイル処理の加工前、もしくは加工後のファイルを保存する、画像ファイルやCSSなどWebで使う静的なファイルをS3に置いて配信するなど、使い方は無限大です。

S3は事前に保存容量を決める必要は無く、入れた分だけ課金されますので、FTPサーバーのようにストレージの空きを気にする必要もありません。 思い立ったらすぐにS3に保存する事ができます。

S3の主要な機能を紹介します。

S3の主な機能


ライフサイクル

オブジェクトごとにライフサイクルを設定することで、一定期間経ったら削除したり、低価格なストレージに移動したりといったことができます。ユースケースとしては、大量のログをS3に保存するが、90日前のものは利用頻度が低いので低価格なストレージに移す、などの設定が可能です。


バージョニング

オブジェクトごとに世代管理してくれます。 同じファイル名で上書きした際に、前のバージョンも残すことができます。誤った操作時にもとに戻すことができるので、バージョニングを有効にしておくと安心です。


ログ記録

オブジェクトに対するログを残すことができます。


静的Webサイトホスティング

S3をWebサーバーのように使い、静的なサイトを公開することができます。


イベント

オブジェクトの操作をトリガーに、様々な処理を行うことができます。


アクセス権限

認証されたユーザーのみ操作を許可するなど、細かくアクセス権限を設定できます。


暗号化

オブジェクトを暗号化しておくことができます。 サーバーサイド、クライアントサイド、それぞれの暗号化に対応しています。


AWSサービスのトリガー「イベント機能」

イベント機能はS3の目玉機能です。各AWSのサービスと連携できる素敵な機能です。 まずは、どのようなことができるのか例を幾つか出してみます。

イベント機能例


画像のサムネイルを随時作りたい

流れ: S3に画像ファイルを置く → AWS Lambdaでサムネイル化 → サムネイルをS3に置く

大量の画像のサムネイルをリアルタイムに作る事ができます。


集計結果CSVをデータベースに取り込みたい

流れ: S3にCSVを置く → AWS Lambdaでデータベースに内容を保存

EMR(Hadoop)の集計結果をデータベースに書き込みたいときなどにS3に結果を出力することで、それをフックにデータベースに書き込むことが可能です。

このように、イベント機能を使うことでただのストレージだけではなく、ファイルの加工などの処理を自動で走らせることが可能です。これまではサーバーを作り、ファイルを監視し、処理を走らせるなど、仕組みづくりから大変でしたが、S3を使うことでさまざまな箇所が楽になります。


Webサーバーにもなる「静的Webサイトホスティング機能」

S3をそのままWebサーバーとして使うことが可能です。静的なサイトならばS3のみで公開することができます。Webサーバーを立てたり、レンタルサーバーを借りたりする必要はありません。 もちろん独自ドメインの設定も可能です。

ホスティング設定の流れ


S3の静的Webホスティングの設定の流れ

1.バケットを作成

  • バケット名(例): www.example.com
  • リージョン: アジアパシフィック (東京)  

2.バケットポリシーの設定

Resourceの部分を作成したバケット名に変更して設定してください。

3.作成したバケットにHTMLを設置

4.アクセスして確認

この例だと、http://www.example.com.s3-ap-northeast1.amazonaws.com/index.html でアクセスできるはずです。

以上で静的WEBサイトを公開することができます。 非常に簡単です。

この例ではドメインがS3のものになっていますが、DNSの設定で今回できたwww.example.com.s3-ap- northeast-1.amazonaws.comをCNAMEに設定することで独自ドメインを当てることも可能です。

SSLが必要な場合は、Amazon CloudFrontとの組み合わせで可能です。


お金はどこにかかるの?

さて、色々機能をご紹介してきましたが、結局お金はいくら掛かるのか気になるところだと思います。 S3の料金体は、基本的に以下のようになってます。

S3の料金 = ストレージに保存している容量 + S3に対するリクエスト(GET、PUTなど)数 + データ転送料金

詳細はS3の料金ページをご覧ください。 

例えば、月間1万PVのサイトをS3で公開するとして見積もってみます。1ページ 300KBとして計算します。ストレージ保存容量は1GB未満なので1GBとします。

PUTリクエストは、更新頻度などによりますが、大目に見て1000回 、getリクエストは1万PVの想定なので、10000回転送量は、300KB×10000回 = 3GB以上を簡易見積りツールに入れてみますと、$0.33/月となります。

実際には画像やCSSなどの読み出しが含まれたりするので一概には言えませんが、非常に安く公開することが可能です。今回作った見積もりのURLを載せておくので参考にしてください。


まとめ

簡単にではありますが、S3の機能を説明してみました。S3を活用すれば色々できそうなイメージをもっていただけたでしょうか?

【S3の特長まとめ】

  • S3は、安くて高い信頼性のあるオブジェクトストレージ
  • S3は、ストレージだけじゃない多機能なサービス

現在のシステムにS3があったらどうなるか一度検討してみると、これまでは考えられなかったことも可能になってくるかもしれません。 一度検討してみてください。

サイト改善の最新事例 サービスページはこちら

関連する記事を読む