AWSクラウドプラクティショナー（CLF）の勉強ノート

# はじめに
* AWSのサービスと機能は共通点が複雑なところもあるので、自分用にまとめてたものがありました。
* 僕がAWSクラウドプラクティショナーを受験した時の内容なので変わってるかもしれません。（2021/2/14現在）
* [AWS認定資格クラウドプラクティショナーの一発合格体験記](https://qiita.com/oichokabu/items/c5334289dd48e82c6e69) の続きになります。よければこちらも参考にしてください。

# サービスごとの整理
##  EC2
* アウト通信に転送料金が発生する。
* EC2からS3にアクセスするにはEC2インスタンスにIAMロールを指定する。
* 数ヶ月利用しない場合、AMIを作成してから削除する。
    * **EC2だけを停止してもEBSボリュームが残る**ため。
    * AMIにはEC2のほか、EBS、管理情報も含まれる。
* AutoScalling
    * 起動設定は**「AutoScallingグループ」****「AutoScallingポリシー」****「インスタンスタイプ(=性能)」**を指定する。
    * 水平スケーリングが行いやすい。
    * **水平スケーリングのうちサーバーを増やすのがスケールアウト。**=**停止不要。**
    * **垂直スケーリングのうち性能を上げるのがスケールアップ。**＝**停止必要。**
* インスタンスタイプ
    * オンデマンドインスタンス＝定価料金。
    * リザーブドインスタンス通常＝1-3年の利用で割引が適用できる。
    * リザーブドインスタンスコンバーチブル=インスタンスファミリー変更可。
    * **最安値はリザーブド＆3年契約＆前払い＆スタンダード。**
    * スポットインスタンス=検証、動画編集で利用。止まっても大丈夫な時に利用。
* EC2インスタンス作成時にプロビジョニングできる機能はユーザーデータ。
* **EC2インスタンスにSSH接続するときは、キーペアを使用する。**
* EC2インスタンスにSSH接続できない場合は、プライベートIPアドレスを指定してる。
* デフォルトでは冗長化されない。
* **サーバーレスではない、典型的なアンマネージドサービス**。
* そのため、定期的なパッチあてがユーザー側に求められる。
* ログファイルを取得する時には、CloudWatchログを使用する。
* インスタンスに関連づけられてないElasticIPは課金対象になる。
* 停止しているインスタンスに関連づけている場合もElasticIPは課金対象になる。

## EBS
* **EC2にネットワーク越しでアタッチする。**
* **同一AZ内のインスタンスにのみアタッチできる。**
* **複数のEBSが1つのEC2にアタッチできるが、複数のEC2にアタッチできない。**
    * 複数のEC2にアタッチする場合には、EFSを使用する必要がある。
* **AZ内の複数サーバーに自動レプリケートされる。**
* あとからストレージタイプを変更できる。
* あとからストレージ容量を増やすことができる。
* デフォルトで暗号化される。
* 永続的なストレージ。
    * 一時的なストレージにはインスタンスストア(EC2に物理的に接続)を利用する。
* バックアップはS3のスナップショットを使用する。
* ボリュームタイプ
    * プロビジョンド IPOS SSD=16,000を超えるIOPSが必要な場合に使用。
    * 汎用SSD=最大で16,000IOPSが必要な場合に使用。一定の性能を約束しない。
    * スループット最適化SSD=コスト節約する必要、SSDほど性能が不要な時。
* スナップショットは非同期のㅤため書き込みとタイミングがかぶると誤差が生じる。
* **EBSには絶えず変化するようなデータの保存が向いてる。**
* 高性能で高可用性だが、高速処理ができない。
* ボリュームの暗号化には、KMSを使用する。
* **リージョンを跨いで、スナップショットによる復元ができる。**

##  セキュリティグループ
* **EC2インスタンスに紐づけられ、デフォルトでインバウンドアクセス拒否されている。**
* 許可するものを指定していくホワイトリスト作成方式。
* ステートフルのため、通信の復路は動的に許可する。
* ルールは全て適用される。

## ネットワークACL
* VPCの**サブネットに紐づけられ、デフォルトでインバウンドアクセス許可されている。**
* ステートレスのため、通信の復路も検査する。
* ルールは番号の低い順に適用される。
* 特定のIPアドレスから不正アクセスを受けた場合、このアドレスからのアクセスを拒否できる。

## S3
* オブジェクトは複数のAZに自動的に冗長化される。
* リージョンに配置される。
* S3に保存したデータの暗号化には、「S3で管理されたキー」「KMSで管理されたキー」を使用する。
* アウト通信に転送料金が発生する。
* **デフォルトでフォールトトレランスを考慮した設計**になっている。
* ストレージタイプ（可用性、耐久性を備えている）
    * 標準タイプ
    * 標準IA定頻度アクセス
    * 1ゾーンIA＝アクセス頻度が少なく、冗長化される可用性を必要としない。
    * Glacier=単独で利用できる、アーカイブ用。
* **アクセス権限は「アクセスコントロールリスト(ACL)」「バケットポリシー」「IAMポリシー」で設定する。**
* アクセスログはELBに保存する。
* S3 Transfer Acceleration
    * エッジロケーションを利用する。
    * クライアントとS3バケットの長距離間でファイルを高速&簡単&安全に転送できる。
* Strage Gatewayにより、オンプレ用の長期的なデータバックアップに使用できる。
* 静的ウェブホスティングやCloud Front向けのメディアデータ保存に向いている。

## ELB
* ALB
    * レイヤー7でHTTP/HTTPSをサポート。
* NLB
    * レイヤー4でTCPをサポート。 
* アクセスログはS3に保存される。
* サーバー毎ロードバランシングするにはALBでパスルーティングする。

## Global Accelerator
* 地理的に近いエンドポイントにトラフィックをルーティングする。
* 世界中のユーザーに対して提供する。

## CloudWatch
* **標準メトリクスは、CPU使用率、バイト数、トラフィックを取得。**
* カスタムメトリクスは、メモリ使用率などを取得できる。
* 有料サービス。

## Route53
* **正常なエンドポイントのみトラフィックをルーティングさせ、ヘルスチェックを行う。**
* DNSサービスとドメイン登録を提供する。
* エンドユーザーの最も近いデータセンターにルーティングする。
* レイテンシーベースのルーティングは1つのドメインに対して複数のDNSレコードを用意することで、低レイテンシーを実現している。

## Cloud Front
* 世界中のユーザーがAPIリクエストとレスポンスのレイテンシーを抑えるために利用。
* API Gatewayと連携すべきサービス。
* WAFとも連携すべきサービス。

## Sage Maker
* 機械学習モデルを構築＆トレーニングするフルマネージドサービス。

## Dynamo DB
* **リージョンに設置する。**
* **デフォルトでフォールトトレランス設計になっている。**
* 複数のAZに自動保存される。
* セッションデータを高速に処理することができる。
* フルマネージドのNoSQL型データベース。
* ゲームの行動記録処理、IoTデータの蓄積、銀行の入出金記録の蓄積。
* DynamoDB Stream を使用すると、クロスリージョンレプリケーションが有効になる。
* DAXを使用するとリクエストのレイテンシーをミリ秒→マイクロ秒に短縮できる。
* 利用負荷があらかじめ予測できる場合は、プロビジョンドスループット選択する。

## Managed Apache Cassandra
* OSSと互換性のあるNoSQL型データベース。
* スケーラブルで可用性が高いマネージドデータベース。

## RDS
* **デフォルトで自動バックアップされる。**
    * バックアップはリージョンのS3に保存される＝RDSと同じAZに保存されない。
* スナップショットを定期的に保存するためにTransfer Accelerationを利用する。
* **リードレプリカ**が備わっている。
    * 可用性の担保ができ、**データの冗長化ができるので災害復旧対応**ができる。
    * 読み取り速度の負荷分散ができるので、読み込みの軽減が実現できる。
    * **同AZでも別AZでも機能する。**
* **マルチAZ構成**がとられているので信頼性が担保される。
    * **プライマリDBが応答しない場合自動でフェイルオーバーを行う。(=ホットスタンバイ)**
* 銀行の振り込み処理に利用できる。
* 暗号化の対象は「インスタンス」「自動バックアップ」「スナップショット」。
* ストレージサイズは**増やすことだけ**可能。
* インスタンスタイプは減らすことができる。

## ElastiCache
* デフォルトで自動バックアップ。
* **インメモリ型のNoSQL型キャッシュデータベース。**
* アプリのレスポンスが高速に処理できるよう頻繁にアクセスするデータを保存。
* IoTアプリのデータレイヤーなどミリ秒未満のレイテンシーを必要とするサービスに利用。

## Redshift
* **数ペタバイト規模のデータウェアハウス。**
* フルマネージドのリレーショナルデータベース。
* BIツールとして利用可能。
* **セッションデータの解析**に利用できる。

## Snowball edge
* 数ペタバイトのデータ転送に利用。
    * 1エクサバイトのデータ転送にはSnowmobileを使用。
* 機械学習の実行に利用可能。
* オフラインでも使用できる。
* オンプレミスからAWSクラウドへ移行のための安全で大量データの転送を実現可能。

## EMR (Elastic Map Reduce)
* ビッグデータのセット分析や処理を行うために使用する。
    * 大規模環境でHadoopを使った大量データ処理など。
* ストリーム分析やETL（抽出、変換、読み込み）に利用できる。
* HadoopやSparkなどビッグデータフレームワークとして使用。
* マネージド型クラスターデータプラットフォーム。
* IoTの大量データセット分析・処理にも役立つ。

## NATゲートウェイ
* マネージドサービスでパブリックサブネットに指定する。
    * NATインスタンス
        * マネージドでないため冗長化しておらず単一障害点になりやすい。
        * パブリックサブネットに指定する。

##  Lambda
* サーバーレスサービス。
* **リクエストの受信回数に合わせて自動スケールするため、ユーザーがAutoScallingを設定する必要なし。**
* 料金は時間単位ではなく、ミリ秒単位で発生する。
* 主要なプログラミング言語がサポートされている。
* 呼びだされた時だけコンピュートリソースを確保してコード実行する。

## Fargate
* サーバーレスサービス。
* ECSとEKSの両方で動くコンテナ向けサーバーレスコンピューティングエンジン。

## ECS (Elastic Container Service)
* EC2インスタンスのクラスタでコンテナ化されたアプリを実行できる。

## EKS (Elastic Kubernates Service)

## ECR (Elastic Container Registry)
* DockerコンテナイメージをAWSに保存するサービス。
* フルマネージドサービス。

## Guard Duty
* 不審な疑わしいアクティビティを検知する。
* VPCフローログを解析するほか、IPドレスやドメインリストも解析する。

## OpsWork
* **ChefやPuppetを使用してEC2インスタンスの構成方法を自動化する**、構成管理サービス。

## Elastic BeanStalk
* **アプリケーションを素早くデプロイし管理を自動化する。**
* .NETやPython、Go、Node.jsなどをサポート。
* アプリのプロビジョニング、負荷分散、AutoScalling、モニタリングなどを提供する。

## CloudFormation
* テンプレートに記載したコードに基づいてインフラを展開できる。
* 無料で利用できる。
* AWS環境セットアップの自動化ツール。
* インフラストラクチャをコード化するための管理サービス。

## StepFunction
* コードを記述することなく（ノーコード）、アプリケーションにワークフローオートメーションを数分で追加できる。

## AWS Config
* AWSリソース設定を評価、審査できる。
* リソース設定をモニタリングし、評価を自動化する。

## System Manager
* **統一されたユーザーインターフェースを介して複数のAWSサービスからの運用データを可視化する。**
* 運用タスク（メンテナンス、デプロイタスク自動化、スケジューリング）を自動化する。
* インフラストラクチャを可視化し制御する、一元的に運用作業項目を表示、調査、解決する。
* 選択した目的やアクティビティごとにAWSリソースをグループ化する。

## Cloud HSM
* クラウドで暗号化キーを管理するためのハードウェアセキュリティモジュール。
* グローバルの業界スタンダードの暗号化対応を保証する。

## Cognito
* モバイルアプリからAWSリソースにアクセスできるサービス。

## STS（Security Token Service）
* AWSリソースに対して一時的な認証情報を提供する。

## Inspector
* セキュリティの自動化評価を行いデプロイしたアプリのセキュリティとコンプライアンスを向上できる。
* 事前に定義したセキュリティテンプレートに対してEC2インスタンスを分析し脆弱性を診断する。

## Trusted Advisor
* 以下5項目の向上を支援。
    * **コスト最適化**（インスタンスタイプの見直し、使用率の高いEC2、ElasticIP状態など）
    * **パフォーマンス**（セキュリティグループの増大など）
    * **セキュリティ**（S3バケットアクセス、MFA、セキュリティグループの開ポートなど）
    * **フォールトトレランス**耐障害性（EBSスナップショット、RDSマルチAZ構成など）
    * **サービス制限**（意図しないアクションを避ける）※この項目利用は事前申請が必要。
* 全ての項目を利用できるのはビジネスプランとエンタープライズプランのみ。


# 機能ごとの整理
* MFAを有効にするために使用するサービス
    * CLI
    * IAM

* コンプライアンスと脆弱性のリアルタイムモニタリング
    * Config
    * Inspector
    * Trusted Advisor

* VPCのマネジメントコンソールから操作可能なサービス
    * セキュリティグループ
    * インターネットゲートウェイ

* ルートユーザーアカウントがある場合の保護するための方法
    * アクセスキーを作成しない。
    * すでにある場合は削除する。
    * 保持しなければならない場合は定期的に回転（変更）する必要あり。

* 99%稼動が要件のサービス、99.9999999999%稼動が要件のサービスで利用する方法
    * マルチAZ展開（前者）
    * マルチリージョン展開（後者）

* はじめからデフォルトでマルチAZ構成設計になっているサービス
    * DynamoDB
    * S3

* AWS環境セットアップ自動化に使用するツール
    * CloudFormation
    * Elastic BeanStalk

* サーバーレスサービス
    * Lambda
    * Fargate

* デフォルトで自動バックアップするサービス
    * RDS
    * ElasticCache
    * Redshift

* DDoS攻撃を緩和できるサービス
    * Cloud Front
    * WAF
    * Shield

* EBSの価格に影響をあたえるもの
    * GBサイズのデータ容量
    * アウトバウンドのデータ転送量
    * スナップショット

* 自動でスケーリングするサービス
    * Lambda
    * S3

* AZ間でデータを自動的にレプリケートするサービス
    * S3
    * DynamoDB

# 最後に
何か質問や訂正箇所あればコメントまで！
みなさまが一発で合格できますように🙏

ではでは👋