さっくり解説するAmazon S3

## はじめに
今回はS3編です。
あいかわらず用語が多いですが、なるべく分かりやすい解説をしてみようと思います。

# Amazon S3とは

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392337/6948301d-5afd-28c9-8784-3a281206db68.png)


公式ドキュメントによると、

>Amazon Simple Storage Service (Amazon S3) は、業界をリードするスケーラビリティ、データ可用性、セキュリティ、およびパフォーマンスを提供するオブジェクトストレージサービスです。あらゆる規模や業種のお客様が、データレイク、クラウドネイティブアプリケーション、モバイルアプリケーションなど、事実上あらゆるユースケースで、あらゆる量のデータを保存、保護することができます。コストパフォーマンスに優れたストレージクラスと使いやすい管理機能により、コストの最適化、データの整理、特定のビジネス、組織、コンプライアンスの要件を満たすきめ細かなアクセスコントロールの設定を行うことができます。

Amazon S3(以下、S3)はAWSが提供するオンラインストレージサービスです。

まず[オンラインストレージ](https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8)とはなにかですが、様々なデータをインターネット経由で保存することができるサービスのことです。

その中でもS3は、[オブジェクトストレージ](https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8)と呼ばれ、データをファイル単位ではなくオブジェクト単位(バケット)で扱います。
また、ファイルストレージのような階層構造(ディレクトリ)ではなく、
フラット構造で固有のオブジェクトIDを持ちます。


:::note 
S3とはAWSが提供するオブジェクトストレージサービスである。
様々なデータをインターネット経由で保存することができる。
:::

# S3の特徴

## 拡張性(Scalability)
S3は利用する容量に制限がないので、データ容量を気にする必要がありません。
(一応、保存するオブジェクトは１ファイルにつき5TBまでの制限はある)
事前に余分なリソースを確保しておく必要もなく、利用するストレージリソースを自由にスケールアップ・ダウンすることができます。

:::note
S3は容量無制限でいくらでも利用できる。
:::

## 耐久性(Durability)
耐久性とはデータを失わないことを保証する度合いのことで、
現在、S3のすべてのストレージクラスにおいて耐久性は年間で99.999999999％とされています。

:::note
S3の耐久性は、99.999999999％（11 9s イレブンナイン）と呼ばれ、
非常に優れた耐久性を実現できるよう設計されている。
:::

