【図で理解】AWS S3とはストレージです!【一瞬でもハテナが浮かんだ人向け】

「S3ってなんとなくわかるけど、詳しくしらない…」
S3について教えてほしいわん!
おっけ~S3について解説するよん

●もくじ
1. S3とは?
2. S3の特徴
3. S3の種類
4. まとめ
ポートフォリオを作成の際に「画像アップロード機能のあるSNSをつくろう」と思っている人はかなりの確率でS3を使うと思うので、S3についてしっかり頭に入れておいてくださいね。
では、いってみましょう~♪
1.S3とは?

ユーザーがデータを無制限かつ安全にデータ保存できるオブジェクトストレージサービス
まずは、「オブジェクト」と「ストレージ」に分けて説明していきます。
データファイル(オブジェクト)を保管しておくための場所
オブジェクト
ストレージに保存するデータファイルのこと(画像ファイル、音声ファイルとか)
ストレージはスマホやパソコンを使っているとよく聞く言葉だと思います。
「ストレージ容量がない…アプリ消さなきゃ…写真も消さなきゃ」って悩むこと多いですよね…
ストレージはアプリ・写真・音声などのさまざまなデータを保存できる場所です。
さらにアプリ・写真・音声ファイルのことをオブジェクトといいます。
オブジェクトは保存するモノですね。
ただ、疑問に思うことは「同じデータを保存するのであればストレージとデータベースって何がちがうの?」ってことです。
データファイル(オブジェクト)を保管しておくための場所
→画像ファイル、音声ファイル
データベース
特定のデータを整理し情報のまとまりとして保存しておく場所
→個人情報:名前、住所、電話番号、生年月日など
両者は保存するデータと保管の仕方が異なります。
ストレージはファイルを保存するだけなのでイメージしやすいかと思います。
データベースはエクセルをイメージするといいですね。こんな感じ↓

このようにデータベースはあるデータを規則的に保存していくことができます。
ストレージとデータベースは保存するデータや保管の仕方が違うことを覚えてこう!

S3はオブジェクトストレージサービス
オブジェクトとはストレージに保存するデータファイルのこと(画像ファイル、音声ファイルとか)
ストレージとはデータファイルを保管しておくための場所
データベースとは特定のデータを整理し情報のまとまりとして保存しておく場所
2. S3の特徴

バケットに無制限のオブジェクトを保存できる
高耐久性である
バージョニング機能によって間違って削除しても戻せる
データを暗号化でき、安全に保存できる
バケットに対してアクセス制限をかける
まず「バケット」についてお話します。
オブジェクトをまとめて保管しておくための場所
S3とバケットとオブジェクトの関係は以下のようになっています。

S3というサービスの中に、複数のバケットが存在し、バケット内に複数のオブジェクトが存在します。
バケットの理解ができたところでS3の特徴に戻ります。
「バケットに無制限に保存できる」というのはそのまんまですね。
例えばアイフォンとかって「ストレージ容量がいっぱいです」てきなことを言ってきます。
S3では容量がいっぱいになることはなく、無制限にオブジェクトデータを貯めることができちゃうのですごいですね。
「高耐久性である」というのはS3に保存したデータは同一リージョン内の3カ所へ自動的にコピーされます。そのため、アベイラビリティゾーンで障害が起きた場合でもデータを失うことがありません。
「バージョニング機能によって間違って削除しても戻せる」というのは、複数のチームメンバーで作業している場合、消してはいけないデータを誤削除した場合の対処方法となります。
「データを暗号化でき、安全に保存できる」というのは、保存したデータを暗号化することでデータを保護することが出来ます。
例えば、データをアップする際に悪いやつがデータを抜き取ったとしても暗号化されているので、情報を守ることができます。
「バケットに対してアクセス制限をかける」というのも暗号化のようなセキュリティ関連で、バケットに対してアクセス制御をすることでバケット内のすべてのオブジェクトへアクセスさせないようにすることが可能です。
例えば、悪いやつがあなたのオブジェクトを勝手にダウンロードして使ってしまうような場合の対処できます。
ここではバケットポリシーという決まり事を設定することで「アクセス許可する人やIPアドレス」を制限することができます。

S3は機能がたくさんあって便利だわん!
そうだね!他にもまだまだ機能はたくさんあるよ!気になった人はAWS Black Beltというオンラインセミナーをみてねん!

S3は無制限にデータを保存できる
保存したデータが失われない
間違って削除しても対処できる
セキュリティを向上できるので安心
3. S3の種類

S3にはいくつか種類があります。
S3 Standard
アクセスパターンが読めない場合
S3 Intelligent Tiering
低頻度でアクセスするデータを保存する場合
S3 Standard-IA
S3 One Zone-IA
長期保存する場合(アーカイブを残す)
S3 Glacier
普通に使う場合はS3 Standardを選択すればOKです。
なのでポートフォリオ作成にはS3 Standardを使えばいいかなと思います。1年間の無料枠も適用されるので。
突然アクセス数が増えるような、アクセスの予測不可能な場合にはS3 Intelligent Tieringを使います。結構使われているサービス展開をしていて初めて使うか検討するくらいのタイプですね。
S3 Standard-IAとS3 One Zone-IAは低頻度アクセスのデータを保存する場合に使いますが、二つの違いは「大事なデータを保存するかしないか」です。
S3 Standard-IAは低頻度で大事なデータ(マスターデータとかって言われるやつ)を保存する場合に使います。
S3 One Zone-IAは低頻度であまり大切でないデータ(ログデータ)とかを保存する場合に使います。
長期保存する場合(アーカイブを残す)はS3 Glacierを使用しますが、オブジェクトを取り出す時に早くても数分、遅いと数十時間とかかってしまいます。そのため頻繁に扱うデータを保存してはいけません。

S3って色んなタイプものが目的に合わせて用意されてるわんね~!
通常利用のS3 Standard
予測不可能な場合のS3 Intelligent Tiering
低頻度アクセスのS3 Standard-IA・S3 One Zone-IA
S3 Standard-IA:大事なデータ
S3 One Zone-IA:大事じゃないデータ
長期保存のS3 Glacier(取り出しは遅い)
4. まとめ
今日はAWS S3の説明をしてきました。
S3はたくさんの機能を兼ね備えオブジェクトストレージサービスサービスです。
必要に応じて用意された機能を使用していくことで、多様なシーンに対応していくことが出来ます。
全部を理解するのは難しくても、「どんな目的で使われるのか」くらいを頭に入れておけばOKです。あとは、調べればいいだけなので。
プログラミングは暗記ゲーではないので、うっすら覚えておいて必要なら調べて使うくらいに思っていると学習するのも気が楽になりますよ!
無駄のない努力で楽しいエンジニアライフを♪
ではまた~