AWS Cloud Practitioner Essential まとめ4

# [AWS Cloud Practitiner Essential] (https://explore.skillbuilder.aws/learn/course/1875/play/27620/aws-cloud-practitioner-essentials-japanese-ri-ben-yu-shi-xie-ban) 殴りがき


### インスタンスストア
EC2を作成すると、「インスタンスストアボリューム」というローカルストレージ(ハードディスクみたいな。)が提供される。

- インスタンスストアボリュームは、インスタンスが実行されるホストのストレージを仮想的に取得したもの
    - そのため、インスタンスを終了させると、そのインスタンスが保存していたデータは失われる。
    - 再度同じインスタンスを実行しても、同じ物理ホスト上で実行されるとは限らないため。
- 一時的なデータなどを保管する際に使う。


### Amazon EBS(Elastic Block Store)
- ブロックストレージ
- 「EBSボリューム」という仮想ストレージが、インスタンスとひもづく。
    - 物理ホストとの紐付きではないため、インスタンスが終了され、再び実行してもデータは残ったまま。
- 設定を考える
    - サイズ
    - タイプ
- EBSのバックアップは、増分バックアップ(スナップショットを作成する)
    - 1回目: 全てのデータがバックアップされる
    - 2回目: 1回目から増えた分だけバックアップする
    - 3回目: 2回目から増えた分だけバックアップする
- EC2インスタンスと1セットとなる。
- <b>AZレベルでEBSが作られるため、違うAZのインスタンスに対してEBS上のデータを共有することはできない
</b>

※　増分バックアップと差分バックアップの違い
- 増分は、前回からその都度増えた分だけバックアップをとる。
- 差分は、フルバックアップ(初回)から増えた分その都度バックアップをとる。　⇦　3回目の内容には、2回目の内容も含まれる。


### S3(Amazon Simple Storage Service)
- オブジェクトストレージ

- データの保存・取得に制限がない。
- アップロードの最大容量(= 一回にアップできるファイルの最大サイズ)は5TB
- データ: オブジェクトとして保存される。
- ディレクトリ: バケットと呼ばれる。
- バケットにオブジェクトを保存するイメージ。
- オブジェクトをバージョン管理する機能がある。
    - 誤って削除されても、指定のバージョンにすぐに戻すことができる。
- オブジェクトは、データ・メタデータ・キーで構成される
    - データ: 保存する内容
    - メタデータ: データの種類・使用方法・サイズ
    - キー: 一意の識別子
- アップする際に、アクセス制御を設定する。


#### S3ライフサイクルポリシー
ストレージクラス間でデータを自動的に移動する

- 例: 90日はS3標準で保存し、その後30日はS3低頻度アクセスで保存する。そしてその後はS3 Glacierで保存する。
- このような、どの期間をどのシステムで保存するかを設定できる。

#### ストレージクラス

##### S3標準
- 9 * 11 (イレブン9)の耐久性。 99.999999999%データを失うことはない。
- 静的Webサイトのホスティングができる　⇦　オブジェクトとしてWebサイトを保存すれば、それにアクセスするだけでWebサイトが使える
- 頻繁にアクセスされるデータ用
- 最低3つのアベイラビリティゾーンにデータが保存される。

##### S3標準 - 低頻度アクセス(S3標準-IA)
- バックアップなど、長期間でのデータ保存が必要だか、頻繁にアクセスすることはないデータを保存する。
- 頻繁にアクセスされることはないが、必要な際にはすぐアクセスできる設計
- 保存にかかる料金は低い。取り出しにかかる料金が高い。
- 最低3つのアベイラビリティゾーンにデータが保存される。

##### S3 1ゾーン - 低頻度アクセス(S3 1ゾーン - IA)
- <b>1つのアベイラビリティーゾーンにデータが保存される</b>
- <b>長期データの保存が必要かつ頻繁にアクセスされることのないデータを保存する</b>
- ストレージコストを節約する場合に適する
    - AZが一つであるため、三つ使うストレージクラスより安い
- AZに障害が発生した場合にデータを簡単に復元できる。

##### S3 Intelligent-Tiering
- アクセスする頻度が不明な際、このストレージクラスを選択することにより、アクセス状況に応じて適切なストレージクラスに移動される。
    - 30日間連続アクセスなし: S3標準-低頻度アクセスに移動。
    - 低頻度アクセスに移動後にアクセスが増えた: S3標準に移動。

##### S3 Glacier
- データをアーカイブする必要がある場合。
- データの取得には数分から数時間かかる。(S3標準やS3標準-低頻度アクセスより取得に時間がかかる)

##### S3 Glacier Deep Archive
- 最も低コスト
- データ取得には12時間(以内)かかる。(S3 Glacierよりさらに取得に時間がかかる)


### EBS と　S3　の比較
- EBS
    - 　一つのファイルに対して、小さな変更を頻繁にするケースに適する
        - 　ファイルを小さなパケットに分割して保存する(ブロックストレージ)ため、ファイルの極1箇所を変更した際は、その小さな変更分だけを更新されることになる。