## 可用性(Availability)
[可用性](https://ja.wikipedia.org/wiki/%E5%8F%AF%E7%94%A8%E6%80%A7)はシステムが稼働し続けることを保証する度合いのことで、
S3 Standardの可用性は年間で99.99％とされています。(ストレージクラスによって異なります)

:::note
S3は、膨大なデータを取り扱う場合でも安全に継続的に使える。
:::

## ストレージクラス

>Amazon S3 は、ワークロードのデータアクセス、復元力、およびコスト要件に基づいて選択できるさまざまなストレージクラスを提供しています。S3 ストレージクラスは、さまざまなアクセスパターンに最低コストのストレージを提供できるように設計されています。S3 ストレージクラスは、要求の厳しいパフォーマンスニーズ、データ常駐要件、不明または変更されたアクセスパターン、アーカイブストレージなど、事実上すべてのユースケースに最適です。

S3には、その用途によって選択できる複数のストレージクラスが存在します。
ちなみにストレージクラスとは、ストレージの種類のことです。

### ・Amazon S3 Standard (標準)
S3 Standardはアクセス頻度が高いデータ向けに高い耐久性、可用性および性能を備えた汎用的なオブジェクトストレージです。

### ・Amazon S3 Intelligent-Tiering
Intelligent-Tieringはアクセスパターンが変化したり、まれにしかアクセスされないデータ向けのオブジェクトストレージです。
運営のオーバーヘッドなしで、最も費用効果的なアクセス層にデータを自動で移動して費用を最適化できます。

### ・Amazon S3 Standard – IA
頻繁にアクセスはしないデータ向け。
S3 Standardの優れた耐久性、高い処理量及び短い遅延時間を安価なGB当たりのストレージ料金とGB当たりの検索料金で提供されるオブジェクトストレージです。

### ・Amazon S3 One Zone – IA
頻繁にアクセスはしないデータ向け。
S3 Standard-IAとの違いは、最低3つの可用領域（AZ）にデータを保存する他のストレージクラスとは異なり、S3 One Zone - IAは1つのAZにデータを保存されます。
そのため、そこまで重要でないデータ向けとなり、費用もS3 Standard - IAより20%少ないです。

### ・Amazon S3 Glacier Instant Retrieval
ほとんどアクセスされない、長期間保存のデータ向けのアーカイブストレージクラスです。
S3 Standard と同じパフォーマンスのミリ秒単位でのデータの取り出しが行えます。
S3 Standard-IAと比較すると、ストレージコストを最大68%節約できます。

### ・Amazon S3 Glacier Flexible Retrieval (旧 S3 Glacier)
年に1~2回程度のアクセスで非同期で取り出されるデータ向けのアーカイブストレージクラスです。
バックアップや災害対策のユースケースなど、すぐにアクセスする必要はないものの、取得時間が数分から5~12時間許容される大量のデータを無料で取り出せる柔軟性が必要なアーカイブデータに適しています。
S3 Glacier Instant Retrievalよりも最大 10%低いコストのストレージが提供されます。

### ・Amazon S3 Glacier Deep Archive
S3 Glacier Flexible Retrievalと同じく、バックアップや災害対策のユースケースなど、すぐにアクセスする必要はないもので、こちらは取得時間が12~48時間許容され最も低コストです。
7~10年間保持されるデータ向けで、長期保存用に設計された低コストのアーカイブストレージクラスです。
公式で磁気テープライブラリの理想的な代替策と謳っています。

https://aws.amazon.com/jp/about-aws/whats-new/2021/11/amazon-s3-glacier-storage-class-amazon-s3-glacier-flexible-retrieval/


### ・Amazon S3 on Outposts
オンプレ環境であるAWS Outpostsでのオブジェクトストレージです。
S3 APIを使用して、通常のAWSリージョンでのデータアクセスとデータ利用が行えます。

#### チャートにしてみるとこんな感じです。

```mermaid
graph LR
    A{アクセス頻度は?}-- 多い -->B[S3 Standard]
    A-- 少ない -->C{もしかして</br>アーカイブデータ?}
    C-- はい -->D{データ取り出しの</br>許容時間は?}
    D-- 標準と同じ -->E[S3 Glacier Instant Retrieval]
    D-- 12時間まで -->F[S3 Glacier Flexible Retrieval]
    D-- 12時間以上 -->G[S3 Glacier Deep Archive]
    C-- いいえ -->H{データの重要度は?}
    H-- 重要 -->I[S3 Standard - IA]
    H-- そうでもない -->J[S3 One Zone - IA]
    A-- 頻度が変化する<br/>もしくは不明 -->K[S3 Intelligent-Tiering]
    L{オンプレ?}-- いいえ -->A
    L -- はい -->M[S3 on Outposts]
    N(スタート) --> L
```


:::note
S3には用途にあわせて複数のストレージクラス(ストレージの種類)が存在するので、
利用する際は最適なものを選択しましょう。
:::

https://aws.amazon.com/jp/s3/storage-classes/?nc=sn&loc=3&refid=f044c534-a689-47c3-ae52-5e4027585385

### 料金

>実際に使用した分だけお支払いいただきます。最低料金の設定はありません。データを保存および管理する際に検討すべき Amazon S3 のコスト要素は 6 つあります。ストレージの料金、リクエストとデータ取り出しの料金、データ転送と転送高速化の料金、データ管理機能および分析機能の料金、レプリケーションの料金および S3 Object Lambda でデータを処理するための料金です。

ざっくりまとめると、
・ストレージ保存容量
・リクエスト数
・データ転送(S3へのデータ転送受信は無料)
・バケットで有効になっているストレージ管理機能と分析
・レプリケーション(リアルタイムデータ複製)
・[S3 Object Lambda](https://aws.amazon.com/jp/s3/features/object-lambda/
)(S3から取得するデータに対して変更や処理をかけられるサービス)の利用

これらに料金がかかります。
またリージョンによって料金は変動します。

https://aws.amazon.com/jp/s3/pricing/?nc=sn&loc=4


[詳しい料金はこちらがとても参考になりました](https://zenn.dev/mryhryki/articles/2020-10-09-hatena-aws-s3-pricing
)


# まとめ
S3は、ストレージクラスがやや複雑ですが、
ストレージサービスとして非常に高い耐久性と可用性をもっており、
実際に多くの企業でも採用されています。

ローカルからクラウド上でデータ管理を検討する場合など、
S3はオススメできると思います。

少しでも参考になれば幸いです。

# 参考
https://aws.amazon.com/jp/s3/?gclid=Cj0KCQjw1tGUBhDXARIsAIJx01n8MWc-ZlbCZSFAgvuWgVgVNC9iNAtA1DqWgKT8D6kgCDgOrJ5uFA4aAl5vEALw_wcB&trk=f044c534-a689-47c3-ae52-5e4027585385&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Storage|S3|JP|JP|Text&s_kwcid=AL!4422!3!591554235285!p!!g!!amazons3&ef_id=Cj0KCQjw1tGUBhDXARIsAIJx01n8MWc-ZlbCZSFAgvuWgVgVNC9iNAtA1DqWgKT8D6kgCDgOrJ5uFA4aAl5vEALw_wcB:G:s&s_kwcid=AL!4422!3!591554235285!p!!g!!amazons3



# こちらもどうぞ
https://qiita.com/shimajiri/items/1f3f2a0994423d689485

https://qiita.com/shimajiri/items/2fb424629d9ddb9c9ef1