S3について

S3の概要

AWSストレージサービス

AWSは3つの形式のストレージサービスを提供

◾️ブロックストレージ  ・EC2にアタッチして活用するディスクサービス  ・ブロック形式でデータを保存  ・高速、広帯域幅  ・EBS、インスタンスストア

◾️オブジェクトストレージ  ・安価かつ高い耐久性をもつオンラインストレージ  ・オブジェクト形式でデータを保存  ・S3、Glacier

◾️ファイルストレージ  ・複数のEC2インスタンスから同時にアタッチ可能な共有ストレージサービス  ・ファイル形式でデータを保存  ・EFS

Simple Storage Service(S3)

ユーザーがデータを容量制限なく保存可能なマネージド型で提供されるオブジェクト型ストレージ

◾️特徴 ・高い耐久性  99.999999999%

・安価なストレージ  容量単価:月額1GB / 約3円

・スケーラブルで安定した性能  データは冗長化されていて保存されデータ容量に依存しない性能がAWS側で保証される

・暗号化  転送中や保存時にデータを暗号化可能

◾️データ保存形式 ・バケット  オブジェクトの保存場所  名前はグローバルでユニークな必要あり

・オブジェクト  S3に格納されるファイルでURLが付与される  バケット内オブジェクト数は無制限   ・データサイズ  データサイズは0KBから5TBまで保存可能

S3のオブジェクト構成

・Key  オブジェクトの名前であり、バケット内のオブジェクトは一意に識別する

Value  データそのものであり、バイト値で構成される

・バージョンID  バージョン管理に用いる

メタデータ  オブジェクトに付随する属性の情報

