Amazon S3の概要

Amazon S3の概要

Amazon S3の概要

S3 は高い可用性と耐久性を保つ容量無制限のオブジェクトストレージサービスです。静的なWebサイトのホスティングはもちろんのこと、ログやデータの保管庫として利用したり、 データレイクやデータ分析基盤として利用できます。様々な用途で3が登場するため AWS のキモと言えるサービスです。

Amazon RDSAmazon AuroraAmazon CloudFrontAmazon EBSVPCフローログなど幅広い AWS サービスから S3への連携が可能ですまたユーザーからは見えないものの AWS サービスの内部で S3を利用しているケースも多々あるようです 。

データ保護

S3の一年間の 可用性は99.9%でデータ耐久性は99.999999999%になります。データ耐久性に関してはイレブンナインと言われ1万個のオブジェクトを保存した場合平均して1000万年に一個の割合で失われるという耐久性を誇ります。例えば前に写真を100枚とるとして100年間続けると約400万枚となることになります。このデータが失われるのは約25000年に1回という確率になるので取り続ける間消えることはほぼありません 。

アクセス制限

 S3はデータを入れるだけで利用できるので簡単なサービスですが、アクセス制限を考えると急に難易度が上がります。基本的には S3にアクセスする側の権限と、アクセスされる側つまり S3側の権限の2種類が存在するので、誰がどこにアクセスしたいか、もしくはして欲しくないかを考える必要があります。アクセスする側の権限としてはIAMポリシーを利用し、S3側の権限としてはパケットポリシーACLを利用します。

IAMポリシー

アクセス元の制限で、対象はIAMユーザーおよびIAMロールです。IAMポリシーはS3だけに利用されるものではなく、他のリソースも含めて、対象のユーザーやロールのあくっせす制限を行います。
例えば、Administratorのロールはバケットの作成/削除が可能、Developerのロールはバケットの作成/削除はできないがオブジェクトの配置などは可能、などの制御が可能です。また、あるバケットのみ削除可能とするような制御もできます。

パケットポリシー

アクセス先の制限で、S3バケットに対して制限をかける方法です。名前のとおり、バケットに対してかけるIAMポリシーのようなもので、記述方式も似ています。バケット単位でアクセス制限したい場合や、クロスアカウントでの利用を想定している場合はバケットポリシーを利用します。

ACL(アクセスコントロールリスト)

バケットポリシーと同じくアクセス先の制限で、S3バケットとその中のオブジェクトに対して制限をかけることができます。ACLはバケットポリシーより弱い権限で、バケットポリシーとACLの両方を設定っしている場合はバケットポリシーが優先されます。ACLはおぶっジェクト単位で制限をかけたい場合に有効ですが、オブジェクト単位で制限をすると制限が追いづらくなり、運用不可が高まってしまいます。

アクセス制限制限対象制限の単位主な用途
IAMポリシーアクセス元IAMユーザーまたはIAMロールユーザー・ロール単位の制御
パケットポリシーアクセス先S3バケットバケット単位の制御・クロスアカウントの制御
ACLアクセス先S3バケットまたはオブジェクトオブジェクト単位の制御

ほかにも署名付きURLやCross-Origin Resource Sharing(CORS)などのアクセス制限の方法が存在します。

バージョニング

S3のデータ耐久性はイレブンナインとなっており、SS3障害が起こりデータを失う可能性を考える必要はほぼありません。しかし、人為的な操作ミスやプログラムミスでオブジェクトが削除される可能性があります。そのため、S3オブジェクトのバックアップ・リストアについて考える必要があります。
S3オブジェクトのバックアップ・リストアはバージョニングを使い、複数のオブジェクトやバケット全体のバックアップ・リストアはAWS Backupを利用することで対応可能です。
バージョニングとは、オブジェクトをばーっジョン管理して保持する方法です。オブジェクトを更新/削除した場合、新しいオブジェクトのみ見ることができ、元のおぶっジェクトは通常の方法だとみられずに過去のバージョンとして存在できます。その過去のバージョンを復元することでオブジェクトのリストアできます。AWS Backupでは、オブジェクトの復元をまとめて実行でき、事前にバックアップを取った地点まで戻すことができます。

ライフサイクル

バージョニング設定を入れてオブジェクトを更新/削除する機会が増えると、その分過去バージョンのオブジェクトが増えるためS3のコストが増加します。そんな時にライフサイクルを利用すると、コスト削除が見込めます。
ライフサイクルとは、S3の機能の1つで、時間の経過とともにっ削除処理やストレージクラス変更などのストレージ操作が自動化できる機能です。削除処理とは、バージョニング設定をいれていて、オブジェクトの更新や削除が増えたときの過去のバージョンの削除が自動でできる処理です。経過日数やバージョン数が一定以上を超えると削除でき、コスト削除が可能です。

まとめ

S3はデータ耐久性がイレブンナインを誇るサービスで、S3障害によるデータ削除を館得る必要がないため、データを保存する際にはまず考えるべきサービスです。ただし、人の操作ミスでデータが消える可能性もあるため、バックアップ・リストア戦略としてバージョニングやAWS Backupを設定します。