![見出し画像](https://assets.st-note.com/production/uploads/images/137180144/rectangle_large_type_2_ed7ce5f9d46080adc91d41c07bf30a87.png?width=1200)
【AWS】 S3の解説
Amazon Simple Storage Service
オブジェクトストレージサービス提供するもので、オブジェクトストレージ内でオブジェクトを格納するためのコンテナが「バケット」と呼ばれる。s
高い耐久性があり、データは複数のAZ(デフォルトで3つ)にまたがって冗長的に保存されることにより、データの損失リスクを極めて低く抑えることができる。
S3の耐久性は99.999999999%(11 9's)と公表しており、1億個のオブジェクトのうち年間平均して1個のオブジェクトが失われるほどの耐久性がある。
支払いは使用したストレージ容量に基づいて行われる従量課金制であり、未使用のリソースに対するコストは発生しませない。さまざまなストレージクラスを選択することで、ストレージコストを最適化することができる。
オブジェクトストレージ
データをオブジェクトとして保存するストレージシステムで、従来のファイルシステムやブロックストレージと異なり、スケーラビリティやアクセシビリティに優れている。
階層構造ではなく、フラットな名前空間に保存されることより、大量のデータを効率的に管理できる。各オブジェクトはメタデータを持ち、オブジェクトに関する詳細情報を格納できる。
オブジェクトロック機能
特定のオブジェクトに対する削除や上書きを防ぐための機能。
バージョニングが有効なバケットでのみ利用可能で、WORM(Write Once, Read Many)モデルを採用し、データが一度書き込まれると設定された期間内では変更や削除ができない。
データの保存と保護に関連する機能
レテンションポリシー(Retention Policy):オブジェクトの変更や削除を特定の期間保護するために設定される。
リーガルホールド(Legal Hold):法的な調査や訴訟などのために、特定のオブジェクトを保護する必要がある場合に使用される。
レテンションポリシーはあらかじめ定められた一定期間データの変更や削除を防ぐために使用され、リーガルホールドは特定の法的な必要性がある場合に無期限にデータを保護するために使用されるという違いがある。
バージョニング機能
バケット内のオブジェクトの複数のバージョンを保持し、管理するための機能。
バージョンには一意のバージョンIDが割り当てられることにより、誤ってオブジェクトを削除または上書きしても、バージョニングにより以前のバージョンを復元することができる。
また、同じキー(ファイル名)を持つオブジェクトを上書きまたは削除するたびに、新しいバージョンが作成され、以前のバージョンは保持されるので引き続き、アクセスは可能になる。
バージョニングが有効なバケットでは、オブジェクトの削除が「マーカーの追加」として扱われ、特定のオブジェクトバージョンを「削除済み」とマークすることを指す。(削除マーカーが追加されると、そのオブジェクトはバケットから削除されたように見えます。しかし、実際には以前のバージョンが保存されており、必要に応じてアクセスや復元が可能)
オブジェクトの特定のバージョンを完全に削除するには、削除マーカーとは別にそのバージョンIDを指定して削除コマンドを実行する必要がある。
クロスリージョンレプリケーション (CRR)
S3バケット内のオブジェクトを異なるAWSリージョンの別のバケットに自動的に複製する機能。災害復旧計画の一環として利用できる。
また、特定のプレフィックスまたはタグを持つオブジェクトに限定して有効化することができ、必要なデータのみを選択的に複製することが可能。
クロスリージョンレプリケーションを設定するには、ソースバケットと宛先バケットが異なるリージョンに存在し、適切な権限が設定されている必要がある。
バケットの2つのタイプ
汎用バケット
S3の基本となるストレージオプションで、さまざまなワークロードに対応するための汎用性が高い設計が特徴です。このバケットタイプの主な特徴は以下の通り。
データ構造: データはフラットに保存され、明確な階層構造を持たずに管理されます。
コスト最適化: オブジェクトごとにアクセス頻度を考慮した「ストレージクラス」によるコスト最適化が可能です。
設定の柔軟性: バケットのリージョン設定、アクセス管理の設定が自由にカスタマイズ可能です。
ディレクトリバケット
高性能を必要とする特定のアプリケーション向けに最近導入されたバケットタイプです。このタイプの主な特徴は以下の通りです:
高パフォーマンス: ミリ秒単位で一貫したデータアクセスが可能で、低レイテンシーが要求されるアプリケーションに適しています。
データ構造の階層化: 伝統的なフォルダとは異なり、ディレクトリバケットはデータを階層的に管理することができます。
限定されたストレージクラス: S3 Express One Zoneというストレージクラスは、シングルアベイラビリティゾーンにデータを保存し、コストを抑えながら高速アクセスを提供します。
S3 アクセス制限の種類と特徴
1.バケットポリシー
目的: バケットレベルでのアクセス制御を提供。
特徴: JSON形式で記述され、特定のユーザーやIPアドレスからのアクセスを許可または拒否できる。バケット全体に対して、または特定のオブジェクトに対して細かいアクセス制御が可能。
2. IAMポリシー
目的: IAMユーザー、グループ、またはロールに対するS3アクセスを制御。
特徴: IAMのポリシーを使用して、特定のIAMエンティティに対してS3バケットやオブジェクトへのアクセスを許可または拒否する。
3. アクセス制御リスト(ACL)
目的: バケットやオブジェクトレベルでの細かなアクセス制御を提供。
特徴: バケットまたはオブジェクトごとに設定できるリストで、読み取り、書き込み、管理の各アクセス権を個々のユーザーやグループに割り当てることができる。
4. VPCエンドポイントポリシー
目的: 特定のVPC(Virtual Private Cloud)からのS3へのアクセスを制限する。
特徴: VPCエンドポイントを通じてS3にアクセスする際の制限を設定できる。特定のVPCからのアクセスのみを許可し、他の場所からのアクセスを拒否することができる。
データの暗号化
サーバーサイド暗号化 (Server-Side Encryption, SSE)
AWSのサーバー側でデータが暗号化され、復号化される。主に以下の3種類がある。
SSE-S3: AWS S3が管理するキーでデータを暗号化。S3が独自の暗号化キーを生成し、各オブジェクトに対して異なるキーを使用する方法。
SSE-C: 顧客提供の暗号化キー(Customer-Provided Encryption Keys)を使用。暗号化と復号化のために顧客が自らのキーを提供する。
SSE-KMS: AWS Key Management Service (KMS) を使用してキーを管理。キーの使用に関する監査ログやキーのローテーションなど、追加のセキュリティ機能と管理機能を提供。
クライアントサイド暗号化 (Client-Side Encryption)
データがクライアントで暗号化され、その後暗号化された形でS3にアップロードする形態。AWS SDKなどのツールを使用して、アップロード前にデータを暗号化し、AWSは暗号化されたデータを処理するだけであり、暗号化キーにアクセスすることはない。
ストレージクラス
異なるデータ保管ニーズに対応するために設計されたもの。こデータのアクセス頻度、耐久性の要求、コストセンシティビティなどの要素に基づいて選択され、S3ライフサイクルポリシーを使用して、データを異なるストレージクラス間で自動的に移動させることも可能。
Standard
頻繁にアクセスされるデータ向けであり、高い耐久性と可用性を提供するが、他のクラスと比べて料金は高め。
S3 Intelligent-Tiering
アクセスパターンが不定期または予測不可能なデータ向けで、データを頻繁にアクセスされる階層とアクセスされない階層に自動的に移動し、コスト効率を最適化。
S3 Standard-Infrequent Access (Standard-IA)
頻繁にはアクセスされないが、必要な時にすぐにアクセスできる必要があるデータ向けで、S3 Standardと同等の耐久性を持ちながらコストを低減。
S3 One Zone-Infrequent Access (One Zone-IA)
単一のアベイラビリティゾーンにデータを保存し、S3 Standard-IAよりも低コストですが、可用性はやや低い。
S3 Glacier
長期アーカイブやデータのバックアップ向けで、非常に低コストですが、データの取り出しには数時間かかる。
S3 Glacier Deep Archive
長期間アクセスされないことが予想されるデータのアーカイブ向けで、AWSで提供される最も低コストなデータ保存オプション。取り出しには12時間以上かかる場合がある。
参考
ライフサイクルポリシー
S3バケット内のオブジェクトに対する自動管理ルールを提供する機能。このポリシーを使用することで、データのストレージクラスを自動的に変更したり、特定の期間が経過した後にオブジェクトを削除したりすることができる。
その他
Webサイトホスティング
インターネット上でWebサイトを公開するために必要なサービス。月額や年額の料金で提供され、小規模な個人のブログから大規模な企業のWebサイトまで幅広いニーズに対応している。
署名付きURL
限定された期間内でのみ有効な特別なURLです。このURLを使用することで、認証されたユーザーのみが特定のプライベートコンテンツにアクセスできるようになる。
URLは特定の有効期限(例えば数分から数日)が設定されており、期限が切れるとアクセスできなくなる。これにより、ユーザーは安全にデータを共有でき、不正アクセスやデータ漏洩のリスクを最小限に抑えることができる。
また、署名付きURLは、通常の認証プロセスをバイパスすることができるため、ログイン不要で直接ファイルにアクセスできる。
いいなと思ったら応援しよう!
![Ken @ インフラエンジニア](https://assets.st-note.com/production/uploads/images/101132722/profile_a98a67947884ad459174e833f9563c07.jpg?width=600&crop=1:1,smart)