S3
Amazon Simple Storage Service(S3):
バケットと呼ばれるコンテナに、ファイルをオブジェクトとして保存する。
容量無制限。
ナインイレブン(99.999999999%)の耐久性。
ウェブサイトのホスティング、バックアップの保存、データのアーカイブ、動画や画像などのメディアファイルの管理に最適。
セキュリティとプライバシー管理:
- デフォルトではプライベートアクセス
- バケットポリシーを使用して必要なアクセス許可を設定
- 時間制限付きの一時的なアクセスができるURLの設定も可能
- 監査ログを使用してリクエストを追跡できる
リクエスタ支払い:データ取得料金をリクエストした側が支払う設定
ストレージクラス
Amazon S3のストレージクラスは、保存するデータのアクセスパターン、コスト、耐久性、可用性などに応じて選択可能な保存設定のこと。
S3 Standard:動的なウェブサイトのファイルなど定期的にアクセスするデータに最適
S3 Standard-Infrequent Access(Standard-IA):アクセス頻度が低いものの、必要なときには迅速にアクセスする必要があるデータ向け。長期バックアップやディザスタリカバリファイルなどを保存する場合に最適
S3 Glacier Instant Retrieval:ほとんどアクセスされないものの、ミリ秒単位での取り出しが必要なデータをアーカイブする場合に使用。医療画像やメディアファイルに最適。S3 Standard -IAより低コスト
S3 Glacier Flexible Retrieval:年に1~2 回しかアクセスされないアーカイブデータ用。数分~数時間でデータにアクセスできる
S3 Glacier Deep Archive:年に1~2 回しかアクセスされないデータの長期保存とデジタル保存に適している。規制コンプライアンス要件を満たすために、データセットを7~10年以上保持する用途に最適。12時間以内にデータを復元できる。最も低コスト
S3 Express One Zone:データが1つのアベイラビリティーゾーンに保存されるため、3つのゾーンを使用するS3 Standardと比較してコストを削減できる
S3 One Zone-Infrequent Access(One Zone-IA):データが1つのアベイラビリティーゾーンに保存されるため、3つのゾーンを使用するS3 Standard -IAと比較してコストを削減できる
Amazon S3 Intelligent-Tiering:アクセス頻度に応じてオブジェクトを自動的に低コストのアクセス層に移動してコストを削減できる

S3 ライフサイクル
ソーシャルメディアの投稿のように、最初はアクセス頻度が高いが、時間が経つとアクセス頻度は低くなるケースがある。
このようなときにS3ライフサイクルポリシーを使用すると、クラス間でデータを自動的に移行したり、不要になった古いデータを削除したりするルールを設定できる。
データ移行の最適な方法を見つけるには、S3ストレージクラス分析を使用できる。
データ保護
通信暗号化
通信はデフォルトでHTTPSが利用される。
保管データ暗号化
SSE-S3(サーバーサイド暗号化-S3):
S3側で管理している暗号化キーを利用して暗号化。
AES-256形式で暗号化。
SSE-KMS:
ユーザー側がAWS KMSで独自に作成した暗号化キーを利用して暗号化。
AES-256形式で暗号化。
SSE-C:
クライアントのC。
クライアント側が作成した暗号化キーをデータと共に送付し、サーバー側(S3側)が暗号化をする。
クライアントサイド暗号化(CSE):
S3へ送信する前にクライアント側でデータを暗号化する。
オブジェクトロック
アップロードされたデータを更新と削除ができないようにする機能。
- ガバナンスモード:特別なアクセス許可なしに、ユーザーはオブジェクトのバージョンの上書きや削除、ロック設定を変更することはできない
- コンプライアンスモード:ルートユーザーを含め、ユーザーはオブジェクトのバージョンを上書きや削除することはできない
アクセス
バケットポリシー:
1つバケットに1つのアクセス許可を設定する機能。
アクセスポイント:
1つのバケットに対してアカウントを指定したりIPアドレスを指定したりするなど複数のアクセス許可を設定できる機能。
マルチリージョンアクセスポイント:
複数リージョンに分散配置されたS3バケットへの統一的なアクセスポイントを提供する機能。
アプリケーションが単一のアクセスポイントを使って複数のリージョンに分散したバケットへアクセスできるようになる。
ACL:
バケットやオブジェクト単位でのアクセス許可を設定する機能。
パフォーマンス
S3はプレフィックス(フォルダ)に応じてリクエスト処理が可能なパフォーマンスを調整できる。
プレフィックスごとに1秒当たり3,500回以上のPUT/COPY/POST/DELETEリクエストまたは5,500回以上のGET/HEADリクエストが可能。
カスタムプレフィックスを作成してデータ処理の並列化が可能。
クロスアカウントアクセス
別のアカウントのIAMユーザーやロールからのアクセスを許可する設定。

クロスアカウントを許可する設定は3つの方式がある。
-
バケットポリシーとIAMポリシーによる許可
- S3バケットへのアクセスを許可するIAMポリシーを設定する
- IAMユーザーとロールにIAMポリシーを設定する
- バケットポリシーでアカウントを指定して許可を行う
-
ACLとIAMポリシーによる許可
- S3バケットへのアクセスを許可するIAMポリシーを設定する
- IAMユーザーとロールにIAMポリシーを設定する
- ACLでアカウントを指定して許可を行う
-
IAMロールによる許可
- IAMロールの権限移譲を利用して、S3バケット/オブジェクトへのプログラムによるアクセスまたはコンソールアクセス用のクロスアカウントのIAMロールを設定する
- AssumeRoleの実行を許可したロールにより別アカウントのユーザーに権限を委譲する
クロスオリジンリソースシェアリング(CORS)
1つのS3を利用したWEBアプリケーションのドメインから、別のドメインが利用するS3リソースを相互利用する機能。

S3バケットの利用状況分析
S3サーバーアクセスログ:
バケットに対するリクエストの詳細がログとして記録される。
監査に利用できる。
S3アクセスアナライザー:
S3バケットに対して任意のユーザーや他のAWSアカウントにアクセス許可が適切になされているかを評価・警告する。
S3ストレージクラス分析:
データのアクセス頻度の分析。
Amazon S3 Storage Lens:
データの使用状況とアクティビティの分析。