他社に先駆けてサービスを開始したこともあり、AWSというとS3を思い浮かべる方も多いと思います。
S3というと、データを保存するクラウドストレージとしての印象が強いようですが、AWSで提供している他のサービスとの連携ができることや、データの保護に関わる耐久性が特徴となっています。
Amazon S3とは?
Amazon S3は、AWSの代表的なサービスであるオブジェクトストレージです。
オブジェクトストレージとは、一般的なHDDなどのファイルストレージとは違い、階層などを持たずオブジェクト単位でデータを保存・格納するストレージです。
オブジェクトストレージはIoTやAI分野など膨大なデータ量を正しく扱い、分析する必要のある分野では特に注目を集めているストレージです。
オブジェクト単位で格納をすることから、データの取り出しや複製・移動が容易になるため、大量のデータを格納し活用することに適しています。また、データ量の増加や減少に応じてスケールアップやスケールダウンができる高い拡張性も大きなメリットとなっています。
Amazonnが提供しているAmazon S3では、高い拡張性と合わせて、いくつかのシステムにまたがっているS3のオブジェクトの複製を、データセンターの複数のサーバー間で自動的に全て作成、保存します。そのため、可用性が高く障害などが起こった場合の復元などにも対応が可能となっています。
AWSの他のストレージサービスとの連携から、コスト削減が見込めるシステムを構築することができることやデータ管理のためのツールが充実していることからも人気が高いサービスです。
S3の代表的な機能として
・オブジェクトにメタデータタグを追加する機能
・S3 ストレージクラス全体でデータを移動および保存する機能
・データアクセス制御を設定および実施する機能
・アクセス許可のないユーザーからデータを保護する機能
・大規模なデータ分析を実行する機能、
・オブジェクトおよびバケットレベルでデータをモニタリングする機能
があります。
S3では、バケットと言われるS3のデータストレージ用の基本的なコンテナを作成します。そのバケットの中ににデータを保存します。
オブジェクトの識別にはキーと呼ばれる固有の識別子を利用します。そのため、「バケット」+「キー」+「バージョン」を指定すれば、ピンポイントでデータを読み出すことができます。
また、作成したバケットを保存するリージョンを選択することもできます。コストを最小限に抑えることができるのとあわせて、規制用件にも対応することができます。
耐久性とデータの保護
S3が持つ耐久性とデータ保護についてまとめてみます。
1)耐久性
データセンターのサーバー間で、複製を作成し保存することで99.999999999% (9 x 11)のデータ耐久性を実現しています。
たとえば、Amazon S3 に 10,000,000 のオブジェクトが格納されている場合、単一のオブジェクト損失が発生する予測平均発生率は、10,000 年に 1 度ということになります。
引用:https://aws.amazon.com/jp/s3/faqs/
これは、オブジェクトをリージョン内の最低3つのアベイラビリティーゾーンに保存することから実現できています。このバックアップが正常に動いている限り、一つのアベイラビリティーゾーン(リージョン内の独立したロケーション)全体ががなくなってしまっても、データは保護される設計になっています。
また、データの格納時や取得時のデータ損傷を発見するためにトラフィックや休止中のデータにテェックサム(データの信頼性をチェックする方法)を実行し冗長データを使用して修復を行います。
Amazon S3 Glacier
データを長期的に保存することに適しているAmazon S3 Glacierは、コールドデータ(頻繁に利用されることがないデータ)に最適化されています。
低コストでありながら、アーカイブやバックアップ用に耐久性が高いのが特徴です。セキュリティ機能を備えているため長い期間のデータ保存にも適しています。
一番大きなメリットは、ストレージの運用にまつわるスケールアップやスケールダウンをAWSに任せることができることです。
また、このサービスを利用することでS3の設定にあるライフサイクル設定を利用し、アーカイブ用のデータをGlacierに保存することができます。保存はGlacierにされますが、オブジェクトはS3のオブジェクトであるため、Glacierから直接アクセスすることはできません。
その他の機能について
オブジェクトのライフサイクル管理
オブジェクトのグループに適用できるアクションを定義する設定で、移行アクションと有効切れアクションがあります。
移行アクション
別のストレージクラスにオブジェクトを移行するタイミングを設定できます。
ex)作成後60日でS3 One Zone-IA(低頻度アクセス)へ移行をして、6ヶ月後にGlacierへアーカイブする。
有効期限切れアクション
有効期限を設定し、それを過ぎたオブジェクトをユーザーに変わってS3が削除をして くれます。
バージョニング
同じバケット内で、複数のバージョンを保存する機能です。
バージョニングを利用していると、バケットに格納されたオブジェクトのバージョンを格納、取得、復元ができるようになります。
設定をしておくと、更新された最新のバージョンと以前のバージョンが保持されます。ストレージ容量は大きくなっていきますので、コスト面を考えるとライフサイクル機能を同時に設定しておくことが大切になります。
静的ウェブサイトのホスティング
S3で静的ウェブサイトの公開ができます。S3バケットを静的ウェブサイトホスティングに設定をして、そのバケットにデータをアップロードします。ウェブサイトエンドポイントが設定できれば公開ができます。独自ドメインでの運用も可能です。
イベント機能(他サービスとの連携)
S3の中で特定のイベントが発生した場合に通知を受けることができます。オブジェクトの作成イベント・オブジェクトの削除イベント・オブジェクトイベントの復元が可能になっています。
この機能をトリガーにして処理を構築することで、作業の効率化がはかれます。
オブジェクトがアップロードされた段階で次の処理を行い、再度S3に保存する。ということができるようになります。
他にも、S3の特徴として挙げられているストレージ管理のしやすさやストレージランクがあり大きな容量を使用していてもコスト効率をあげることができるようになっていることが
利用者が増加している理由にあげられます。
また、セキュリティに関してはアクセス制限をかけることができることや、サーバー側・クライアント側の暗号化(データアプウロード用)にも対応をしています。S3のセキュリティ機能も充実していますが、AWSで提供するAmazon Macieを利用すれば、S3に保存されている機密データを検出・分類・保護することもできます。
S3に対して、大容量のデータを転送することができるサービス「S3 Transfer Acceleration」は長距離での転送速度を最大化できます。また、データセンターなどでデータの容量が大き過ぎてネットワークでは難しい場合は、AWS Snowballなどを活用することがでできます。
データ量が増加している現在では、管理はもちろん期間を設けて保存しなければならないなどのルールが適応される業務もあります。できるだけコスト削減をしながら、かつ運用面を最適化し、データを保存・維持していくことを考えるならS3は最適な環境と言えます。