ストレージ - SunHigh105/AWS_SAA GitHub Wiki
S3(頻出)
- オブジェクト形式でデータ保管
- バージョニング管理が可能
- プライベートサブネット上にバケット作成不可
ストレージクラス
- 標準
- Standard-IA(Infrequent Access)
- アクセス頻度は低いが、すぐに取り出すことが必要なデータに最適
- 高可用性
- One-Zone-IA
- こちらもアクセス頻度は低いが、すぐに取り出すことが必要なデータに最適
- 可溶性が低く重要でないデータ向け
- Standard-IAより安価
- 単一リージョンで管理のため可用性低(AZが破壊されるとデータは失われる)
- Intelligent -Tiering
- アクセスパターンの変化に応じて4つのアクセス階層間でオブジェクトを移動
ライフサイクル管理
- オブジェクトのストレージクラス移行タイミングを定義
- オブジェクトの有効期限を定義
- MFA Deleteが有効だと設定不可
S3 Transfer Acceleration
- エッジロケーションを使用してデータをS3にコピーすることで、より迅速なアップロードが可能に
- クライアントとS3バケット間で高速、簡単、安全にファイルを長距離転送できる
暗号化を使用したデータの保護
- デフォルトの暗号化方式
- SSE-S3: AES-256方式を利用
- SSE-KMS: AWSが鍵を管理
サーバサイド暗号化
- S3へデータ保存時にオブジェクトレベルで暗号化、ダウンロード時にS3側で自動復号
- 暗号化キーの管理方法
- S3が管理するキー(SSE-S3)
- KMSキー(SSE-KMS)
- 顧客提供の暗号化キー(SSE-C)
クライアント側の暗号化
- S3へデータ送信前にデータを暗号化
- 暗号化有効オプション
- KMS
- アプリケーション内に保存したキー
- .NET, Go, Java, PHP, Ruby, C++のSDKでクライアント暗号化をサポート
- AWS Encryption SDK
- 暗号化ライブラリ
- S3での暗号化プラクティスをより簡単に実装
アクセス制御
ACL
- バケットとオブジェクトのアクセス管理
バケットポリシー
- S3リソースにアクセス許可
- バケットにのみ設定
IAMユーザーポリシー
- S3へのユーザーアクセスを設定
事前署名付きURL
- オブジェクトをダウンロードする時間制限付きの権限を付与
- バケットのパブリックアクセスを許可していなくても設定できる
CORS(クロスオリジンリソースシェアリング)
- 異なるドメイン内のリソースと通信する方法を定義
パプリックアクセスのブロック
- バケットレベルまたはアカウントレベルで、全てのオブジェクトのパブリックアクセスをブロック
- 既存のバケットポリシー、アクセスポイントポリシー、オブジェクトのアクセス許可を上書き
Access Analyzer
- 任意のユーザや他のAWSアカウントにアクセス許可を設定されているS3バケットに関して警告
- リスクのあるバケットを確認した場合、ワンクリックでバケットへの全てのパブリックアクセスをブロック可能
アクセスポイント
- バケットにアタッチされた名前付きのネットワークエンドポイント
- S3の共有データセットへの大規模なデータアクセス管理を簡素化
- 複数のポリシーに基づく制御向き
- 各アクセスポイントに個別のアクセス許可とネットワークコントロールが存在
アップロード
- マルチパートアップロード
- 大容量オブジェクトを分割してアップロード
クロスリージョンレプリケーション
- 異なるリージョン間でS3オブジェクトをコピーする際に利用
- データ登録・更新・削除などのイベントをトリガーに実行される
- バージョニングの有効化が必要
S3イベント
- S3オブジェクト操作と連動したシステム連携処理
- S3で特定のイベントが発生した際通知を受け取れる
- イベント発行先
- SNSトピック
- SQSキュー
- Lambda
分析
ストレージクラス分析
- ストレージアクセスパターンを分析し、データをいつ適切なストレージクラスに移行すべきか判断
- Standard → Standard-IA移行タイミングを判断するためアクセスパターン確認
トラブルシューティング
- バージョニング有効なバケットのHTTP 503
- 数百万のバージョンを持つオブジェクトがある可能性あり。過剰なリクエストから保護するため、リクエストを自動調整
- ライフサイクル管理で以前のバージョンのオブジェクトを有効期限切れにする
- ディレクトリ構造をなるだけフラットにし、各ディレクトリ名を一意にする
その他
- パフォーマンス最大化
- (古い対応): ランダム文字列でオブジェクト名にprefixを設定
- AWS PrivateLink for Amazon S3
- VPNおよびAWS Direct Connect、またはVPCピアリング経由で(インターネットを介さず)S3に直接アクセスできる
- VPCエンドポイントタイプ
- ゲートウェイ: AWSネットワーク経由でVPCからS3にアクセスするため、ルートテーブルに指定するゲートウェイ
- インタフェース: プライベートIPアドレスを使用してVPCからS3にリクエストをルーティング
Amazon S3 Glacier
- S3より安い アクセス頻度低のファイル向け
- 保存はS3より安いが、データ取り出しがS3より高い
- 仕組み
- ボールト: アーカイブを格納するコンテナ リージョンに作成
- アーカイブ: 写真、動画、ドキュメントなどの任意のデータ 各アーカイブで一意のアドレスを持つ
- ジョブ: アーカイブを検索・取得などをする実行単位
- 通知設定: ジョブ完了時にSNSと連携した通知設定が可能
- 1アーカイブ最大40TB アーカイブ数とデータ量に制限なし
- データ取り出しタイプ
- 迅速アクセス設定: 1~5分
- プロビジョニングキャパシティ: 迅速取り出しの取得容量を予約
- 標準: 3~5時間
- 大容量: 通常5~12時間、1日以内に低コストで取得
- 迅速アクセス設定: 1~5分
- アクセス管理
- IAMポリシー
- ボールトポリシー
- データ取り出しポリシー
- ボールトロックポリシー
- 署名
- データは全てサーバ側で暗号化(S3と同じAES256)
Glacier Deep Archive
- Glacierよりもさらに安価
- データ取得はさらに遅い
- 標準: 12時間以内
- 大容量: 48時間以内
- 7~10年といった長期保存用
EBS(Amazon Elastic Block Store)
- EC2にアタッチ
- アタッチ後、利用開始にはボリュームにファイルシステムを作ることが必要
- 複数のインスタンスにアタッチする場合、インスタンスはEBSと同一AZである必要がある
- デタッチ
- 対象のインスタンスが実行中であれば、まずインスタンスを停止する必要がある
- インスタンス終了時...DeleteOnTerminate属性(デフォルトは有効)でボリュームを存続するか削除するか判断
- データ保存したいときはこの属性を非有効化するべき
ボリュームタイプ
SSD (Solid State Drive)
主要なパフォーマンス属性は IOPS I/Oサイズの小さい頻繁な読み取り/書き込みが発生するワークロード向け
- 汎用SSD
- 料金とパフォーマンスのバランスに優れている
- ほとんどのワークロードに推奨
- プロビジョンドIOPS SSD
- 低レイテンシかつ高スループットが必要なワークロード向け
- 同一AZ内の複数のインスタンスにアタッチできる
- io2
- I/O負荷の高いワークロードに最適
- 最大64,000IOPS、1,000MB/秒のスループット
- io2 Block Express
- 最大スループット4,000MB/秒
HDD (Hard Disk Drive)
主要なパフォーマンス属性は スループット 大規模なストリーミングワークロード向け
- スループット最適化HDD
- 高いスループットを必要とするアクセス頻度の高いワークロード向け
- 低コスト
- ボリュームあたりの最大スループット: 500MB/秒
- EMR, DWHなどサイズの大きなシーケンシャルワークロードに最適
- コールドHDD
- アクセス頻度低に最適
- 最も低コスト
- ボリュームあたりの最大スループット: 500MB/秒
- マグネティックボリューム ※旧世代ボリューム
- アクセス頻度低い、あるいはパフォーマンスの一定性が重要でない場合向け
- 比較的小さいデータセットのワークロード向け
- 平均100IOPSを実現 1GBから1TBまでサポート
補足: IOPSとスループットの違い
- I/O(Input/Output): ディスクへのアクセス回数
- IOPS(I/O Per Second): 1秒あたりにディスクが処理できるI/Oアクセス数
- スループット: 1度のI/Oで読み取れるデータ量
暗号化
- 既存ボリュームの暗号化は不可
- KMSを使った暗号化のみ使える
- スナップショット作成→EBS暗号化を有効してコピー→ボリューム新規作成
スナップショット
- 利用状況に関係なく非同期に作成可能
- リージョン跨いでコピーできる
- DLM (Data Lifecycle Manager)
- EBSのスナップショット作成、保存、削除を自動化
RAID構成
従来のベアメタルサーバで使用できる標準のRAID構成を使用できる
- RAID 0
- 複数のディスクを1台のディスクのように扱い、読み書きを高速化
- 高いI/Oパフォーマンスが必要な場合向け
- RAID 1
- 2つのボリュームを同時にミラーリング
- 冗長性を高めたい場合向け
EBSボリュームのパフォーマンス
- EBS最適化インスタンスを使用
- RAID 0を使用してインスタンスのリソース使用率を最大化
- 複数のボリュームをRAID 0で結合 1台のディスクのように使う
インスタンスストア
- EC2用一時ストレージ 無料
- EC2を停止または終了すると、デバイス上のデータは全て失われる
Amazon FSx for Windowsファイルサーバ
- フルマネージド型のネイティブMicrosoft Windowsファイルシステムを提供
- ACLs(Access Control Lists)、シャドウコピー、ユーザクォータなど
- 高速 最大2GB/秒のスループット、数百万のIOPS、一貫したms単位レイテンシ
- SMBプロトコルを使用
EFS(Amazon Elastic File System)
- 複数のEC2インスタンスから利用できる
- アクセスにはマウントターゲットが必要
- AWS DataSyncでEFSへファイル移動できる
- NFSv4プロトコルを使用
- 10GB/秒を超えるパフォーマンス、50万超のIOPS
パフォーマンスモード
- 汎用モード
- レイテンシが最も低い
- 1秒あたりのファイルシステム操作が7000に制限
- 最大I/Oモード
- 何十〜何千のクライアントからの同時アクセスが必要な場合向き
- レイテンシが多少長くなる
スループットモード
- バーストモード
- スループットはデータ量が大きくなるにつれ上昇
- プロビジョニングモード
- デフォルトのバーストモードより高い専用スループットを必要とするアプリケーションをサポート
- ファイルサイズによらず一貫したスループットを事前に設定できる
Amazon FSx for Lustre
- スーパーコンピュータなどに利用
AWS Storage Gateway
- オンプレミスとAWS環境間のハイブリッドストレージ
- 標準機能で暗号化を提供
- ボリューム
- キャッシュ型ボリューム: 頻繁にアクセスするデータ向け データをS3に保存、最近読み込まれたデータはオンプレミスのストレージゲートウェイのキャッシュに保存
- 保管型ボリューム: プライマリデータをローカルに保存 + データを非同期でS3にバックアップ
- ゲートウェイ
- ファイルゲートウェイ
- ボリュームゲートウェイ
- テープゲートウェイ: VTL(Virtual Tape Library)
Amazon Athena
- 特定のデータ検出とSQLクエリ実行のために利用
- SQLクエリでS3のデータを分析できる
Amazon S3 Select
- S3バケットのオブジェクト内のデータを迅速かつ安価に分析及び処理
- 単純なSQL式でオブジェクトからデータのサブセットを取得
- 例: バケット名とオブジェクトの操作に基づいてファイル内の必要なデータのみクエリ
- 簡単なデータ検索/抽出向け
AppSync
- GraphQL API の開発を容易にする、完全マネージド型サービス
- AWS DynamoDB や Lambda、その他のデータソースとの安全な接続に必要な作業を自動的に処理
- リアルタイム処理機能を実装できる
AWS Backup
- AWSサービス全体でバックアップを集中管理及び自動化
- ブロックストレージ、データベース、S3など多岐にわたる
- バックアップスケジュール、保存管理、ライフサイクル管理を自動化できる
AWS Lake Formation
- 安全なデータレイクを数日で簡単にセットアップ可能
- データベースとオブジェクトストレージからデータを収集およびカタログ化し、S3に移動