【AWS】Amazon S3について

# はじめに
AWS認定試験取得に向けてAWSの知識を整理するためのまとめです。
今回はS3についてまとめます。

# Amazon S3とは
AmazonS3とは、AmazonSimple Storage Serviceの略です。
99.999999999%(9x11)の耐久性があり、AWSで一番可用性の高いストレージサービスです。
認定試験などで高耐久性、高可用性を求められる場合はS3を視野に入れるとよいです。

データのバックアップや、EC2にマウントしてストレージとして使ったり、
静的なWEBサイト、データレイクなどの目的でも利用可能です。

アップロードする1ファイル(1オブジェクト)当たりのサイズは0～5テラバイトとなっています。
容量制限はありません。

# S3の機能
S3で提供されている機能についてまとめます。
（2021/7/19時点ではまだ一部のみ）

## S3バージョニング
S3に保存したオブジェクトのすべてのバージョンの保持、取り出し、復元を簡単に行えます。
何らか障害が発生しても復元が可能です。
例えば誤ってデータを削除してしまっても以前のバージョンから復元が可能となります。

## S3レプリケーション
同一もしくは異なるリージョンでオブジェクトをレプリケート(複製)することができる機能です。
別のアカウントとオブジェクトを共有したり、物理的に異なる場所へデータを保存することで、
特定のコンプライアンス要件を満たす場合などに有効です。
耐障害性を高めることができます。
双方向レプリケーションも設定可能です。
（通常はレプリケーション元で更新した場合、レプリケーション先は更新され、
　逆にレプリケーション先で更新してもレプリケーションもとは更新されません。
　レプリケーション先で更新した場合もレプリケーション元のデータを更新する機能が双方向レプリケーション）

## ライフサイクル
オブジェクトを効率よく保存するために利用するものです。
ライフサイクルには2種類のアクションがあります。
・移行アクション
　オブジェクトを別のストレージクラスへ移行するタイミングを定義します。
　例えば作成から30日はS3 標準-低頻度アクセスへ移行するや、
　作成から1年後にS3 Glacierへ移行するなど。
・失効アクション
　オブジェクトに対して有効期限を定義します。
　有効期限が切れたオブジェクトは自動で削除されます。

## データの検索、分析
### S3 Select (Glacier Select)
S3上のCSV、Jsonファイル（GZIPで圧縮されていてもok）に対して、クエリを実行できます。
ファイル内からクエリに合致するデータをデータを取得可能です。

### Amazon Athena
分析サービス　Amazon Athenaを組み合わせた利用も可能です。
S3 Selectより複雑なクエリの実行、分析が可能です。

### Amazon Redshift Spectrum
Amazon Redshiftの拡張機能となります。
Amazon Athenaと同様のことができます。
既存でAmazon Redshiftを利用している場合は、こちらのサービスを選択すると良いです。

# セキュリティ
## Amazon Macie 
S3 に保存されている機密データを検出、保護することができます。

# ストレージクラス
S3では様々な用途に対応したストレージクラスがあります。

| ストレージクラス |特徴| 用途  |
|:--|:--|:--|
|S3標準|常にアクセス可能な状態となります。<br>スタンダードなストレージです。|アクセス頻度が高いデータ向けです。<br>・WEBサイト<br>・クラウドアプリケーション<br>・コンテンツ配信等|
|S3 Intelligent-Tiering|アクセス頻度により4つのアクセス階層に分け、オブジェクトごとのアクセス状況に応じて割り振ります。<br>アップロードされたファイルは自動的に高頻度アクセス階層に保存されます。(S3標準)<br>30日間連続してアクセスされなかったら低頻度アクセス階層へ移動します。(S3標準)<br>90 日間連続してアクセスされなかったらアーカイブアクセス層に自動的に移動します。<br>180 日間連続してアクセスされなかったらディープアーカイブアクセス層に移動します。<br>そのためデータのストレージコストを自動的に最適化できます。|新しく構築したアプリケーションでアクセスパターンが不明な場合や、データレイクのようにアクセス頻度が予測できない場合などに適しています。|
|S3 標準-低頻度アクセス|S3 標準と同じ高い耐久性、高スループット、低レイテンシーのパフォーマンスです。|S3標準よりアクセス頻度が低いと予測できる場合に適しています。|
|S3 1 ゾーン - 低頻度アクセス|S3標準などは複数のアベイラビリティゾーンにデータを保存しますが、S3 1ゾーンは名前の通り1つのAZにデータを保存します。そのためコストを削減できます。S3標準よりは可溶性が落ちます。|オンプレミスデータまたは、容易に再作成が可能なデータセカンダリバックアップのコピーを保存するのに適しています。|
|S3 Glacier|セキュアで耐久性の高い低コストのストレージクラスです。<br>3種類のデータ取り出しオプションが用意されています。<br>迅速：1～5 分以内に使用可能となります。<br>標準：3～5 時間以内に使用可能となります。<br>大容量：5～12 時間以内に使用可能となります。|データのアーカイブや長期バックアップに適しています。|
|S3 Glacier Deep Archive|S3 Glacier同様、セキュアで耐久性の高い低コストのストレージクラスです。<br>2種類のデータ取り出しオプションが用意されています。<br>標準：12時間以内に使用可能となります。<br>大容量：42時間以内に使用可能となります。|1 年に1,2 回程度しかアクセスされないようなデータの長期保存に適しています。|


# S3の料金
最低料金設定はなく、基本的に実際使用した分支払う従量課金制です。
ストレージクラスごとに料金が異なります。
コスト要素としては
・ストレージ料金
・リクエストとデータ取り出しの料金
・データ転送と転送高速化の料金（データのアップロードは無料。）
・データ管理機能および分析機能の料金
・レプリケーションの料金
・S3 Object Lambda でデータを処理するための料金

ストレージ料金については、下記のような順番となります。
S3 標準 > S3 標準 - 低頻度アクセス > S3 1 ゾーン - 低頻度アクセス > S3 Glacier> S3 Glacier Deep Archive 
（東京リージョン 2021/7時点）


# 参考サイト
AWS Amazon S3
https://aws.amazon.com/jp/s3/?nc=sn&loc=0

AWS サービス別資料（S3）
https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-service-cut/

Classmethod DeveloperIO
https://dev.classmethod.jp/articles/https-dev-classmethod-jp-articles-200526-cost-optimization-faq/
https://dev.classmethod.jp/articles/https-dev-classmethod-jp-articles-200526-cost-optimization-faq/