AWS Simple Storage Service (以下、S3)は、AWS が提供する、安価で耐久性の高いオブジェクトストレージサービスです。容量は無制限(ただし、1つのオブジェクトの最大サイズは 5TB)です。
オブジェクトストレージとは?
ストレージとして一番メジャーなファイルストレージと比較すると、分かりやすいと思います。ファイルストレージはディレクトリ構造をもち、フォルダやファイルを管理しますが、オブジェクトストレージはディレクトリ構造を持ちません。フラットな構成で、ユーザーが独自にデータに対して情報(メタデータ)を付与することができます。このページが参考になります。
利用料とSLA
- 1ヶ月あたり、0.025 USD/GB(月に 10GB 使っても30円程度。cf. EBS は、1ヶ月あたり 0.12 USD/GB)
- データは複数のAZに保存され、その耐久性は、99.999999999%(イレブンナイン)
S3 の構成要素
バケット
オブジェクト( データ)を保存するための領域です。バケットは名前を付けて管理しますが、その名前は、AWS内でユニークである必要があります。
キー名
各オブジェクトに付けられる名前です。
オブジェクト
S3 上に保存あれるデータそのものです。各オブジェクトにはキーが付与され、「バケット名+キー名+バージョンID」で、必ずユニークになるURLが作成されます。
メタデータ
オブジェクトデータを管理するための情報です。オブジェクトの作成日時やサーズと言ったシステム定義情報以外にも、アプリケーションで必要となるユーザーが定義する情報をメタデータに保存することもできます。
S3 の使い方
REST や SOAP と言った HTTP ベースの Web API を使用して、S3 上のオブジェクトにアクセスします。
S3 はウェブの管理コンソールから、シンプルなオペレーションで使用することができます。やることは、バケット(フォルダ)を作り、その中にファイル(オブジェクト)やフォルダを保存していきます。
S3 の機能
アクセス管理
- ユーザーポリシー・アクセスポリシーなどでアクセスを管理
- IAMで利用できるユーザーを管理
- バケット単位で、ユーザーや送信元IPアドレスなどを制限
Webホスティング機能
- 静的サイトであれば、S3だけで公開することが可能
- ウェブサイトのラインディングページを保存したり、ウェイブサーバの障害時のSorry ページを置いておくなど
他のAWSサービスとの連携が豊富
- Redshiftを使ってS3のデータを利用するSpectrum機能
- S3にデータが保存されたらLumbdaを起動するFunction機能(起動トリガー)
S3 がよく使われるシーンの例
S3 は柔軟性に優れたサービスであるため、アイデア次第では使い方は無限大です。代表的な使われ方として、以下のものがあります。
- バックアップデータの保存
- ビッグデータ解析用のデータ一時保存
- ETL (Extranc/Transform/ Load)の中間ファイルの保存
- EC2インスタンスやコンテナからのログの転送
- 静的コンテンツのホスティング
具体例:
1. 静的コンテンツの配置
- 今、ご覧になっているこのブログのページで使っているイメージファイルも、S3 上に保存してあり、そこから配信しています。
2. ログなどのエクスポート先
3. バッチ連携用ファイルの保存先
4. 静的ウェブホスティング
静的ウェブホスティング機能を行う場合、注意点があります。
- 静的コンテンツに限る
- サーバサードの動的なコンテンツをホスティングすることはできない
- 使用する独自ドメインとバケット名を一致させておく必要がある
ストレージクラス
S3 では、用途に応じて7つのランクを設けています。これをストレージクラスと呼びます。ストレージクラスにより、SLAが設定されます。
STANDARD(スタンダード)
これがデフォルトのストレージクラスです、低遅延と高スループットを兼ね備え、S3 の性能が最も発揮されるクラスとなります。
- 耐久性:99.999999999%
- 可用性:99.99%
STANDARD-IA(標準 IA)
STANDARDよりは保存にかかるコストが安価になるストレージクラスです。参照頻度の低いデータ向けとなるため、アクセスが必要のないデータ、それほど頻繁にアクセスしないデータ、といったデータを保存する時に向いています。
- 耐久性:99.999999999%
- 可用性:99.99%
ONEZONE-IA(1ゾーン IA)
単一AZ内のみでデータを複製するストレージクラスです。1つのAZ内でのみ複製を行うため、AZ単位で障害が発生した場合、データの復元ができない可能性が高いです。この点以外は、STANDARD-IAと同等のサービスレベルが提供されます。
- 耐久性:99.999999999%
- 可用性:99.5%
INTELLIGENT-TIERING(インテリジェントな階層型)
参照頻度の高低を明確に決めることができないデータ向けのストレージクラスです。STANDARDとSTANDARD-IAの2層構成となっており、30日以上参照されなかったデータは、自動的にSTANDARD-IAに移動されます。データの移動が発生するため、頻繁に移動は発生するとコストが高くなります。
- 耐久性:99.999999999%
- 可用性:99.9%
Glacier
ほとんど参照されない、アーカイブ目的のデータを保存するストレージクラスです。このクラスに保存されたデータにアクセスする場合、事前にアクセスリクエストする必要があります。またアクセスできるようになるまでに、数分から数時間かかるという特徴があります。
- 耐久性:99.999999999%
- 可用性:99.99%
上記5つのストレージクラス以外に、更に2つのストレージクラスが追加されているようです(2020年8月30日時点)。
Glacier Deep Archive
ほとんど参照されない、アーカイブ目的のデータを保存するストレージクラスです。アクセスできるようになるまでに、数時間かかるという特徴があります。1 年のうち 1 回か 2 回しかアクセスされないようなデータを対象とした、長期保存やデジタル保存をサポートします。特に、金融サービス、ヘルスケア、パブリックセクターなどの規制が厳しい業界を対象としており、コンプライアンス要件を満たすために 7ー10 年以上データを保管するように設計されています。
低冗長化
ほとんど参照されない、アーカイブ目的のデータを保存するストレージクラスです。推奨はされていないみたいです。
ライフサイクルの管理
S3 に保存されたオブジェクトは、その利用頻度に応じてライフサイクルを定義することができます。
移行アクション
データの利用頻度に応じて、ストレージクラスを変更します。最初はアクセス頻度が高いが、一定期間過ぎると低くなり、最後にはアーカイブさせると言った移行ができます。
有効期限アクション
指定された期限を越えたオブジェクトを、S3 から削除します。S3 は容量無制限のストレージサービスですが、保存容量が増えればコストも上がります。不要なデータは定期的に削除することが望ましいです。
バージョン管理
1つのオブジェクトに対して、複数のバージョンを管理(バージョニング)することができます。バージョニングは、バケット単位で有効・無効が指定できます。真・旧の両方のオブジェクトが保存されるため、保存容量が増えます。
アクセス管理
S3 のアクセス管理には、バケットポリシー、ACL、IAMが使用できます。
バケットポリシーは、バケット単位でのアクセス制御を行います。
オブジェクト単位での制御には、ACLやIAMを使用します。
データの暗号化
暗号化は、サーバ側での暗号化とクライアント側での暗号化の2種類があります。
サーバ側での暗号化は、データがS3 に書き込まれる時に暗号化され、読み取る時に復号化されます。
クライアント側での暗号化は、AWS SDK を使って、S3 に送信される前にデータの暗号化が行われます。復号化は、クライアント側で暗号化されたデータのメタデータから、どのキーで復号化するのかが判断されます。
サーバ側での復号化は、バケットに対してとオブジェクトに対して行えます。
この教材を使って勉強してます。
「AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト」
AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ] 価格:2,618円 |