Amazon S3 (Simple Storage Service) のわかりやすいまとめ
目次
こんにちは。
AWSについて勉強しています。
今回はAWSのストレージサービスS3についてまとめてみました。
名前にSimpleが入ってるあたり、シンプル好きの私としてはなんとも魅力に感じてしまいますね〜。
そもそもAWSって何?という方はこちらの記事を御覧ください。
また、AWSのクラウドやサーバーがどういうものか具体的なイメージを知りたい方はこちらへどうぞ。
AWS公式ドキュメントでは概念的な言葉でわかりにくい表現がどうしてもあります。このブログではふわっとした言葉を極力なくして、わかりやすく伝えていこうと思います。
S3って何だ
Simple Storage ServiceというAWSが提供しているストレージサービスです。
ストレージサービスって言うと、DropBoxなどを思い浮かべる方が多いと思いますが、それと同じです。
要は、インターネット上のサーバーを借りて、ファイルを置いておける場所をもらえるサービスです。
クラウドのストレージサービスの主なメリットは、どこからでもアップロードやダウンロードができたり、容量を気にせず使えるというメリットがあります。
パソコンやスマホが一台あれば、あとはいくらでもデータをAWSのサーバーに置いておける、ということですね。
特にAWSのS3はセキュリティが万全であること、使い方によって様々な機能オプションがあること、そして真価は何と行っても他のAWSサービスのバックアップやデータ置き場としての親和性が高いことですね。
逆に、他のAWSサービスと組み合わせて使わないのに、ただのファイル置き場としてあえてS3を選ぶメリットってあるんですかね。っていうくらい組み合わせて使う効果があります。
組み合わせは他のサービスの記事に譲るとして、この記事ではS3単体でどのような使い方や特徴があるかをまとめてみました。
用語:オブジェクトとバケット
S3はオブジェクトをバケットに保存するという構造になっています。
ん?いきなり何言ってんだという感じですが、要はファイルのことをオブジェクト、フォルダのことをバケットと言ってると思って差し支えないです。
オブジェクトの名前のことをキーと呼んだりもしますね。これは後の静的ウェブホスティングの機能で使われます。
S3の特徴:容量無制限
さすがクラウドストレージ、いくらでも突っ込めます。
一応、1ファイルのサイズは5TBまで、という制限があるようです。
でも、普通使っている中で1つのファイルが5TBってまずないですよね。制限は気にせず使えると思います。
S3の特徴:高い耐久性
イレブンナインの耐久性があります。
99.999999999%という9が11個つく確率の耐久性ってことです。
う〜ん、すごそうだけど、よくわかりませんね。
この確率は、データが壊れない確率を表しています。
その確率がどれくらいかというと、「1000万個のファイルがあったら、1万年に1回、そのうちの1個が壊れる」とのこと。
1000年に一度の美少女もびっくりの確率ですね。どうやって検証したんでしょうか。
それはともかく、AWSが何故こんな自信満々な数字を出せているかというと、S3に格納したデータは、3つのデータセンターに複製して置いているとのこと。つまり1個壊れても他のバックアップで復元できるという、自動で破損リスクを分散する仕組みになっているんですね。
S3の特徴:従量課金
S3はYouTubeプレミアムやNetFlixのように毎月いくら、といった料金体系ではなく、使った分だけお支払する形になります。
ここで言う「使った分」とは、
- 置いているオブジェクトのサイズ
- HTTPリクエスト(いわゆるPUT, COPY, POST, LIST, GETみたいなもの)を受けた数
- 他のリージョンへ転送するデータサイズ
です。S3へデータを入れるという操作に対してはお金がかかりません。
固定費を下げられるのは良いのですが、日々の使い方によって、料金を気にしなくてはなりませんね。
参考までに東京リージョンのS3(標準ストレージ)の料金の目安を調べてみました。
オブジェクトを置くだけでかかる料金は、最初の50TBまでは、1GBあたり0.025USDが毎月かかるとのこと。
つまり、100GB置く場合は毎月2.5ドルなので、大体300円弱ですかね。年間3600円。
う〜ん、これが安いか高いかは人によりますね。
さらに、データを取り出すリクエスト(1000回とかそれくらいの規模)やインターネットを通じたデータ転送に対して料金がかかる場合があります。もし普通の個人利用ストレージとして使う場合は、ここはそんなに気にしなくてもよいかもしれません。
この情報は変わる可能性があるので、ぜひAWS公式でチェックしてみてください。
ちなみにAWS登録後1年間は無料枠というのがあり、5GBはタダで使えるようです。まずはこれくらいで使い勝手を確かめてみることができるというのは親切ですね。(忘れて放置するとお金がかかりますが...)
お得なストレージタイプ色々
先程の料金例でご紹介したのは標準ストレージという一般的なタイプのストレージですが、使い方によってお得なストレージタイプを選ぶことができます。タイプによってコストと性能が変わります。
要点だけまとめてみました。
標準
標準のストレージです。
これでもイレブンナインの耐久性や、転送中のデータのSSL通信(要は暗号化通信)と保管中のデータの暗号化がされているという安心設計です。
普段遣いにはじゅうぶんですね。
Intelligent-Tiering
いきなり横文字で複雑な名前ですが、インテリジェントなティアリング、ということで、賢く切り分けてくれます。
何が切り分けられているかというと、使用頻度に応じてデータを置いておく層を変えてるんですね。
これによって頻繁に使うデータは引っ張り出しやすく、使わないデータは取り出しにくい奥の方に置いておく、ということで、使用頻度によって格納場所、つまりコストと性能を自動で変えてくれます。
ユーザのアクセスパターンを解析して自動で分けてくれるようです。ありがたいです。
層は全部で4層あり、頻繁、低頻度、アーカイブ、ディープアーカイブとのこと。深そう。
1ゾーン-IA (Infruent Access)
Infruent Access、つまり低頻度アクセス用。
あまりアクセスしないなら少し安くしておきますねーって場所です。
どれくらいを低頻度かというと、長期保存、バックアップ、災害対策ファイルのデータ置き場として使う想定であれば、これを選ぶのがよいようです。
ちなみに、アクセスのパフォーマンス、つまり速度は標準と変わりません。
じゃあなんで安くできてるのかって理由、気になりますよね。
S3は通常データを3つのAZに冗長保存してくれるのですが、この子は1つのAZにしか保存してくれません。
可用性は、標準ストレージが99.99%に対して、この子は99.5%。
まあ滅多に使わないし最悪AZが災害で破壊されたらなくなってもいいな〜ってデータだったらここに置いておくのが良いですね。
推奨ユースケースは、オンプレミス(つまり会社独自のサーバーにある)データのバックアップや、簡単に再作成できるデータのセカンダリバックアップのコピー(つまりコピーのコピーみたいなデータ)を保存することらしいです。
S3 Glacier
グレイシアとは、イーブイの進化系で氷タイプのあのポケモンと同じ名前ですね。
これはアーカイブ用のストレージです。
アーカイブなので、大事だからとっておかなくちゃいけないけど、ほぼ見ることはないだろうな、というデータです。
取り出す機会がほぼないので、取り出すのに時間がかかるけど安い、という設計になってます。
取り出し時間は、設定によって数分~数時間と選ぶことができます。
それぞれ以下のように名前がついています。
- Standard : 3~5時間
- 大容量取り出し : 5~12時間 (取り出しコストは安い)
- 迅速取り出し : 1~5分 (取り出しコストは高い)
ひとことにアーカイブといっても、いろんなニーズがあって、それらに対応できるようになっているということですね。
ちなみにGlacierにはボールトロックという機能があります。
ボールトとは金庫室という意味です。
Glacierに対する「write once read many」(WORM) などの制御設定のポリシー(誰がいじって良いか)をロックして編集できないようにします。
コンプライアンス(法令遵守)を正しく守ってますよ〜ってことをちゃんと管理することとかが目的の機能ですね。
S3 Glacier Deep Archive
AWS界の最安ストレージ。
これは本当にアクセスしないけど万が一、というデータ置き場です。
取り出しには12時間かかります。
けっこうかかりますね... 頻繁に使うデータだったらイライラを通り越して諦めるレベルです。
データの移動や操作をする手段
3種類あります。
S3だけでなく、基本的にAWSサービスは以下のような3種類の操作方法を提供しています。
-
マネジメントコンソール
マネジメントコンソールというのは、AWSサービスをwebブラウザ上で操作するためのポータルサイトみたいなやつです。よほどの変人でなければアカウントを作って最初にログインする画面だと思います。SafariやChromeといったブラウザからアクセスして、GUI(視覚的にボタンクリックしたり)で使えます。よくパソコンで行う普通のファイル操作と同じ感覚で使えるので、馴染みが良いですね。 -
CLI (コマンドラインインターフェース)
CLIでログインして使うこともできます。要はMacでいうターミナルとか、Windowsでいうコマンドプロンプトとか、マウスではなくキーボード操作オンリーでコマンドをテキスト入力して操作する、ちょっとハッカーっぽい上級者向けなやり方ですね。マウスでファイルを1個1個見ながらポチポチ、という操作よりも、たくさんのファイルを一括でコピーしたり名前を変えたりしたいときにコマンドで実行できるので便利な方法です。 -
SDK (ソフトウェアデベロプメントキット)
これはPythonとかJavaとかプログラミング言語の中で操作する方法を提供している、ということです。たとえばソースコードの上の方にimportなんちゃら、って書いて、そのあとはその言語にあった使い方で操作できるようになってます。これは何かプログラムの処理の途中でS3にデータを格納したり、呼び出したり、ってときに使うケースで便利な方法ですね。
便利な機能:静的ウェブホスティング
格納したオブジェクトはなんと公開設定ボタンをポチーってするだけでwebサイトとして公開できます。
普通のwebサイトのファイル形式はHTML(.html)というものです。なのでバケットに.htmlファイルを作って置いておき、公開設定をすると、どこからでもSafariやChromeといったwebブラウザからページをみることができるのです。
これはDropBoxとかには(多分)ない機能ですよね。
静的webホスティングといいます。
静的って何やねんって感じですが、あるファイルをある名前で置いておいて、それが変わることがない、固定されているような状態ですね。(逆に、アドレスなどが変わるものを動的ページといったりします)
そして、これができるということは、S3のバケット名は世界で1つのオリジナルなものにしておく必要があります。複数あると、どっちにアクセスしていいかわからなくなりますからね。
デフォルトでは公開設定はオフになっているので、安心して使えます。
具体的な設定方法は、アクセスコントロールリスト(ACL)というところから、パブリックアクセスを許可にします。全員許可もできますし、特定のAWSアカウントのユーザに限定して公開もできます。
便利な機能:バージョニング
同じオブジェクトでバージョン管理できます。
間違って上書きしたとき、ホストしたサイトが前どんな画面だったか知りたいとき、とかに安心して使えますね。
こちらもデフォルトでは無効になってます。理由は、前のバージョンからの差分ではなく過去のファイルもまるごと保持するため、料金が膨らむからですね。お金がかかってもバージョンを管理しておきたいときに使いましょう。
マニアックな機能:マルチパートアップロード
1つのオブジェクトを分割して並列アップロードするときに使う機能です。
大容量のものを高速で送りたいときに便利ですね。
とはいえ普通のデータ転送ではなく、5GB(S3の1度の転送できるデータ制限)を超えるバカでかいファイルを送るときに使う機能のようです。なので、CLIやSDKのコマンドで使うみたいですね。
ネットワークの状況によっては途中でアップロードが中断されてしまう、なんてこともあるかもしれませんが、そのようなときもマルチパートアップロードでは最初からやり直し、ではなく、途中から再開することができます。
なので公式としては1つのファイルが100MBクラス以上になる場合は、この機能を使うように推奨されているようですね。
ちなみに、この機能を使うために特別料金がかかるわけではなさそうですが、
「アップロードとそれに関連するパートのために使用されるすべてのストレージ、帯域幅、リクエストに対して課金が行われます。」
とのこと。
詳しくは公式ドキュメントで。
マニアックな機能:Transfer Acceleration(トランスファーアクセラレーション)
これを有効にすると、世界中から頻繁かつ大量なデータをアップロードできるようになります。
どういうことかというと、アップロードする場所から最寄りのエッジロケーションまで一旦データを送り、そこからスループット、つまり通信速度の高いバックボーンネットワークで効率的にリージョンにあるS3までアップロードできるということらしいです。
そんな機能いつ使うんだって話ですね。
たとえば世界中の色々な国に生産工場を展開している会社があったとして、それぞれの工場で管理しているデータを集計して分析するため、データを一箇所に集めておきたい、というケースを想定しているようです。たしかにこのような場合では、インターネット回線より高速にデータを集めることができたら便利そうです。
グローバルに展開している大企業向けの機能ですね。
便利な使いみち:データレイク
ビッグデータの分析を行う場合、大量のデータを置いておきたくなりますね。
特にそのデータにルールと言うか特定の構造がない場合、とりあえず置いとけー的な場所としてS3を使うケースがあります。これをデータ分析の業界用語でデータレイクといいます。レイクとは、Lake(湖)のことですね。
本当に大量のデータ(ペタバイトとか)になると、置いておく場所を確保するだけで大変ですから、無制限容量の従量課金であるS3は割と使いやすいくて手頃な手段なのかもしれません。
ビッグデータ分析はS3と他のAWSサービス(たとえばAthenaやGlue)と組み合わせるとより便利になるようです。このあたりもそれぞれのサービスの記事でわかりやすくまとめる予定です。
便利な使いみち:バックアップ
たとえばデータベースやアプリケーションサーバーのバックアップをとっておきたいとき、機械学習の学習データなど大量のデータをとっておきたいときなども大容量のストレージがあると便利ですよね。
そういったときにもS3が手頃で使いやすく便利です。
このようなケースも、他のAWSのデータベースサービス(たとえばRDS)や機械学習サービス(SageMaker)と連携しやすいようにそれぞれ設定オプションが提供されていたりします。
色々サービスありますが、AWSサービスはAWSサービス同士で組み合わせて使うよう、設計されてるんですね〜
まとめ
というわけで、AWSが誇る安心・安全のクラウドストレージサービス、S3についてまとめてみました。
書き始めてみると、様々な特徴や機能があり、長くなってしまいました。
ユーザー向けに提供した最初のAWSサービスというだけあって、基本的ではありますが、書くことがたくさんありましたね。
ぜひ機能を使いこなして便利に使えるようになりたいものです。
参考記事
日々インフラが進化しているようです。最新情報はこちらで。