前の記事では、 Amazon EC2の基本を学びました。
Amazon EC2を利用すると、 AWS上に仮想サーバーを作成できます。
では、画像・動画・バックアップファイル・ログなどの 大量のデータを保存したい場合はどうすればよいでしょうか。
保存するにはどうすればいい?
そこで登場するAWSの代表的なストレージサービスが、 Amazon S3です。
Amazon S3の基本的な仕組みを理解し、 バケット・オブジェクト・キー・ストレージクラス・ バージョニング・アクセス制御 などの基本用語を説明できるようになることを目指します。
Amazon S3とは?
Amazon S3(Simple Storage Service)は、 AWSが提供するオブジェクトストレージサービスです。
画像・動画・ドキュメント・バックアップ・ログなど、 さまざまなデータをオブジェクトとして保存できます。
Webサイトなどの画像
システムデータの保存
アクセスログなど
さまざまなファイル
オブジェクトストレージとは?
Amazon S3を理解するうえで重要なのが、 オブジェクトストレージという考え方です。
前の記事で学んだAmazon EBSは、 EC2に接続してディスクのように利用する ブロックストレージでした。
一方、S3ではデータを オブジェクトという単位で保存します。
EC2などから
ディスクとして利用
データをオブジェクト
として保存
S3は、EC2へ接続して通常のディスクとして使う EBSとは仕組みが異なります。 「S3=大容量のハードディスク」と考えるのではなく、 オブジェクトを保存するサービス と理解しましょう。
S3の「バケット・オブジェクト・キー」を理解する
Amazon S3では、 主に次の3つの用語を理解することが重要です。
オブジェクトを保存する入れ物
S3に保存されるデータ
オブジェクトを識別する名前
バケットとは?
バケット(Bucket)は、 S3でオブジェクトを保存するための入れ物です。
S3へデータを保存するときは、 まずバケットを作成し、 その中へオブジェクトをアップロードします。
オブジェクトとは?
S3に保存されるデータを オブジェクト(Object)と呼びます。
たとえば、画像ファイルをS3へアップロードすると、 そのデータはS3上で1つのオブジェクトとして扱われます。
S3のオブジェクトは、 データ本体だけでなく メタデータなどの情報も持っています。
キーとは?
キー(Key)は、 バケット内のオブジェクトを識別するための名前です。
たとえば、
images/network.png
というキーを持つオブジェクトを保存できます。
Object → 保存されるデータ
Key → オブジェクトを識別する名前
S3に本当の「フォルダ」はない
S3の管理画面を見ると、 通常のファイルシステムと同じように フォルダが存在しているように見えます。
しかし、S3は通常のファイルシステムとは異なり、 オブジェクトをキーによって管理しています。
たとえば、
images/network.png
というキーの
images/
部分を利用することで、
管理画面上ではフォルダのように表示できます。
S3は高い耐久性を持つストレージ
Amazon S3の大きな特徴の1つが、 非常に高いデータ耐久性です。
Amazon S3 Standardなどは、 99.999999999%(イレブンナイン)の データ耐久性を実現するよう設計されています。
S3 Standardなどでは、 データを1台のサーバーだけに保存するのではなく、 複数のアベイラビリティゾーンにまたがって冗長化 することで高い耐久性を実現しています。
すべてのS3ストレージクラスが 複数AZにデータを保存するわけではありません。 たとえばS3 One Zone-IAは、 1つのAZにデータを保存するストレージクラスです。
S3のストレージクラスとは?
保存するデータによって、 「頻繁にアクセスするデータ」と 「ほとんどアクセスしないデータ」があります。
S3では、 データの利用頻度や保存目的に応じて ストレージクラスを選択できます。
頻繁にアクセスするデータ
アクセスパターンが読めないデータ
アクセス頻度が低いデータ
再作成可能な低頻度データなど
長期保管・アーカイブ
たとえば、 Webサイトで頻繁に読み込むデータならS3 Standard、 長期間ほとんどアクセスしないバックアップなどであれば Glacier系のストレージクラスを検討できます。
S3バージョニングとは?
S3バージョニングを有効にすると、 同じキーのオブジェクトを更新したときに、 複数のバージョンを保持できます。
誤ってファイルを上書きした場合などでも、 以前のバージョンを残しておくことで 復元しやすくなります。
S3に保存するデータを暗号化する
S3では、 保存されるデータを 暗号化して保護できます。
S3では現在、 新しくアップロードされるオブジェクトは サーバー側で自動的に暗号化されます。
また、要件に応じて AWS KMSのキーを利用した SSE-KMSなどを利用することもできます。
S3へのアクセスをどのように制御する?
S3へ重要なデータを保存する場合、 「誰でもアクセスできる状態」では問題があります。
S3では、 IAMポリシーやバケットポリシーなどを利用して アクセスを制御できます。
IAMユーザーやロールなどに 権限を設定
S3バケット側に 権限を設定
IAMポリシーとバケットポリシーの違いを 最初から細かく覚える必要はありません。
まずは、 「S3のデータへ誰がアクセスできるかを ポリシーによって制御する」 と理解しておきましょう。
Block Public Accessとは?
S3では、 設定ミスによってバケットやオブジェクトが 意図せずインターネットへ公開されることを 防ぐことが重要です。
そのための重要な仕組みが S3 Block Public Accessです。
S3バケットを公開する場合は、 本当にインターネットからのアクセスが 必要なのかを確認しましょう。
EC2とS3はどのように使い分ける?
前の記事で学んだEC2と、 今回のS3を整理してみましょう。
OSやアプリケーションを
実行する
画像・ログ・バックアップなどの
データを保存する
たとえばEC2上でWebアプリケーションを動かし、 画像やバックアップなどのデータを S3へ保存するといった構成が考えられます。
あなたならどのストレージを選ぶ?
EC2とS3の違いを使って、 ストレージを選択してみましょう。
AWS上へ保存したい
保存先として、 どちらが適しているでしょうか。
どのようなデータを保存するのか考えてみましょう。
確認問題:Amazon S3
Amazon S3でオブジェクトを保存する 入れ物を何と呼びますか?
S3ではバケットを作成し、 その中へオブジェクトを保存します。
S3バージョニングを有効にすると、 何ができるようになりますか?
S3バージョニングを利用すると、 同じキーを持つオブジェクトの 複数バージョンを保持できます。
S3バケットの意図しない公開を 防ぐための重要な機能はどれですか?
S3 Block Public Accessは、 S3バケットやオブジェクトが 意図せず公開されることを防ぐための重要な機能です。
3問に挑戦してみましょう。
まとめ
Amazon S3はAWSの代表的な オブジェクトストレージサービス
バケットの中に オブジェクトを保存する
キーによって バケット内のオブジェクトを識別する
データの利用目的に合わせて ストレージクラスを選択できる
バージョニングによって 複数バージョンを保持できる
IAMポリシーやバケットポリシーで アクセスを制御できる
Block Public Accessで 意図しない公開を防ぐことが重要
次はAWSのデータベース「Amazon RDS」へ
ここまで、 EC2ではコンピューティング、 S3ではオブジェクトストレージを学びました。
Webシステムを構築する場合、 サーバーやファイルの保存先だけでなく、 ユーザー情報や商品情報などを管理する データベースも必要になります。
Amazon RDSの基本を理解する
S3でストレージの基本を理解したら、 次はAWS上でデータベースを利用する仕組みを学びましょう。
次の記事では、 Amazon RDS・DBインスタンス・DBエンジン・ Multi-AZなどの基本を整理します。
Amazon RDSの基本を理解する →
