AWSクラウド・インフラ・開発基盤

【Udemy AWS 14 days】Day7の知識整理:Amazon S3

AWS

S3とは?

Amazon Simple Storage Service(Amazon S3)は、Amazonが提供する、信頼性や柔軟性が高いクラウドストレージサービスです。

無制限のオブジェクトストレージ

S3は、容量無制限のオブジェクトストレージサービスであり、データの保存・保管、アーカイブ、バックアップなど、多様な用途で利用可能です。S3はAWS(Amazon Web Services)が提供する主要なサービスの一つであり、EC2やEBSと並んでAWSのインフラ構築において欠かせないサービスと言えます。

耐久性と可用性

S3の最大の特徴の一つは、その非常に高い耐久性です。AWS S3は99.999999999%(イレブンナイン)という極めて高い耐久性を実現するように設計されており、データ損失のリスクを大幅に軽減することが可能です。この高耐久性は、データが複数のデータセンターへ自動的にコピーされることによって実現されています。

また、S3 Standardクラスでは、99.99%以上の可用性を提供しており、継続的な運用を支援します。

基本機能とストレージクラス

S3では、データをオブジェクトとして扱います。オブジェクトとは、データ本体、メタデータ(ファイルの作成日などの情報)、固有の識別子が含まれるファイル単位のデータです。1つのオブジェクトあたり最大5TBまでのデータを格納可能で、保存可能なオブジェクト数に制限はありません。

ストレージクラス

S3は、データのアクセス頻度や重要度に応じて最適なクラスを選択できるよう、複数のストレージクラスを提供しています。これにより、コストを最適化することが可能です。

ストレージクラス一覧

ストレージクラス用途特徴
S3 Standard頻繁アクセス高耐久性(11 9s)、高可用性(99.99%)、低レイテンシ(ミリ秒)
Intelligent-Tieringアクセスパターンが不明/変化するデータアクセス頻度に応じて自動的にストレージ層を移動し、コストを自動最適化
S3 Standard – IAアクセス頻度は低いが即時取り出しが必要なデータ標準より安価な保存コストだが、データの取り出しに課金され、最小ストレージ期間が30日
Glacier Flexible Retrieval長期アーカイブ低コスト(S3標準の約1/5)。取り出しに時間が必要(1分~12時間)。
Glacier Deep Archive極めて低頻度の長期アーカイブ(年に1〜2回程度)S3で最も安価なストレージ(S3標準の約1/12)。取り出しに時間がかかる(最大12時間)。
S3 One Zone – IA重要度が低く、コストを抑えたい低頻度データ単一AZに保存されるため、他のクラスより可用性が低い(99.5%)。コストは標準-IAより約20%削減可能。

選択基準

適切なストレージクラスを選択することで、データの特性に応じたコストの最適化が可能となります。

料金体系とコスト最適化

S3の料金体系

S3の料金体系は、主に「ストレージクラス」「データ転送量」「リクエスト量」の3つの要素から構成される従量課金制です。

ストレージクラス

保存されたデータの量に基づいて課金されます。ストレージクラスごとに単価が異なります(例: S3 StandardとS3 Glacierでは単価が異なる)。

リクエスト量(GET/PUTリクエスト)

S3へのアクセスに応じて課金されます。オブジェクトの取得(GET)アップロード(PUT)、コピー(COPY)、POSTなどの各種リクエストに対して単価が設定されています。

データ転送量

S3内のデータをダウンロードしたり、他のAWSサービスやインターネットに転送したりする際に発生する料金です。データをS3にアップロードする際には料金はかかりません。同一リージョン内でのAWSサービス間のデータ転送は無料ですが、リージョンをまたぐ転送やインターネット経由の転送には料金が発生します。

計算方法の具体例

料金計算は、使用するストレージクラス、リクエスト数、およびデータ転送量によって異なります。

S3 Standardの試算例: S3標準ストレージを例にとると、ストレージ100GB/月、PUT/COPY/POST/LISTリクエスト300,000件、GET/SELECTリクエスト3,000,000件、データ転送受信100GB/月の試算で、約$13.91/月と計算された例があります。

セキュリティとアクセス管理

S3のアクセス制御は、データの安全な保管と管理のために重要であり、主に以下の3つの方法で管理されます。

1. IAMポリシー(Identity and Access Management): AWSユーザーやロールに対してアクセス制御を定義します。他のAWSリソースへのアクセスにも適用できるため、AWS全般のセキュリティ管理に役立ちます。

2. バケットポリシー: JSON形式のポリシー文書で、バケット単位でのアクセス制御を行います。特定のIPアドレスからのアクセス許可など、バケットレベルの詳細な制御が可能です。

3. ACL(Access Control List): オブジェクトレベルでの細かいアクセス権限の設定が可能です。しかし、一般的にはより柔軟でシンプルなポリシー(バケットポリシーやIAMポリシー)の使用が推奨されており、新しいバケットではACLが無効化される設定(バケット所有者強制)がデフォルトとなっています。

