S3の用途

はじめに

AWSで大量データを保存する際はS3の使用は避けて通れません。なので今回S3の用途とS3の機能について今回学んだことを説明致します。

S3概要

S3の様々な活用方法についてのユースケースを説明したいと思います。まずその前にS3が何なのかをご説明いたします。

S3を構成しているAWSのストレージサービスについてのからの説明です。AWSはブロックストレージ、オブジェクトストレージ、ファイルストレージの3つの形式のストレージサービスを提供しています。ブロックストレージはEC2にアタッチして活用するディスクサービスです。ブロック形式でデータを保存し、高速・広帯域幅を持っています。オブジェクトストレージは安価の高い耐久性をもつオンラインストレージです。オブジェクト形式でデータを保存します。S3はこちらの形式を使用しています。ファイルストレージは複数のEC2インスタンスから同時にアタッチ可能な共有ストレージサービスで、ファイル形式でデータを保存します。

 S3はSimple Storage Serviceの略称でユーザがデータを容量制限なく保存可能なマネージド型で提供されるオブジェクト型ストレージです。特徴として安価で高い耐久性(月額1GB/約3円)とスケーラブルで安定した性能(データは冗長化されて保存されデータ容量に依存しない性能がAWS側で保証されている)と様々な暗号化が使用可能です。オブジェクトの構成要素はKey、Value、バージョンID、メタデータ、サブリソースの5つの要素から成り立っています。まずKeyはオブジェクトの名前でValueはデータそのものです。なのでKeyとValueがデータを構成しています。残りの3つは管理区分用のデータとなっています。S3のデータ構造はバケット単位で保存スペースを区分し、オブジェクトでデータを格納しています。ストレージのタイプはSTANDARD、STANDARD-IA、One Zone-IA、RRS、Amazon Glacierと様々あり、用途に応じて選択します。STANDARDがいつでもデータにアクセスできますが、値段がこの中では一番高いです。データの更新頻度が低いとか中長期のデータを保存する場合は他のタイプを選択します。
次にS3の機能についてご説明していきます。

データの整合性モデル

S3は高い可用性を実現するため、データの更新・削除には結果整合性モデルを採用しています。つまり同時にアクセスした場合は、最終的に整合すればよいという考え方です。同時書き込みはタイムスタンプ処理を実施しています。新規登録だけ登録後即時にデータが反映される整合性モデルを使っています。

アクセス管理

いくつかの方法があるので用途に応じて方式を使い分けます。

・IAMユーザーポリシー

一番使用頻度が高い。IAMユーザに対してアクセス権限を設定。一元的にユーザー権限を管理。

・バケットポリシー

バケット/オブジェクトのアクセス権をJSONで設定。クロスアカウントでのアクセス権限管理を実施するケース向け

・ACL

バケットとオブジェクトへのアクセス権限をXMLで設定。簡易的に権限管理を実施

・署名付きURL

AWS SDKで生成した署名付きURLで3Sのオブジェクトへの一定時間アクセスを許可

S3の暗号化

S3はデータ転送時と保存時に暗号化の技術を使用することができます。S3へのデータ保管時の暗号化形式は2つです。1つ目はサーバーサイド暗号化で、AWSのサーバーリソースを利用して格納データ自体を保存時に暗号化を実施します。暗号化タイプとしてはSSE-S3/SSE-KMS/SSE-Cを使うことができます。2つ目はクライアントサイド暗号化で、転送時に暗号化プロセスをユーザ側で管理するもので、暗号化タイプAWS KMSでカスタマーキーとマスターキーを使って暗号化します。

レプリケーション

リージョン間を跨ぐクロスリージョンレプリケーションにより耐障害性を高めることができます。AWSでリージョン間を跨ぐことはなかなかできませんがこれにより他のリージョンにデータを保存したりバックアップを保存するといったことがS3では可能です。このレプリケーションのトリガーはバケットに対するオブジェクト作成・更新・削除などで設定可能です。設定内容はバージョニング機能を有効にしてバージョン管理してバージョンに応じてレプリケーションを作成したり反映したりできます。バケットは各別リージョンを指定する必要があります。双方向レプリケーションも可能です(例えば東京リージョンと大阪リージョンを作成したら)。ただしデータ転送費用が発生してしまいます。

バージョン管理

ユーザーによる誤操作でデータ削除などが発生してもバージョン管理をしていれば復元が可能です。バケットをバージョン管理してそのバージョンによって復元したり削除したりなどの安全性が担保できます。ライフサイクル管理によって保存する期間の指定も可能です。

ライフサイクル管理

バケット内のオブジェクト単位でストレージクラスの変更や削除時期などを設定することで実行を自動化することができます。例えばあるデータを3か月後に自動で削除する、一定期間立ったデータは安価な保存場所に移動といった設定管理が可能です。

バックアップ

Glacierを利用してバックアップと復元が実施可能

利用状況の確認

データのアクセスパターンの簡易可視化が可能

S3の用途

ではS3の用途について紹介していきます。大量データを長期保存するという観点から用途を検討していくと下記ような用途が代表的です。

①コンテンツ配信の保管

②ログ・バッチの保管場所

③バックアップ/ディザスタリカバリ

④WEBの静的ホスティング

⑤データレイク

①コンテンツの配信・保管

大量データを長期保存するという観点からCMSから画像等のコンテンツデータの保管先にS3を利用します。Amazon CloudFrontと連携してキャッシュを使ってアクセスを早くすることによって、コンテンツをクライアント側に素早く見せていくと同時に長期保存でシンプルで安く使用する方法です。

②ログ・バッチの保管場所

バッチ処理で使うデータを長期的に保存していくけれども、たまにしか使用しない場合にバッチをするたびにS3から取り出していく、またはログの保管場所として使用する方法です。

③バックアップ/ディザスタリカバリ

バックアップの中長期の保存場所としてS3を利用します。耐障害性を高めるために別リージョン、クロスリージョンで複製保持することによってより効果の高い保存が可能になります。

④WEBの静的ホスティング

S3のみで静的なWEBサイトをホスティングして構築することが可能です。ランディングページなどを見せるだけ、あとはURLで別な所に飛ばすといったことがあるのならばS3で作成することが可能です。バケット単位で指定することが可能です。

⑤データレイク

IoTといったビッグデータ処理などデータを大量に処理しなければならない時にデータレイク使用します。データレイクとはデータを整理せずそのままの状態で一元管理するところで使用する際はS3とGlacierを組み合わせることがAWSで推奨されています。

まとめ

S3の用途について簡単に説明しました。S3は一瞬作成するだけなら無料でできるのでぜひお試しで作成してみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

前の記事

AWS ELBを知ろう

次の記事

S3のプロパティ活用