AWS 勉強メモ　～S3～

●S3（Amazon Simple Storage Service）
S3はAWSの提供するオブジェクトストレージである。
データ容量・ファイル数は無制限で、配置した容量に課金される。（ただし１つのファイルは5TBまで）
データは少なくとも３つのAZに配置され、99.99999999%(イレブンナイン）の耐久性を持つ

●オブジェクトストレージとは
データを「オブジェクト」という単位で扱う記憶装置。
ディレクトリ構造で管理するファイルストレージとは異なり、データサイズやデータ数の保存制限がないため、大容量データの保存に適している。

S3ではアカウント内で「バケット」を作成し、配置するファイルを「オブジェクト」と呼ぶ。
「プレフィックス」を付けることでディレクトリのような見た目で管理できるが、実際には階層関係はない

例）
S3://ExampleAWSbucket/Logistics/packing-list.pdf

バケット名：ExampleAWSbucket
プレフィックス：Logistics
オブジェクト名：packing-list.pdf


●可用性・データ整合性
S3に配置したデータは少なくとも３つのAZに配置され、99.99999999%(イレブンナイン）の耐久性を持つ
2020年のアップデートで「強い一貫性」がサポートされ、データの更新直後でも最新の状態が取得できるようになった
※かつては「結果整合性」のみをサポートしており、データの保存・更新直後に別のプロセスから参照すると最新の内容ではない場合があった

●静的Webサイトホスティング機能
・S3にオブジェクトを配置することでURLが生成され、静的なWebサイトであればホスティングすることが可能である。
・Webサーバとして利用する場合はCloud Frontをあわせて利用することが推奨される

●高速伝送機能
・マルチパートアップロード機能を利用すると、巨大なファイルをより高速に転送することができる
・S3 Transfer Acceleration を使用すると、CloudFrontの世界中に分散したエッジロケーションを利用し
　クライアントとS3バケットの間で長距離にわたるファイル転送を高速、簡単、安全に行える

●アクセス管理
・IAMユーザ毎のアクセス許可を設定するユーザポリシー、バケット毎のアクセス許可を設定するバケットポリシー、ACL（アクセスコントロールリスト）による制御が可能
・Pre-sighned URL(署名付きURL）を利用すると、S3のプライベートなオブジェクトについて一定時間アクセス可能となる
・VPCエンドポイントを利用すると、VPCのパブリックサブネットから同一リージョンにあるS3へ接続可能（NATゲートウェイを利用する必要なし）
・削除不可なオブジェクトについてはオブジェクトをロックすることができる

●管理機能
・バージョン管理機能を利用すると、同じオブジェクトの過去にアップしたバージョンも残るため誤削除対策になる
・クロスリージョンレプリケーションを有効にすると、異なるリージョンにオブジェクトがコピーされる
　オブジェクトの更新をトリガーに非同期でレプリケーションされる。利用するためにはバージョン管理機能を有効にする必要がある。
・ライフサイクル管理機能を利用すると、オブジェクトの削除やストレージクラスの変更を自動で行うことができる

●オブジェクトストレージとは
データを「オブジェクト」という単位で扱う記憶装置。
ディレクトリ構造で管理するファイルストレージとは異なり、データサイズやデータ数の保存制限がないため、大容量データの保存に適している。

S3ではアカウント内で「バケット」を作成し、配置するファイルを「オブジェクト」と呼ぶ。
「プレフィックス」を付けることでディレクトリのような見た目で管理できるが、実際には階層関係はない

例）
S3://ExampleAWSbucket/Logistics/packing-list.pdf

バケット名：ExampleAWSbucket
プレフィックス：Logistics
オブジェクト名：packing-list.pdf


●可用性・データ整合性
S3に配置したデータは少なくとも３つのAZに配置され、99.99999999%(イレブンナイン）の耐久性を持つ
2020年のアップデートで「強い一貫性」がサポートされ、データの更新直後でも最新の状態が取得できるようになった
※かつては「結果整合性」のみをサポートしており、データの保存・更新直後に別のプロセスから参照すると最新の内容ではない場合があった

●静的Webサイトホスティング機能
・S3にオブジェクトを配置することでURLが生成され、静的なWebサイトであればホスティングすることが可能である。
・Webサーバとして利用する場合はCloud Frontをあわせて利用することが推奨される

●高速伝送機能
・マルチパートアップロード機能を利用すると、巨大なファイルをより高速に転送することができる
・S3 Transfer Acceleration を使用すると、CloudFrontの世界中に分散したエッジロケーションを利用し
　クライアントとS3バケットの間で長距離にわたるファイル転送を高速、簡単、安全に行える

●アクセス管理
・IAMユーザ毎のアクセス許可を設定するユーザポリシー、バケット毎のアクセス許可を設定するバケットポリシー、ACL（アクセスコントロールリスト）による制御が可能
・Pre-sighned URL(署名付きURL）を利用すると、S3のプライベートなオブジェクトについて一定時間アクセス可能となる
・VPCエンドポイントを利用すると、VPCのパブリックサブネットから同一リージョンにあるS3へ接続可能（NATゲートウェイを利用する必要なし）
・削除不可なオブジェクトについてはオブジェクトをロックすることができる

●管理機能
・バージョン管理機能を利用すると、同じオブジェクトの過去にアップしたバージョンも残るため誤削除対策になる
・クロスリージョンレプリケーションを有効にすると、異なるリージョンにオブジェクトがコピーされる
　オブジェクトの更新をトリガーに非同期でレプリケーションされる。利用するためにはバージョン管理機能を有効にする必要がある。
・ライフサイクル管理機能を利用すると、オブジェクトの削除やストレージクラスの変更を自動で行うことができる

●ストレージクラス
　S3 standard
   頻繁にアクセスされるデータ向け

　S3 Standard IA(Infrequent Access)
   たまにしかアクセスしないデータ向け。standard と比べストレージコストが下がるが、取り出し料・転送量がかかる

　S3 Intelligent-Tiering
   アクセスパターンに基づいてコスト効率の高いストレージ階層に自動で移動してくれる機能

　S3 One Zone-IA
   1AZしか利用しないので可用性が下がる

　S3 Glacier
   使用頻度の少ないファイルを長期的に保存（アーカイブ）するためのサービス。データを取り出す際に数時間かかる。
    ※Glacier 迅速読み取りの場合は数分

　S3 Glacier Deep Archive
   データを取り出すのに12時間かかる

ストレージクラス分析を利用すると、ストレージアクセスパターンを分析し、ストレージクラスを移動すべきオブジェクト・タイミングを判断できる