S3とは

##概念
S3（Simple Strage Service）
オブジェクトストレージ
・HTTPSのプロトコルで通信する
・他ストレージ(EBS, EFS)より読み書きが**遅い**
・多数の大きなファイルを取り扱うのに向いている
・APIを使用した開発が容易
・安価で耐久性が高い
　　1GBあたり約3円(クラスによって変わる)

・保存容量に上限なし
　　一つのデータファイルが5TBまで

・自動で冗長化してデータを保存する
　　格納されたオブジェクトを同一リージョン内の複数のデータセンターに
　　同一オブジェクトが分散されて格納されます。

https://aws.amazon.com/jp/s3/

##ルール

※名称が独特な点に注意
![S3_1.010.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207512/9b086971-3887-fbe6-ebbb-1d1dd7298d9f.jpeg)

##セキュリティ
S3作成後、デフォルトではアカウント管理者及びルートユーザーのみアクセス可

S3のバケットに直接IAMポリシーを埋め込み、権限管理ができる(バケットポリシー、リソースベースのポリシー)
→ 特定IPアドレスのみ許可などの接続制限

![S3_2.003.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207512/ae95fcdc-5b7a-842c-2301-e016957953a7.jpeg)

ここでは
Principal=全てのユーザーが
Action=s3のバケットを参照できるリスト
Resource=対象のバケットを指定
Condition=接続できるIPアドレスが"12.34.56.78"のみに制限している

頭文字をとってPARC(パーク)を指定することでS3のアクセス権を細かく制限できる

[IAMポリシーの詳細]
(https://qiita.com/tr76aquarius/private/dbf267e78a5ad40a46ca#%E8%A9%B3%E7%B4%B0)

**[ACL](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-network-acls.html)を設定できる(アカウント単位、バケット単位、オブジェクト単位)**

![S3_2.005.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207512/a8deb13e-f83a-36ab-f014-834064b106ea.jpeg)

アカウント単位で世界中からの通信をブロックできる機能
画像の例では全部オフになっているが、オンにするとブロックが起動する。
上から
・新規にファイルを公開状態でアップロードされることを防止する
・既に公開設定にあるバケットやファイルを非公開状態で上書きする(設定を上書きする)
　　例: 既に運用していてどのオブジェクト、どのバケットが公開状態かわからないので一括で非公開状態にしたい時役立つ
・リソースベースのポリシーを編集時公開設定なるのを防止する機能
・リソースベースのポリシーで公開状態になったとしてもアクセスを禁止する事ができる。また、他アカウントからのサクセスも禁止する

![S3_2.006.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207512/6847b83f-8ed5-7667-cc2d-295645de8aa8.jpeg)

この大まかな4つの設定をバケット単位でも設定できる

![S3_2.007.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207512/a442157f-3bc0-261a-7a65-6c1e24cf1d44.jpeg)

オブジェクト単位でパブリックからのアクセスに対する読み取りや、ACL設定の読み込み・書き込みの権限を付与するか設定できる

##Webホスティング機能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207512/edbddcdf-77af-623c-d65b-fd2824c8d757.png)
各オブジェクトに一意のHTTPURLが関連付けられる
例: index.htmlという名前のhtmlファイルをオブジェクトとしてS3バケットを配置し、パブリックに読み取り権限を付与してホスティング機能をONにすることで、エンドポイントURLというのが割り振られるのでユーザーはこのエンドポイントURLに対してアクセスする事で直接Webページを参照できる。

##イベント通知機能
S３にファイルを置いたことをトリガーとし、様々なAWSサービスと連携して呼び出せる機能。
ファイルをアップデートした時だけでなく、削除した時をトリガーに設定したりイベントの検知は様々あります。

##ストレージクラス
どの程度使用するかの使用頻度で最適なクラスが分けられている。
デフォルトだと標準クラスに割り当てられる
![S3_2.010.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207512/d6bb9363-774b-6323-cbe2-204ddfa2aa70.jpeg)

###Amazon S3 Intelligent-Tiering (S3 Intelligent-Tiering)
アクセスパターンが変化したときに 4 つのアクセス階層の間でオブジェクトを移動することで、自動的にコストを削減する唯一のクラウドストレージクラスです。保存するデータが予測不能なアクセスパターンを持っている場合は、S3 Intelligent-Tieringを利用することで最適なストレージ利用を自動化することができます。

##バージョニング
バケット単位で有効にすると誤ってオブジェクトを削除しても、簡単に復元できる機能
実際には完全に削除されず、S3によって削除マーカーというものが付与されて削除されない仕組みとなっている。
バージョニング機能はデフォルトではオフとなっている。

##ライフサイクルマネジメント
期間を指定して、その期間を経過したらストレージクラスを移動するという、期間によってのアクションを設定できる

ライフサイクルポリシーの設定はバケット内のオブジェクトのライフサイクルを管理できる。オブジェクトをS3ストレージからAmazon Glacierへ移動するのに使用される機能は、そのグループに対してルールを設定する。

###Amazon Glacier
アクセス頻度の低いデータのアーカイブと長期バックアップのための安全で耐久性が高く低コストなストレージです。
S3と比較してデータ保管にかかるコストを大幅に抑えることができますが、データの取り出しの際には費用がかかります。
取り出しオプションは以下のものがあります。
迅速 — 迅速取り出しではデータが必要になった場合、すばやくアクセスできます。通常 1〜5 分以内で使用可能になります。
標準 — 標準取り出しでは、数時間以内にすべてのデータにアクセスできます。通常、標準取り出しは 3〜5 時間で完了します。（デフォルト設定）
大容量 — 大容量取り出しは、S3 Glacier の最も安価な取り出しオプションであり、これを使用して大量のデータ (ペタバイトのデータを含む) を 1 日以内に低コストで取得できます。通常、大容量取り出しは 5〜12 時間で完了します。

##コスト
![S3_2.012.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207512/c143dd95-a759-9400-a312-f1d5b7ed1f1b.jpeg)

**※転送料はinは無料、outは有料!**
**※GETやPOSTなどリクエストの種類によって単価が変わる(DELETEは無料)!**

##参考

この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com