はじめに
このガイドは、AWS認定資格試験の対策用に作成しています。
認定試験ではAmazon S3に関する問題がよく出題されるため、S3の大枠の機能について理解しておくことが重要です。
このガイドでは、S3の基本概念からストレージクラス、セキュリティ、トリガー機能に至るまで、試験に役立つ主要なポイントをまとめています。
学習の際に役立つだけでなく、実務においても効果的にS3を活用するための参考資料としてお使いください。
1. S3の概要
Amazon S3は、AWSのオブジェクトストレージサービスで、スケーラブルかつ高耐久性のストレージを提供します。
データは特定のリージョン内で冗長化され、信頼性が高く維持されます。
また、S3のバケット名は一部のリージョンを除き、世界中で一意である必要があり、ユーザーは他のAWSアカウントとバケット名が重複しないように命名する必要があります。
2. S3の特徴と利用シーン
- スケーラビリティ:必要な分だけストレージを利用できるため、使用量に応じてコストも変動します。
- 高耐久性:すべてのS3ストレージクラスは、99.999999999%(11 9’s)の耐久性を持ち、データの信頼性を確保しています(ただし、One Zone-IAは単一AZに保存されるため、他のクラスに比べ冗長性が劣ります)。
- アクセス制御の柔軟性:S3ではバケットポリシーやACLを使用して、データのアクセス権を細かく設定できます。
利用シーンの例
- 静的ウェブサイトのホスティング
- バックアップとリカバリ
- メディアファイルの保存・配信
- データ分析のためのログデータ保存
3. 他のAWSストレージサービスとの比較
AWSにはさまざまなストレージサービスがあり、用途に応じて選択が可能です。
S3と他の主要なストレージサービスとの違いについて簡単に説明します。
サービス | 特徴 | 主な用途 |
---|---|---|
Amazon S3 | オブジェクトストレージ。スケーラブルで耐久性が高い。 | バックアップ、アーカイブ、メディア配信 |
Amazon EBS | ブロックストレージ。EC2インスタンスにアタッチ可能。 | データベース、アプリケーションのファイルシステム |
Amazon EFS | ネットワークファイルシステム。共有ファイルシステムとして利用可能。 | 複数のEC2インスタンスでのファイル共有 |
AWS FSx | 高性能ファイルシステム。FSx for WindowsやLustreなどがあり、特定の用途に適したファイルシステムを提供。 | 高性能計算、HPC、データベースファイル共有 |
AWS Glacier | 低コストのアーカイブストレージ。データ取得に時間がかかる。 | 長期データアーカイブ |
4. 基本コンセプト
バケットとオブジェクト
S3におけるデータは「バケット」という単位で格納されます。各バケットはリージョン単位で作成され、その中にファイル(オブジェクト)を保存します。
オブジェクトにはメタデータ(ファイル情報)やアクセス制御の設定が含まれます。
ストレージクラス
S3には異なるストレージクラスが提供され、利用シーンやコストに応じて選択できます。
ストレージクラス | 特徴 | 主な用途 | アクセス頻度 | 最低保存期間 / 追加料金 |
---|---|---|---|---|
S3 Standard | 高い耐久性と低遅延アクセス。 | 頻繁にアクセスするデータ | 高頻度アクセス | なし |
S3 Intelligent-Tiering | アクセス頻度に応じて料金が自動で変動し、最適なコストを実現。 | アクセス頻度が不明なデータ | 変動アクセス | 最低保存期間 30日 |
S3 Standard-IA | アクセス頻度は低いが、即時アクセスが必要なデータ向け。 | 低頻度アクセス、バックアップ | 低頻度アクセス | 最低保存期間 30日、取り出し料金が発生 |
S3 One Zone-IA | 1つのAZにのみデータが保存される低コストオプション。 | 冗長性が必要ない低頻度データ | 低頻度アクセス | 最低保存期間 30日、取り出し料金が発生 |
S3 Glacier Instant | 即時アクセスが可能なアーカイブ。 | 長期アーカイブ、迅速アクセスが必要な場合 | 低頻度アクセス | 最低保存期間 90日、取り出し料金が発生 |
S3 Glacier Flexible | アクセスまでの取り出し時間が可変のアーカイブ。 | 長期アーカイブ、取り出し時間に柔軟性があるデータ | ほぼアクセスなし | 最低保存期間 90日、取り出し料金が発生 |
S3 Glacier Deep Archive | 非常に低コストの長期アーカイブ。 | 長期保存が必要でほとんどアクセスしないデータ | ほぼアクセスなし | 最低保存期間 180日、取り出し料金が発生 |
バージョニングとライフサイクル
- バージョニング:オブジェクトの異なるバージョンを保持する機能で、誤った変更や削除に対するデータ保護が可能です。
- ライフサイクルポリシー:設定に応じてオブジェクトの移行や削除を自動化し、コストを最適化できます。
5. セキュリティとアクセス制御
S3では、以下のような方法でアクセス制御とセキュリティが提供されます。
- IAMポリシー:S3バケットへのアクセスをIAMユーザーまたはロールに制限できます。
- バケットポリシー:JSON形式のポリシーを使用して、バケット全体のアクセス権を設定できます。
- ACL(アクセスコントロールリスト):オブジェクトごとにアクセス権を制御します。
S3暗号化
- サーバーサイド暗号化(SSE):データ保存時に暗号化されます。KMSキーやS3管理キーを使用して暗号化することも可能です。
- クライアントサイド暗号化:クライアントがデータを暗号化してからS3に保存します。
暗号化については以下の記事でまとめています。
署名付きURL
署名付きURLを使用することで、特定の時間のみ有効な一時的なアクセスリンクを発行できます。これにより、安全に限定的なアクセスを第三者と共有することが可能です。
6. 主要なユースケース
- バックアップとアーカイブ:データの長期保管やアーカイブ用として利用され、コスト削減に効果的です。
- 静的ウェブサイトのホスティング:HTML、CSS、JavaScriptをS3にアップロードし、S3のウェブホスティング機能を使ってウェブサイトを公開できます。
- ビッグデータ分析:S3に保存したログデータをデータ分析サービス(Amazon Athenaなど)で分析するシナリオに適しています。
7. S3トリガー
Amazon S3は、特定のイベントに応じて他のAWSサービス(例:LambdaやSNS、SQSなど)をトリガーすることができます。
これにより、S3にアップロードされたデータの変更や削除に基づいて、自動的に処理を開始することが可能です。代表的なS3トリガーの例を以下に示します。
S3トリガーの主なイベント
- s3:ObjectCreated: オブジェクトが新規に作成された際に発生します。例:ファイルのアップロードやコピー。
- s3:ObjectRemoved: オブジェクトが削除された際に発生します。例:ファイルの削除。
- s3:ObjectRestore: Glacierからのオブジェクト復元が完了した際に発生します。
- s3:ReducedRedundancyLostObject: オブジェクトの冗長性が失われた際に発生します(主にReduced Redundancy Storageで使用)。
S3トリガーの利用例
1. Lambdaでファイル処理を自動化
S3にファイルがアップロードされた際にLambda関数がトリガーされ、自動でファイルの加工や分析を行うことができます。例えば、画像ファイルのリサイズや動画の変換、テキストファイルの内容分析などが考えられます。
2. 通知の自動送信
S3のイベントをSNSやSQSに通知することで、特定のイベントが発生した際に他のシステムへ通知を送ることができます。
例えば、ファイルのアップロードが完了したら管理者にメールを送信する、または別のアプリケーションでの処理に使用するなどのユースケースが挙げられます。
3. データパイプラインの開始
S3のイベントをトリガーとしてデータパイプラインを開始し、Big Dataやデータ分析のワークフローを自動化できます。例えば、S3にアップロードされたログファイルをAthenaで分析するフローを開始することが可能です。
S3トリガー設定の手順
-
AWSコンソールでS3バケットを開く
対象のS3バケットをAWSコンソールで開き、「プロパティ」タブを選択します。 -
イベント通知を追加
「イベント通知」セクションから「通知を作成」を選択し、トリガーするイベント(例:ObjectCreated)を選択します。 -
トリガー先の設定
Lambda、SNS、またはSQSのいずれかを通知先として選択し、必要なパーミッションを設定します。
8. 実践:S3バケットの作成からファイルの共有まで
ステップ1:S3バケットの作成
- AWSコンソールにログインし、S3サービスを開きます。「バケットを作成」をクリックしてください。
- バケット名を指定して「バケットの作成」をクリックしてください。他の設定はデフォルトのままで構いません。
ステップ3:オブジェクトのアップロード
- 作成したバケット内にオブジェクト(ファイル)をアップロードします。作成したバケットを選択して「アップロード」を選択してください
- 赤枠内にファイルやフォルダをドラッグ&ドロップするとファイルをアップロードできます。
- オブジェクトを選択し、「アクション」ボタン>「ストレージクラスを編集する」を選択すると、オブジェクトのストレージクラスを設定できます。今回は変更せず確認だけにします。
ステップ4:署名付きURLの取得
- オブジェクトを選択し、「アクション」ボタン>「署名付きURLで共有」を選択します。
- 署名付きURLの有効期限を入力し、「署名付きURLを作成」を選択してください。
- URLがクリップボードにコピーされます。今回は別のブラウザでURLにアクセスしてみます。
アップロードしたファイルが表示されました!
まとめ
Amazon S3はAWSの中でも柔軟で強力なオブジェクトストレージサービスで、さまざまなストレージクラスとアクセス管理機能を備えています。
基本の概念を理解し、適切なセキュリティ設定とコスト管理を行うことで、効率的にS3を利用することが可能です。
また、トリガー機能を活用して他のAWSサービスと連携し、S3の利用範囲を広げることもできます。
S3を効果的に利用できるようこのガイドを参考してください。
|