・サブリソース  バケット構成情報を保存および管理するためのサポートを提供  例:アクセス制御リスト(ACL

S3の用途に応じてストレージタイプを選択する

◾️STANDARD ・複数箇所にデータを複製するため耐久性が非常に高い

◾️STANDARD-IA ・スタンダードに比べて安価 ・データの読み出し容量に応じた課金

◾️One Zone-IA ・アクセス頻度は低いが、必要に応じてすぐに取り出すデータむけ

◾️RRS ・Reduced Redundancy Storage低冗長化ストレージ ・Glacierから取り出したデータ配置など

◾️Amazon Glacier ・最安のアーカイブ用ストレージ ・データ抽出にコストと時間(3〜5時間)を要する ・ライフライクルマネジメントで指定 ・ボールロック機能でデータを保持

S3 Intelligent-Tiering

低頻度アクセスのオブジェクトを自動的に低頻度アクセス層に移動することでコストを削減する

S3の整合性モデル

S3は高い可用性を実現するため、データ更新・削除には結果整合性モデルを採用 同時書き込みはタイムスタンプ処理を実施

◾️新規登録 ・Consisitency Read ・登録後即時にデータが反映される

◾️更新 ・Eventual Consistency Read ・更新直後はデータ反映に時間がかかる

◾️削除 ・Eventual Consistency Read ・削除直後はデータ反映に時間がかかる

S3のアクセス管理

◾️IAMポリシー  ・IAMユーザー / サービスに対してS3サービスへのアクセス権限を設定することができる  ・一元的にユーザーへのアクセス権限を管理

◾️バケットポリシー  ・バケットへのアクセス権をJSONで設定  ・他アカウントへの許可も可能  ・バケット単位の高度なアクセス管理向け

◾️ACL  ・バケットと個々のオブジェクトへのアクセス権限をXMLで設定する  ・他アカウントへの許可も可能  ・簡易的にアクセス管理向け

◾️著名付きURL  ・AWS SDKで生成した著名付きURLでS3のオブジェクトへの一定時間アクセスを許可

S3の暗号化

◾️SSE-S3  ・S3の標準暗号化方式で簡易に利用可能  ・暗号化キーの作成、管理をS3側で自動で実施  ・ブロック暗号の1つである256ビットのAdvanced Encryption Standard(AES-256)を使用してデータを暗号化

◾️SSE-KMS  ・AWS KMSに設定した暗号化キーを利用した暗号化を実施  ・ユーザー側でAWS KMSを利用して暗号化キーを作成、管理することが可能  ・クライアント独自の暗号キーを利用可能

◾️SSE-C  ・ユーザーが指定したキーによるサーバー側の暗号化(SSE-C)を使用することが可能  ・利用設定や管理がになるのがデメリット

◾️クライアントサイド  ・クライアント側の暗号化ではAmazon S3に送信する前にデータを暗号化する方式  ・AWS KMSなどを利用して暗号化キーを作成、実施  ・アプリケーション内に保存したマスターキーを使用

S3アクセスアナライザー

アクセスポリシーに沿っているかを確認し、不正なアクセスが発生していないかアクセスポリシーを監視する機能

・IAMアクセスアナライザーに連動したS3向けの機能 ・バケットポリシー / ACLのモニタリング ・パブリックまたは共有バケットアクセスを検出 ・バケットポリシー、バケットACL、またはその両方  バケットアクセスのソースを検索して確認する場合は、この列の情報をまず使用して迅速で正確な訂正措置を実行する ・全てのパブリックバケットと共有バケットの結果を表示する ・バケットの実際のアクセス状況を確認する

ライフサイクル管理

バケット内のオブジェクト単位でストレージクラスの変更や削除時期などを設定することで実行を自動化する

設定方法 ・バケット全体やPrefixに設定 ・オブジェクト更新日を基準にして日単位で指定し、毎日0:00UTCにキューを実行 ・最大1000ルール ・IAに移動できるのは128KB以上のオブジェクト ・MFA Deleteが有効だと設定不可

レプリケーション

リージョン間を跨ぐクロスリージョンレプリケーションにより耐障害性を高める

◾️レプリケーションのトリガー  ・バケットに対するオブジェクト作成、更新、削除をトリガーにレプリケーションを実行する

◾️設定  ・バージョニング機能を有効にする  ・バケットは各別リージョンを指定  ・双方向レプリケーションも可能  ・データ転送費用が発生

バージョン管理

ユーザーによる誤操作でデータ削除などが発生してもバージョンから復元できる

設定 ・バケットをバージョン管理する ・バージョン保管されたオブジェクトを参照可能 ・ライフサイクル管理によって保存する期間の指定も可能 ・バケット削除時に古いバージョンの別途削除が必要

バックアップ

Glacierを利用してバックアップと復元が実施可能 ◾️アーカイブ  ・複数リージョンでレプリケートすることが可能  ・S3オブジェクトデータをライフライクル設定によりGlacierに移動

◾️リストア  ・バージョン管理機能によって削除されたデータを復元するのが基本

利用状況の確認

◾️S3の分析 ・データのアクセスパターンの簡易可視化 ・CSV形式で出力可能 ・バケット内の分析を実施 ・アクセス頻度の低いデータや保存期間を確認してライフライクルポリシー設定に活かしていく

◾️S3のイベント通知 ・バケット内イベントの発生をトリガーにして、SNS / SQS / Lamdbaに通知設定が可能 ・シームレスなシステム連携処理を実現

S3データの解析

◾️S3 Select(Glacier Select) ・S3の内部機能として有している検索機能でS3内で直接にクエリを実行し、データを取得できる ・GZIP圧縮データやCSVJSONに対して実行可能

◾️Amazon Athena ・Amazon S3内のデータを直接、簡単に分析できるようにするインタラクティブなクエリサービス ・Athena SQLクエリでSageMaker機械学習モデルを呼び出し、機械学習による推論も実行可能

◾️Amazon Macie ・機械学習によりAmazon S3の機密データを検出、分類、保護する、フルマネージド型サービス ・機密データ検出や調査を実施する

◾️Amazon Redshift Spectrum ・Amazon S3の格納データに対して、Amazon Redshiftから直接クエリを実行できる機能 ・Redshiftクラスターが起動されている前提であるため、Redshiftを利用している場合にお勧め

CORS

クロスリージョンリソースシェアリング(CORS)により、特定のドメインにロードされたアプリケーションが異なるドメイン内のリソースと通信する方法を定義

マルチパートアップロード

大容量オブジェクトをいくつかに分けてアップロードする機能

バッチオペレーション

S3オブジェクトの大量データに対して一括処理を実行することが可能

◾️ジョブ ・ジョブはS3バッチオペレーションの機能の基本単位で、ジョブを作成することでバッチオペレーションを作成 ・ジョブにはオブジェクトのリストに対して指定された操作を実行するために必要な全ての情報を登録 ・S3バッチオペレーションにオブジェクトのリストを渡し、それらのオブジェクトに対して実行するアクションを指定

◾️マニフェストマニフェストAmazon S3が作用するオブジェクトキーをリストするAmazon S3オブジェクト

マニフェストオブジェクトキー、ETag、およびオプションでバージョンIDを指定

・AmazonS3インベントリレポート / CSVファイルの2つの形式で設定

S3の用途

大量データを長期保存するという観点から用途を検討する

・コンテンツ配信 ・ログ、バッチの保管場所 ・バックアップ / ディザスタリカバリ ・webの静的ホスティング ・データレイク

S3外部接続

AWS Storage Gateway

標準的なストレージプロトコルを利用して外部システム環境とAWSのストレージサービスとを接続するサービス

利点

AWSが有する機能や性能を活用できることが大きな利点 ・標準的なストレージプロトコルを活用したシームレスな統合 ・キャッシュを活用した低レイテンシなアクセスが可能 ・AWSストレージサービスの堅牢性、低コスト、拡張性 ・効率的なデータ転送 ・AWSのモニタリング、管理、セキュリティとの統合

用途

データ移転や保存などAWSストレージを利用したい場合に用いる ・ビックデータ処理 / クラウドバースティング / システム移行のためにデータをAWSストレージに移動させたいケース ・バックアップ、アーカイブ、災害対策としてAWSにデータを保持 ・オンプレミス環境で容易にAWAストレージを活用

Storage Gatewayのタイプ

利用するデータタイプに応じて3つのゲートウェイを利用する

・ファイルゲートウェイ  Amazon S3オブジェクトにStorage Gatewayを経由してファイルデータを格納

・ボリュームゲートウェイ  AmazonS3およびEBSsnapshotsをバックエンドとしたブロックストレージ

・テープゲートウェイ Amazon S3とGlacierにデータを保管する仮想テープストレージとVTL管理

ファイルゲートウェイ

オンプレミスのファイルデータをAWS Storage Gateway経由でAmazon S3上のオブジェクトとして格納

・仮想アプライアンスNFS v3 / V4.1のインターフェースを提供 ・更新データは非同期でAWSに転送 ・ファイルとオブジェクトのマッピングは1対1 ・S3のライフサイクルポリシー / バージョニング / クロスリージョンレプリケーションなどが利用可能

ボリュームゲートウェイ

オンプレミス環境のディスクデータをAWS Storage Gateway経由でSnapshotとしてAmazon S3上に取得し、AWS環境のDisaster Recoveryを実現

iSCSIブロックストレージとしてインターフェースを提供 ・オンプレミスのローカルディスクのバックアップを自動的にAWS側で実施 ・更新データは非同期でAWSに転送 ・オンプレミス側のStorage Gatewayへリストア ・AWS上でEBSディスクへのリストアも可能

テープゲートウェイ

Storage Gatewayを仮想テープライブラリとして利用することで堅牢性の高い外部保管バックアップストレージを実現

・VTL(Virtual Tape Library)対応バックアップソフトウェアを利用し、Storage Gatewayを経由してバックアップデータをS3およびGlacierに格納

・オンプレミスおよびAWSのEC2環境で利用可能

・バックアップソフトウェアによりテープ取り出しオペレーションを行うことで安価なアーカイブストレージ(S3 / Glacier)を利用

・主要なバックアップソフトウェアをサポート

S3 Transfer Acceleration

クライアントとS3バケット間で長距離に渡るファイル転送を高速、簡単、安全に実行

・中央のバケットに対して世界中のお客様からアップロードが行われる

・大陸間で定期的にギガバイトからテラバイト単位のデータを転送する

・AmazonS3へのアップロード時にインターネット経由で利用可能な帯域幅を十分に活用できない

Amazon S3 Glacierの概要

バックアップなど中長期保存用のS3よりも安価なストレージ

・S3と同じ耐久性で値段が安い ・データ取得などの迅速性がない

Glacierの特徴

バックアップなど中長期保存用のS3よりも安価なストレージ ・Amazon S3 Glacierではデータはアーカイブに保存される ・1つのアーカイブの最大サイズは40TB ・保存可能なアーカイブ数とデータ量に制限なし ・各アーカイブには作成時に一意のアーカイブIDが割り当てられ、作成後はアーカイブを更新できない ・アーカイブを保存するためのコンテナとしてボールドを使用(1つのAWSアカウントでは最大1,000個のボールドを使用) ・Advanced Encryption Standard(AES)256ビット対象鍵を使用してデフォルトで自動的に暗号化 ・S3と違って直接データをアップロード、取得という処理ができないため、S3ライフライクル管理からか、プログラム処理によるアップロード / ダウンロードsが必要 ・Glacierの最低保持期間は90日

Glacierの仕組み

◾️ボールド  ・ボールドはアーカイブを格納するコンテナ  ・ボールドはリージョンに作成

◾️アーカイブ  ・アーカイブは写真、動画、ドキュメントなどの任意のデータでS3 Glacierでのストレージの基本単位  ・各アーカイブは一意のアドレスを持つ

◾️ジョブ  ・アーカイブにSELECTクエリを実行したりアーカイブを取得したり、ボールドのイベントリを取得したりする実行単位

◾️通知設定  ジョブの完了には時間がかかるため、ジョブの完了時にSNSと連携した通知設定が可能

Glacierの仕組み

アーカイブに一時的にデータをアーカイブ処理して、ボールドに長期保存するという仕組み

Glacierのデータ取り出しタイプ

◾️迅速  ・迅速取り出しでは、アーカイブのサブセットが迅速に必要になった場合に、データに素早くアクセスするモード  通常1〜5分以内で使用可能になる

◾️プロビジョニングキャパシティ  ・プロビジョンドキャパシティは、迅速取り出しの取得容量を必要な時に利用できることを保証する仕組み   ◾️標準  ・標準取り出しでは、数時間以内に全てのアーカイブにアクセスできるデフォルト設定  通常、標準取り出しには3〜5時間で完了

◾️大容量  大容量取り出しは、最も安価な取り出しオプションであり、大量のデータ(ペラバイトのデータを含む)を1日以内に低コストで取得できる  通常、大容量取り出しは5〜12時間で完了

アクセス管理

◾️IAMポリシー  ・IAMユーザーやリソースに対してS3サービスへのアクセス権限を設定する  ・一元的にリソースへのアクセス権限を管理

◾️ボールドポリシー  ・ボールドで直接アクセスポリシーを定義して、組織内のユーザーや社外ユーザーに対してもボールドへのアクセス権限を設定する

◾️データ取り出しポリシー  ・データ取り出しに関する制限を定義  ・無料利用枠のみに制限   または無料利用枠を超える量を取り出したい場合は、最大取得率を指定すると、取り出し速度を制限して取り出しコストの上限を設定

◾️ボールトロックポリシー  ・ロックによって変更を禁止することによりコンプライアンス管理を強力に実施することが可能

◾️著名  ・認証保護のために全リクエストに著名が必要

Amazon Glacier

バックアップなど中長期保存用のS3よりも安価なストレージ ◾️容量あたりの料金 ・GB / 月あたり0.005USD(0.5円ほど)  S3は標準で0.025USD / One zoneで0.0152USD / GB

◾️データ取り出し料金  ・迅速:0.033USD / GB  ・標準:0.011USD / GB  ・大容量:0.00275USD / GB

◾️データ取り出しリクエスト料金  ・迅速:11.00USD / リクエスト1,000件  ・標準:0.0571USD / リクエスト1,000件  ・大容量:0.0275USD / リクエスト1,000件

◾️プロビジョニングされた迅速取り出し  110.00USD / プロビジョンド容量単位

◾️データ転送料金  ・データ転送(イン)は無料  ・インターネットへのデータ転送(アウト)は1GB / 月まで無料 それ以上は有料

Glacier Deep Archive

Glacierよりも値段が安くデータ保存が可能だが、データ取得はさらに遅くなる中長期保存用ストレージタイプ ・Glacierよりさらに値段がやすい ・Glacierよりさらにデータ取得が遅い

・基本的なデータモデル、管理はGlacierと同じ ・1GBあたりの月額料金0.00099USDから利用可能でAWSの最低価格 ・データは3つ以上のAWSアベイラビリティゾーンにまたがって保存され、S3と同様に99.999999999%の耐久性を実現 ・標準取り出しでデータは12時間以内に取り出すことが可能 ・大量取り出しで48時間以内にデータを取り出す大容量取り出しをすることで取得コスト低減出来る