アクセス管理のベストプラクティス

公開設定のベストプラクティスとして、「ブロックパブリックアクセス」オプションの活用が推奨されています。これは、意図しないデータの公開を防ぎ、情報漏えいのリスクを最小限に抑えるために、新しいバケットでデフォルトで有効化されている設定です。最小権限の原則に基づき、必要な操作にのみアクセス権を付与するよう、IAMポリシーを細かく設定することが重要です。

S3の高度な機能:バージョン管理とライフサイクル

S3は、データの保護とコスト効率化を実現するための高度な管理機能を提供しています。

バージョン管理(Versioning)

バケットのバージョニング機能を有効にすると、オブジェクトを更新するたびに新しいバージョンが作成され、現行と過去のバージョンを保持できます。これにより、誤ってオブジェクトを削除したり上書きしたりした場合でも、過去のバージョンからデータを復元することが可能です。

ライフサイクルポリシー

データストレージの利用コストを最適化するために活用されます。ライフサイクルを設定することで、オブジェクトを自動的に別のストレージクラスへ移行したり、一定期間経過後に自動削除したりすることが可能です。

    ◦ 実装例:例えば、「アップロードから30日後にStandard-IAクラスに移行し、1年後にGlacierクラスに移行、3年後に削除」といったポリシーを設定できます。

クロスリージョンレプリケーション(CRR)

異なるリージョンにあるバケットへデータを非同期的に複製する機能です。災害などによるリージョン単位の障害時にデータ損失を防ぐことができ、効果的な災害対策(DR)として利用可能です。

データガバナンス

S3はデータ分析のデータレイク層としても使われます。データ分析においては、データガバナンスが重要であり、以下が密接に関わります。

1. データ保護:バージョニングやクロスリージョンレプリケーションは、データの整合性を保ち、悪意のある削除や改ざんからデータを守ります。また、S3 Object Lock(オブジェクトロック)は、WORM(Write-Once-Read-Many)モデルを使い、設定した期間、オブジェクトの削除や上書きを防ぎ、コンプライアンス要件の達成を支援します。

2. コスト管理:ライフサイクルポリシーを活用することで、アクセス頻度が下がったデータを低コストのストレージクラス(Glacierなど)に自動移行し、長期的なコスト管理を効率化できます。

3. データ分析基盤の効率化:データレイクとしてS3を使用する場合、ライフサイクル管理により古いデータを適切にアーカイブすることで、分析対象データの効率的な管理が可能になります。

PowerBI/Tableauとのデータ連携

S3をデータレイクとして利用している場合、保存されたデータを分析基盤に連携することが可能です。サードパーティ製のBIツール(PowerBIやTableauなど)でS3上のデータを分析するには、通常、S3を直接クエリできるAWSの分析サービスを介して接続します。

Amazon Athenaの活用:AthenaはS3上のCSVやParquetなどのファイルに対してSQLで直接クエリを実行できるため、BIツールがAthenaのエンドポイントを介してS3上のデータにアクセスする構成が一般的です。

S3 Selectの活用:S3 Selectを利用することで、大規模なデータセットから特定のデータのみを効率的に検索・フィルタリングし、データ転送量を削減しながら分析ツールに取り込むことが可能です。

S3に関するトラブルシューティング

S3の利用において、トラブルやエラーにつながりやすいポイントと対策を理解しておくことが重要です。​

エラー種類原因解決策
バケット削除エラー バケット内にオブジェクトが残っている全てのオブジェクトを削除後、空バケットを確認して再試行。ライフサイクルポリシーで自動削除を設定。
アクセス拒否 (403エラー) ​​IAMポリシー、バケットポリシー、ACLの不整合。「ブロックパブリックアクセス」設定の影響ポリシー設定をIAMコンソールで検証。公開ブロックを一時解除しテスト後、再設定。
APIリクエスト過多・高コスト ​頻繁なGET/PUT呼び出しキャッシュ(CloudFront活用)、バッチ処理導入、リクエスト削減設計を適用。
バッチオペレーション失敗 IAMロールに必要な権限不足ロールポリシーにS3バッチ実行権限を付与。実行ログで詳細エラー確認。
まお
まお

これらの対策を実践前にAWSコンソールのログ(S3アクセスログ有効化)を確認すると効果的です。

まとめ

AWS S3は、容量無制限かつ99.999999999%の高い耐久性を持つスケーラブルなオブジェクトストレージサービスです。データ保存、バックアップ、データレイク、静的Webサイトホスティングなど、幅広い用途に対応します。

S3は、データのアクセス頻度に応じてIntelligent-TieringGlacierといった多様なストレージクラスを提供しており、ライフサイクルポリシーと組み合わせることで、コスト効率の高いストレージ管理を実現できます。

セキュリティ面では、IAM/バケットポリシー/ACLによるアクセス管理に加え、SSE-S3/KMSによる暗号化機能や、ブロックパブリックアクセスによる意図しない公開の防止が可能です。

コメント

タイトルとURLをコピーしました