- S3
    - たくさんの場所から参照される場合(Webなど)に適する。
    - 一つのファイルに対して、頻繁に変更しないケース(Write Once Read Many)に適する
        - ファイルをオブジェクトとして保存する(オブジェクトストレージ)ため、ファイルの極1箇所に小さな変更を加えた場合でも、ファイル丸ごとアップロードし直さないといけない。
        - ファイルが80GBで、そのうちの1GB分のデータに変更を加えた場合でも、80GB分を再アップロードする必要がある
    - ウェブが有効(オブジェクトにはurlが付与されており、アクセス権によって操作する)
    - 耐久性が強い -> 9 * 11の耐久性
    - コスト削減 -> EBSを使うよりやすい。
    - サーバーレスである。

### Amazon Elastic File System(Amazon EFS)
- ファイルストレージ
- <b>複数のインスタンスがEFSのデータに同時に読み込み・書き込みができる</b>
- スケーリング・複製などをAWSに任せることができる
- リージョン単位でEFSが作成されるため、同じリージョン内のインスタンスであればEFSのデータにアクセスすることができる。　⇦　複数リージョンに作成され、スケーリングなどがされる。
- Linuxファイルサーバーとなるため、アクセスする際には、ファイルパスを操作する

### RDS (Amazon Relational Database Service)

以下の管理をAWSがしてくれる。

- 自動パッチ適用
- バックアップ
- 冗長性
- フェイルオーバー
- 災害対策
- セットアップ
- バックアップ

以下のRDBMSがサポートされている

- PostgreSQL
- MySQL
- MariaDB
- Oracle DB
- Microsoft SQL Server
- Amazon Aurora
    - MySQLとPostgreSQLの二つと互換性がある。
    - MySQLの5倍, PostgreSQLの3倍高速
    - 高可用性が求められるケースに適する
    - コストは商用DBの1/10
    - データレプリケーション
        - 常に6つのコピーが複製されている　⇦　3つのAZに2つずつ。
        - 最大15個まで複製を増やせる　⇦　増やすことで読み取り負荷を分散してパフォーマンスを拡張させることができる
    - S3への継続バックアップされている
    - 特定の期間のデータを復旧できる(ポイントインタイムリカバリ)
    - エンタープライズ規模のリレーショナルデータベース

### AmazonDynamoDB

- サーバーレスデータベース。
    - パッチ適用・管理・外ウェアのインストールなどを自動で実行してくれる
- 高いスケーラビリティ
    - 自動的にスケーリングされる
- 非リレーショナルDB
- NoSQL(SQLは使わない。)
- 応答時間がめっちゃ短い。(数ミリ秒)

#### 非リレーショナルDBの特徴

- キーバリューペアがある。
    - キー: 一つのデータを示す
    - バリュー: 一つのデータが持つ情報。それぞれのデータが同じバリュー属性を持たくて良い。
- バリューをいつでも追加・削除できる

|キー|バリュー|
|--|--|
|1|名前: Kohei, 住所 123, 性別: 男|
|2|名前: Takeshi, 誕生日: 1180年7月7日, 年齢: 17|


### Amazon RDS と Amazon DynamoDBの比較

#### Amazon RDS

- 各データの複雑な結びつきがある場合に適する

#### Amazon DynamoDB
- 各データで複雑な結びつきがなく、大量なデータを高速に処理する場合に適する


### Amazon Redshift
現在のデータではなく、過去のデータをさかのぼって処理するのに適する。
データウェアハウシングを提供するサービス

- ビックデータ分析
- データの傾向を理解するのに役立つ。

### Amazon DMS(Amazon Database Migration Service)
オンプレミス環境や移行元EC2・RDSなどからクラウドへデータ移行をする際に役立つサービス。
RDS,非RDS(NoSQL)でも移行は可能。

- 開発環境・テスト環境でのデータベース移行にも使える。
    - 開発環境 or テスト環境に本番環境のデータをコピーするなど。
- データベースの統合にも使える。
    - 複数のDBを一つのDBにまとめる
- 継続的なデータベースレプリケーションにも使える。
    - 地理的に離れている場所に複製ができるため、優れたバックアップとして使える。

- <b>移行中も、移行元のDBを通常通り運用しながらできる</b>
    - アプリケーションのダウンタイムが最小限となる。
- 移行元と移行先のDBの種類が異なっていても問題なく移行できる
    - ex: 移行元のMySQL を 移行先のPostgreSQLにデータを移せる
    
    1. スキーマ構造・データ型・データベースコード を 移行先へ変換
    1.　　実際にデータを移行する

### その他のデータベースサービス
- Amazon DocumentDB
    - MongoDBをサポートするドキュメントDBサービス。
- Amazon Neptune
    - グラフDBサービス -> 高度に接続されたデータセットを使うアプリケーション構築に適する
    - レコメンデーションエンジン・不正検出・ナレッジグラフなど
- Amazon QLDB(Amazon Quantum Ledger Database)
    - 台帳DBサービス
    - データに対して行われた全ての変更履歴を確認できる
- Amazon Managed Blockchain
    - ブロックチェーンネットワークを作成・管理するために使用できる
    - ブロックチェーンは複数の当事者がトランザクションを実行し、データを共有できるようにする分散台帳システム
- Amazon ElastiCache
    - DB上にキャッシュレイヤーを追加することで、リクエスト読み込みを短縮できるサービス
- Amazon DynamoDB Accelerator
    - DynamoDBのインメモリキャッシュ。応答時間をマイクロ秒に向上する。(DynamoDBはミリ秒)