[AWS]クラウドプラクティショナー 勉強〜合格までのメモ

#はじめに
##この記事の目的
AWSクラウドプラクティショナーの勉強メモです。
受験方法や勉強の仕方などは追って追加します。

ちなみに使用している書籍は[『AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー』](https://www.amazon.co.jp/dp/4797397403/ref=cm_sw_em_r_mt_dp_U_9nLUEb7494GR3)です。Amazonだと在庫切れだったので、楽天booksから購入しました。
これと公式のオンライン学習をして受験する予定です（2020年7月中には取得したい）。

また、随時マークダウンなどで可読性上げていきます💪

##追記（2020/07/28）：合格しました！
無事合格しました！
![IMG_1877.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602794/76e4c9b4-9e14-6326-9e5d-13efb58fae63.jpeg)

###勉強方法
2つの教材を勉強しました。

- [『AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー』](https://www.amazon.co.jp/dp/4797397403/ref=cm_sw_em_r_mt_dp_U_9nLUEb7494GR3)を2周
- Udemy[『この問題だけで合格可能！AWS 認定クラウドプラクティショナー 模擬試験問題集（7回分455問）』](https://www.udemy.com/share/101SaAAEEcc1ZQQX4H/)を2周

正直Udemyの模擬試験は、応用レベル②までで十分です。これ以上難しい問題は出ませんでした。
どちらかというとテキストの内容が中心だったので、まずは**テキストを重点的に理解した上で、練習＋理解を深める目的でUdemyの模擬試験を活用するのがおすすめ**です。

###受験までの流れ
ざっくりと下記のような流れです。

####1. 申し込み（テストセンターorオンライン）
[AWS traning and certification](https://www.aws.training/SignIn?returnUrl=%2F)で試験を予約します。
基本的に画面の流れに沿っていけば申し込みできます。
私の場合はテストセンターで、申込日から2〜3日後の9:30or13:30スタートを選択する感じでした。

※オンラインでも受験できるようになりましたが、オール英語です。問題文も、試験官とのやりとりも全て英語なので（2020/07/28現在）、ご注意ください。
山下さんのブログに実際の様子が書かれていますので、ご参考までに。
[AWS認定試験を自宅で受験しました](https://blog.trainocate.co.jp/blog/aws_onvue_022)

####2. 会場で受付
気をつけるべきは2つです。

- 試験開始の15分前までに到着する
- 身分証明書を2種類以上持参する

13:30スタートだったので、13時くらいには到着していました。
運転免許証と保険証の2種類でOKでした。
同日同時刻で受験するのは私だけだったらしく、受付が終わって荷物をロッカーに入れたら、時間関係なくすぐ部屋に連れて行かれました(笑)。

※身分証明書についてはこちらの記事（[【AWS認定試験攻略】おさえておきたい試験当日10のポイント（PSI社版）](https://blog.trainocate.co.jp/blog/aws_10points#5caadaeff875dd37a4002251-1554701647438)） に記載してあります。

####3. 受験（その場で合否）

いくつか同意事項など読んだのちに、試験開始。
65問90分でした。

65問の問題をやってる最中に「セクションを終了する」みたいなボタンがあって、「え？66問目以降もあるの？？？」みたいにかなり焦りましたが、ちゃんと65問でした。

フラグをつけるボタンがあって、悩んで後で再考したい設問にはそれを立てておくと見直しが楽になります。

結局30分くらいで2回見直して終了しました。
アンケートに答えて、その場で「合格！」の文字が画面に出てくるのですが、意外とあっさりした感じです。

####4. 合否確認メール

その場では点数が分かりませんが、受験終了後4時間くらいでメールが届き、[AWS traning and certification](https://www.certmetrics.com/amazon/)の受験履歴を確認すると、試験結果が確認できるようになっていました。

##クラウドプラクティショナーとは
AWSの認定資格です。

- [AWS 認定クラウドプラクティショナー | AWS](https://aws.amazon.com/jp/certification/certified-cloud-practitioner/)
- [クラウドプラクティショナーからはじめよう - Amazon Web Services](https://aws.amazon.com/jp/training/mc_cloudpractitioner/)

AWS認定資格には、**役割別認定資格**と**専門知識認定資格**があります。
`役割別認定資格`は3つのレベルに分けられていて、**ベーシック**、**アソシエイト**、**プロフェッショナル**があります。
クラウドプラクティショナーは**ベーシック**に該当します。
AWS認定資格の中で最も基礎的で一番簡単な試験です。

###認定によって検証される能力
難しく書かれてますが、要は**「AWSについて最低限の知識持ってるよ！」**ということを証明できます。
未経験からのエンジニア転職の際に、**周りと差別化するために有効**だと思います。

```
- AWS クラウドとは何かということ、およびベーシックなグローバルインフラストラクチャについて定義できる
- AWS クラウドのベーシックなアーキテクチャ原理を説明できる
- AWS クラウドの価値提案について説明できる
- AWS プラットフォームの主なサービスと一般的なユースケース (例: コンピューティング、分析など) について説明できる
- AWS プラットフォームのセキュリティとコンプライアンスのベーシックな側面、および共有セキュリティモデルについて説明できる
- 請求、アカウントマネジメント、料金モデルを明確に理解している
- ドキュメントや技術サポートのソースを特定できる (例: ホワイトペーパー、サポートチケットなど)
- AWS クラウドにおけるデプロイと運用のベーシックで重要な特徴を説明できる
```

###推奨される知識と経験
これは無視してしまっていいです。僕はプログラミングスクールでちょこっとAWS触った程度です。
ただ、サーバー周りの知識は少しないと厳しいかもです。

```
- テクノロジー、マネジメント、販売、購買、またはファイナンスの分野で最低 6 か月の AWS クラウド使用経験がある
- IT サービスのベーシックな知識と、AWS クラウドプラットフォームにおけるそれらのサービスの使用に関する知識がある
```

##受験する方法
上記の通り
###費用
試験時間 90 分、受験料 11,000円 (日本語版/税抜)




#合格に必要な知識①（7割を目指す方）
基本的にここに書かれていることが理解できていれば、7割取れると思います。

##セキュリティ
###IAM (Identity and Access Management)
⇒ユーザーのAWSリソースへのアクセス管理サービス（権限設定）
・IAMユーザを作っての運用が推奨

###セキュリティグループ
⇒インスタンスに対して設定する(トラフィックを制御する)仮想ファイアウォール
・オンプレ(1LANに1ファイアウォール)とは違い、各インスタンスごとに設定できる
・許可するインバウンドのポートと送信元を設定するホワイトリスト
・送信元には、CIDRか他のセキュリティグループを指定

####★CIDR (Classless Inter-Domain Routing)
⇒IPアドレスの範囲を定義する（10.0.0.0/16など）

###ネットワークACL (Access Control List)
⇒サブネットに対して設定する仮想ファイアウォール
・拒否するインバウンドのポートと送信元を設定するブラックリスト
・必要がなければ設定しない追加のセキュリティレイヤー

###AWS Shield
⇒DDoS攻撃に対する保護サービス
・StandardプランとAdvancedプラン(AWS WAFが無償で無制限に利用可能)がある
・エッジロケーションで使用

####★DDoS攻撃 (Distributed Denial of Service attack)
⇒通信量を増大させて、通信処理に負荷をかけ、サービスを利用困難・ダウンさせる攻撃

###AWS WAF (Web Application Firewall)
⇒Webアプリケーションのファイアウォール
・可用性低下、セキュリティ侵害、リソースの過剰消費など一般的なWebの脆弱性からアプリを保護する
・基本量は無料だが、セキュリティルールに基づいて課金
・セキュリティルールの設定が必要
・適用先は、CloudFront/Application Load Balancer/API Gatewayから選択

###Inspector
⇒EC2上のアプリのセキュリティ・コンプライアンス向上のための脆弱性診断サービス
・自動でアプリを診断し、問題をリスト化


##コンピューティング
###EC2 (Elastic Compute Cloud)
⇒仮想コンピュータ
・必要なときに必要なだけ使用 → 使用した分だけ課金
・変更可能なインスタンスタイプから性能を選択 → 運用開始後に変更可能
・数分でサーバー調達して起動 → 経営の俊敏性向上
・世界中のリージョンから起動場所を選択 → 世界中にデプロイ
・AMIからいくつも同じ構成のサーバーを作成できる
・セキュリティグループでトラフィック制御
・OSを管理者権限で操作 → キーペアで安全にログインできる
・ユースケースに応じた料金オプションがある → コスト効率の向上

###ELB (Elastic Load Balancing)
→EC2インスタンスを複数のAZに配置した際に、ユーザーからのアクセスを一本化するためのもの
→EC2を複数AZに配置すると、障害が起きてもシステムは停止しにくい
⇒可用性、対障害性の向上のために使うサービス
・ロードバランサータイプは3つ → HTTP/HTTPではApplication Load Balancer
・ヘルスチェック → 正常なインスタンスのみにトラフィックを送るため
・インターネット向け/内部向け両方に対応 → 内部向けにもELBを挟むことで可溶性をさらに向上
・高可用性のマネージドサービス → 自動・水平にノードが増えるので、単一障害点とならない
・クロスゾーン負荷分散 → AZを超えて負荷分散をする設定 → リソースの負荷が均等に

####★AMI (Amazon Machine Image)
⇒EC2インスタンスのテンプレート（サーバ構成）

###Auto Scaling
⇒EC2インスタンスを必要に応じて自動増減してくれるサービス
→高可用性、耐障害性、コスト効率化になる
・垂直スケーリング → インスタンスの性能変更 → システムの設計変更が発生するため面倒
・水平スケーリング → インスタンスの数を変更 → スケーラビリティを確保しやすい
・起動設定、Auto Scalingグループ、スケーリングポリシーを設定
（何をスケールするか）、（どのAZでスケールするか）、（どのタイミングでスケールするか）
・アプリデプロイを自動化

####★ステートレス
⇒EC2に情報やステータスを持たせない（スケールイン時に削除されてしまうので）

####★ブートストラップ
⇒ユーザーデータとメタデータを使って、アプリのデプロイをより簡易化するための設計パターン
（ここで言うデプロイはアプリ改修の場合）

####★ユーザーデータ
⇒インスタンス起動時に行う処理を設定しておくもの

####★メタデータ
⇒EC2の情報（パブリックIP、インスタンスIDなど）
→EC2を起動する前に、情報をメタデータから取得できる

###Lambda
⇒ソースコードさえあればプログラムを実行できるサービス
→環境構築しなくていい
・サーバーの構築、管理不要
・一般的な言語のサポート → Rubyなどの言語が使えるので、新しく何かを学ぶ必要がない
・並行処理／スケーリング → リクエストに応じて自動で水平スケーリングし並行処理＝スケーラビリティ確保
・柔軟なリソースを設定 → メモリを設定する（課金対象ここ）。CPUなどはメモリに応じる
・ミリ秒単位の無駄のない課金 → 実行されている時間に課金
・他のAWSサービスとの連携 ⇒ サービス間の動作をつなぐマクロみたいな役割できる

###その他のコンピューティングサービス
####★ECS (Elastic Container Service)
⇒コンテナ管理を行うマネージドサービス

####★Lightsail
⇒仮想プライベートサーバー

####★Batch
⇒フルマネージド型のバッチ処理実行環境サービス

##ストレージ

###EBS (Elastic Block Store)
⇒EC2インスタンスにアタッチして使うブロックストレージボリューム
・EC2のルートボリュームor追加ボリュームとして使用（外付けHDDみたい）
　→不要になれば削除できる
・AZ内で自動でレプリケート（複製）される → ハードに障害起きてもデータがなくならない
・ボリュームタイプの変更が可能
・容量の変更が可能 → 確保している容量に対して課金
・高い耐久性のスナップショット → S3に保存
####★スナップショット
⇒ ある瞬間における対象の全体像を丸ごと写し取ったもの。ここから復元できる

####★S3に保存
⇒複数のAZで冗長化されており、耐久性がイレブンナイン
→EBSのスナップショットもイレブンナイン（99.999999999%）
※EBS自体はEC2にアタッチしているので、そのAZが死＝EBS死という状況を避けるため

・ボリュームタイプの変更が可能
####★汎用SSD → 16,000IOPS
####★プロビジョンドIOPS SSD → 16,000〜64,000IOPS
####★スループット最適化HDD → SSDほど性能要らないとき　※ルートボリュームとしてはNG
####★Cloud HDD → SSDほど性能が要らず、アクセス頻度が低いとき ※ルートボリュームとしてはNG

####★IOPS
⇒1秒あたりのディスクが処理できるI/Oアクセスの数
→SSDの性能

・ボリュームの暗号化 → スナップショットも暗号化。自動なので操作不要
・永続的ストレージ → インスタンスを再起動してもデータは残る

####★インスタンスストア
⇒EBSの対比で、ホストのローカルのストレージを使うこと
→インスタンスの状態に依存する（データは一時的利用）

##S3 (Simple Storage Service)
⇒マネージド型のオブジェクトストレージ
・無制限のストレージ容量 → 容量の確保は必要なく、バケットさえ作ればOK
・高い耐久性 → 複数のAZ内で冗長化（イレブンナイン）
・ネット経由でアクセス → 世界のどこからでもアクセスできる

・バケット、オブジェクトはデフォルトでプライベート
・ACL（アクセスコントロールリスト）で簡単にアクセス権を設定できる
・バケットポリシーでより詳細にアクセス権を設定できる
・EC2などに、S3へのアクセスけんを設定する際はIAMロールを使用する
・HTTPSでアクセス可能。何もせずとも
・保存データの暗号化は複数の方法で可能 → S3キーでのサーバー、KMS、独自キーでのサーバーorクライアント

###ストレージクラス
####★標準 → デフォ
####★低頻度アクセスストレージ（標準IA）→ リクエスト料金↑、ストレージ料金↓ 
　⇒バックアップデータに最適
####★1ゾーン定頻度アクセスストレージ（1ゾーンIA）→複数のAZで冗長化されない。別リージョンでのバックアップ
####★Amazon Glacier → 取り出しに3-5Hかかる。法的保存期間の定めがあるものなど

・ストレージ料金は、最適なストレージクラス選択によってコスト効率を高められる
・ライフサイクルポリシーによってストレージクラスの変更を自動化できる
・リージョン外へのアウト通信にのみ転送料金がかかる

###その他のストレージサービス
####EFS (Amazon Elastic File System)
⇒複数のEC2インスタンスでマウントして共有利用できるファイルストレージサービス

####Storage Gateway
⇒オンプレアプリとAWSのストレージをシームレスに接続利用するためのゲートウェイ

####Snowball
⇒物理デバイスを利用してペタ級の大容量データ転送を行うサービス


##ネットワーク

###VPC (Virtual Private Cloud)
⇒AWS内に構築できるプライベートなネットワーク環境
→AWSの敷地の中で、「自分の領域はここ！」
・リージョンを選択して作成（AZをまたぐことはできる）
・CIDR (Classless Inter-Domain Routing) → プライベートIPの範囲を定義する

####★サブネット
⇒AZとIPアドレス範囲を定義するネットワークグループ
→役割別に作成する（外部接続係、内部接続係）

####★インターネットゲートウェイ
⇒VPCとパブリックインターネットを接続するためのGateway
→インターネット（外部との通信）の入り口
※入り口はVPCにつき一つ
※水平スケーリングによる冗長性を持っているので、単一障害点にはならない

####★ルートテーブル
⇒サブネットの経路を設定。サブネットと関連づける
→通信に関するルールブック

####★セキュリティグループ
⇒仮想ファイアウォール
→セキュリティに関するルールブック
※送信元を、CIDRでIPアドレス範囲で指定
※送信元を、他のセキュリティグループのIDで指定
　→IPアドレスに依存せず、柔軟かつ最低限の送信元だけを許可するセキュアな設定
※VPCを指定して作成→トラフィックのホワイトリスト化

####★ネットワークACL(Access Control List)
⇒サブネットに対して設定する仮想ファイアウォール
・拒否するインバウンドのポートと送信元を設定するブラックリスト
・必要がなければ設定しない追加のセキュリティレイヤー

####★外部からEC2インスタンスにアクセスするための重要ポイント
・インターネットゲートウェイをVPCにアタッチ
・インターネットゲートウェイへの経路を持つルートテーブルをサブネットに関連づける
・EC2インスタンスをそのサブネット内で起動
・EC2インスタンスにパブリックIPアドレスを有効にする
（orEC2のパブリックIPを固定するElastic IPをアタッチする）

####★ハイブリッド環境構成
・VPCに、既存のオンプレからVPN or 専用回線で接続
→オンプレ環境の拡張先としてAWS使える
⇒オンプレ＆クラウド＝ハイブリッド


###CloudFront
⇒コンテンツ配信ネットワークサービス(CDN = Contents Delivery Network)
・最も低いレイテンシーで配信できる
・キャッシュによる低レイテンシー配信 → エッジロケーションにキャッシュ持たせてる
・ユーザの近くからの低レイテンシー配信 → ユーザへは最もレイテンシーの低いエッジロケーションから配信
・安全性の高いセキュリティ → ドメイン証明書を設定できる＝HTTPS化

###Route 53
⇒DNS(Domain Name System)サービス
→例えばドメイン(teshita.com)とElastic IP(51.1.1.1)を紐付ける
・エッジロケーションで使用される
・複数のDNSレコードを設定し、用途に応じて様々なルーティング機能を選択
・高可用性実現するヘルスチェックとフェイルオーバー → 複数のDNSレコードにより実現
・ルートドメイン(Zone Apex)のエイリアスレコード

##データベース
###RDS (Relational Database Service)
⇒オンプレで使用されているデータベースエンジンをそのまま使えるDBサービス
・通常のデータベースタスクの時間を節約して、ユーザーに必要な高速パフォーマンスと高可用性を提供する

####★EC2にMySQLなどをインストールして使うのと違うのは
・メンテナンス(OS、DBエンジンのアプデ)不要
・バックアップ不要 → 自動で行ってくれる(max35日間) →それを超えるときは手動のスナップショット
※ポイントタイムリカバリー → 自動バックアップ期間内なら、秒単位での指定復元可能
・高可用性の担保 → マルチAZ
　→MasterとStandby間でレプリケーション（異なるデータセンター間を低レイテンシーで実現）
※クロスリージョンリードレプリカ 
　→リードレプリカを他リージョンに作成することで、マスターデータベースから読み込みの負荷を軽減できる

####★Amazon Aurora
⇒クラウドに最適化して再設計されたリレーショナルデータベースエンジン
→MySQL、PostgreSQL互換
・メリットある

####★DMS (Databese Migration Service)
⇒DBの移行サービス
・オンプレからAWSへの継続的なデータ移行 → システムのダウンタイムを最小限にできる

###DynamoDB
⇒NoSQL型のフルマネージドDB
→非リレーショナル
・テーブル名とプライマリーキーを決めるのみで、リージョン選択するだけで使える（AZ気にしない）
・RDSよりさらに管理範囲が少ない

####★RDSとの違い
#####①スケーリング
・RDS → 垂直スケーリング → 性能の向上（数は一つ） →大量のアクセス🙅‍♂️(高速パフォーマンスと高可用性🙆‍♂️)
・DynamoDB → 水平スケーリング → 数の増加 → 大量のアクセス🙆‍♂️(厳密なトランザクション、複雑なクエリ🙅‍♂️)
#####②テーブルの型
・RDS → SQL型（Excelみたい）
・DynamoDB → NoSQL型（アイテム＝ハッシュ？）
→不定型の入れ物に自由に情報を格納 → キーを検索のインデックスとして扱う

###その他のデータベースサービス
####★Amazon Redshift
⇒高速でシンプルなデータウェアハウスサービスで、分析に使用される

####★Amazon ElasticCache
⇒インメモリデータストアサービス
→クエリ結果のキャッシュやアプリのセッション情報を管理するのに使用される

####★Amazon Nepture
⇒グラフデータベースサービスで、関係性や相関情報などを扱う。提案エンジン、物流最適化など

##管理サービス

###CloudWatch
⇒AWSサービスの情報をモニタリングするサービス
・標準(組込メトリクス)の収集、可視化
・カスタムメトリクスの収集、可視化
・ログの収集 → メトリクスだけでなくEC2などのログも収集できる
※これによりEC2をステートレスにできる → EC2ローカルにログファイルがあると障害時自動終了が面倒

####★標準メトリクス → AWSが管理する範囲の情報。サービスによって異なる
####★カスタムメトリクス → ユーザが管理する範囲の情報。CloudWatchエージェントで取得できる
####★CloudWatch Logs → インスタンスのログを収集。CloudWatchエージェントで取得できる
※文字列のフィルタリング結果をメトリクスとして扱える
※保存期間は任意。失効しないも可能

・アラームを設定することで、モニタリング結果に基づく運用を自動化できる

###Trusted Advisor
⇒環境を自動でチェックし、ベストプラクティスに近づけるためのアドバイスをくれるサービス
・コスト最適化の視点
・パフォーマンスの視点 → 最適なサービス、サイズが選択されてるか？
・セキュリティ → リスクないか？
・フォールトトレランス（耐障害性）
・サービス制限 → 意図しない操作等で不利益が生じないようにするためのソフトリミット

###その他の管理ツール
####★Cloud Trail
⇒AWS内のすべてのAPI呼び出しを記録

####★CloudFormation
⇒AWSの各リソースを含めた環境を自動作成／更新／管理

####★Elastic Beanstalk
⇒Webアプリの環境を簡単にAWSに構築

####★Cloud Config
⇒リソースの設定変更履歴を簡単に見れる

#合格に必要な知識②（高得点を目指す方）

- Lambda 
	- 新しい情報に迅速に対応できるアプリケーションを容易に構築できるコンピューティングサービスです。
	- これはサーバレスアプリケーションを利用する際にEC2の代わりに利用するサービスです。
- セキュリティグループ
	- インスタンスに対して設定するホワイトリストの仮想FW
- ネットワークACL
	- サブネットに対して設定するブラックリストの仮想FW
	- 着信トラフィックリクエストをフィルタリング
- オンデマンドインスタンス
	- 一週間という期限だけで利用する場合はオンデマンドインスタンスを利用
- スポットインスタンス
	- 一瞬だけ使う。動画編集するときだけ、みたいな
- スケジュールドリザーブドインスタンス
	- 週一回金曜日や、１０時から１７時といった定期的な利用時間にかぎってインスタンスを利用する場合にコスト最適
- CloudTrail
	- AWS内のすべてのAPI呼び出しを記録
	- AWSでのガバナンス、コンプライアンス、およびリスク監査のために、CloudTrailを有効化する必要
	- ユーザーアクティビティログを取得することができます。ユーザー、ロール、または AWS のサービスによって実行されたアクションは、CloudTrail にイベントとして記録されます。イベントには、AWS マネジメントコンソール、AWS CLI、および AWS SDK と API で実行されたアクションが含まれます。
- AWS Systems Manager
	- 運用関連！
	- AWSで利用しているインフラストラクチャを可視化し、制御するためのサービス
	- アプリケーション、環境、リージョン、プロジェクト、キャンペーン、ビジネスユニット、ソフトウェアライフサイクルなど、選択した目的やアクティビティごとに AWS リソースをグループ化します。
	- AWS リソースに関連する運用作業項目を一元的に表示、調査、および解決します。
	- さまざまなメンテナンスおよびデプロイタスクを自動化またはスケジュールする
	- インフラストラクチャを可視化し、制御するためのサービス
	- 統一されたユーザーインターフェイスを介して複数のAWSサービスからの運用データを表示し、運用タスクを自動化できる
- Access Advisor
	- IAMエンティティ(ユーザー、グループ、ロール) が最後にAWSサービスにアクセスした⽇付と時刻を表⽰する機能
- EC2
	- EC2はアンマネージド型サービスの典型的なサービス
		- ユーザー側でインスタンスのオペレーティングシステムとアプリケーションに定期的にパッチを適用し、更新し、保護する必要がある
	- プレイスメントグループ
		- AZ内でインスタンスをまとめることで、低レイテンシーネットワークパフォーマンスを実現
- ELB
  
	- 負荷分散機能
		- 配下のEC2の負荷に応じて、複数のAZに跨るEC2インスタンスの負荷分散を行う機能
	- Connection Draining
		- インスタンスが登録解除されるか異常が発生した場合に、そのバックエンドインスタンスへの新規リクエスト送信を中止する機能
	- ヘルスチェック
		- EC2インスタンスの正常／異常を確認し、利用するEC2の振り分けを行う機能
	- スティッキーセッション
		- セッション中に、同じユーザから来たリクエストを全て、同じEC2インスタンスに送信する機能
	- ELBのターゲットグループを設定すれば、ELB構成されたEC2インスタンス群に対して、AutoScalingを設定することが可能
- S3（オブジェクトストレージ）
  
	- S3 Intelligent-Tiering
		- アクセスパターンを把握するために何らか特別な開発をする必要はなく、S3を有効活用
	- S3は直接リージョンに設置されるサービス
	- AZ間で自動的にデータを複製する
- EBS (Elastic Block Store)：外付けHDD（ブロックストレージ）
  
	- ⇒EC2インスタンスにアタッチして使うブロックストレージボリューム
	- EC2のルートボリュームor追加ボリュームとして使用（外付けHDDみたい）
		- 不要になれば削除できる
		- 削除の挙動は都度設定できる
	- AZ内で自動でレプリケート（複製）される → ハードに障害起きてもデータがなくならない
	- ボリュームタイプの変更が可能
	- 容量の変更が可能 → 確保している容量に対して課金
	- 高い耐久性のスナップショット(EC2ボリュームをバックアップする機能) → S3に保存
	- スナップショットはそのEBSが設置されているリージョン内にスナップショットを作成
	- シングルリージョンのみに限定されず、スナップショットを他のリージョンにコピーすることで、他リージョンにおいて、スナップショットによる復元を実施できる
	- EBSのスナップショットは増分バックアップ
	- 頻繁かつ詳細な更新が必要なデータのプライマリストレージデバイスとして使用
	- KMS：データを暗号化することができます
	- AMI
		- AMI = EBSスナップショット + α(管理情報)
		- AMIの作成時点のEBSボリュームも復元できる＝スナップショットからだけでなく、AMIからも復元できる
	- EC2インスタンスを起動する際にボリュームタイプとしてEBSのストレスタイプを選択することが必須
- EFS (Elastic File System)：NAS（ファイルストレージ）
  
	- 複数のEC2インスタンスでマウントして共有利用できるファイルストレージサービス
	- EC2インスタンスからLAN上にあるNASとして利用できる共有ファイルストレージ
- インスタンスストア：Cドライブ
  
	- EC2インスタンスの一時的なデータを保持するストレージ
	- EBSの対比で、ホストのローカルのストレージを使うこと
	- インスタンスの状態に依存する（データは一時的利用）
	- AWS側で管理されるもの
- Elastic IP
	- 利用されていないElastic IPがあると課金される
	- 課金発生しない条件
		- Elastic IP アドレスが EC2 インスタンスに関連付けられている。
		- Elastic IP アドレスに関連付けられているインスタンスが実行中である。
		- インスタンスに 1 つの Elastic IP アドレスしか添付されていない。
- ElasticCache
  
	- クラウド内のインメモリデータストアまたはキャッシュを簡単にデプロイ、操作、およびスケーリングできるようにするウェブサービス
	- ミリ秒未満のレイテンシを必要とするリアルタイムIoTアプリケーションのデータ処理に利用
- Amazon Redshift
  
	- 高速でシンプルなデータウェアハウスサービスで、分析に使用される
	- 通常の業務システムデータなどのBIシステムやデータウェアハウスとして利用可能なリレーショナルデータベースサービスです
	- AWSが提供するフルマネージド型サービスであり、ペタバイト規模のデータを扱う性能を有しています
- Aurora
  
	- Auroraの DB インスタンスでは常に自動バックアップが有効
	- クラウドに最適化して再設計されたリレーショナルデータベースエンジン
	- MySQL、PostgreSQL互換
	- 可用性は99.99%
	- 最大15のリードレプリカを利用した高速読み込みが可能
- Snowball Edge
	- AWSクラウドへの安全な大量データの転送を可能にするサービス（ペタ）
	- Snowballは古いサービスなので非推奨
	- 切断された環境における高度な機械学習およびフルモーションビデオ分析にも利用される
- AWSクラウドの一部をカーブアウトする（切り出す）ことができるサービス
	- VPC
	- VPCを使用することで、AWSクラウドの一部をカーブアウトして定義した仮想ネットワークにAWSリソースを起動することができます。 この仮想ネットワークは、AWSのスケーラブルなインフラストラクチャを使用する利点を備え、独自のデータセンターで運用する従来のネットワークに非常に似ています。
- Glacier
  
	- 取り出しに3-5Hかかる。法的保存期間の定めがあるものなど
- マルチAZ構成のフォールトトレランス（耐障害性）を考慮して設計されているAWSサービス
	- AZ間で自動的にデータを複製する、ってこと？
	- DynamoDB
		- AWSで実証された高可用性データセンターで実行されます。 
		- このサービスは、AWSリージョンの3つの施設にデータを複製し、サーバー障害またはアベイラビリティーゾーンの停止が発生した場合のフォールトトレランスを提供します。
	- S3
		- 重要なデータを保存するための耐久性のあるインフラストラクチャを提供し、オブジェクトの99.999999999％の耐久性のために設計されています
		-  データは、複数の施設と各施設の複数のデバイスに冗長的に保存されます。   
- DynamoDB
  
	- NoSQL型のフルマネージドDB
		- 非リレーショナル
	- NoSQL型のkey-value およびドキュメントデータベース
	- テーブル名とプライマリーキーを決めるのみで、リージョン選択するだけで使える（AZ気にしない）
	- RDSよりさらに管理範囲が少ない
	- プッシュボタンスケーリングにより、稼働を停止させることなく、設定オプションをワンクリックするだけでダウンタイムなしに、いつでもDBをスケーリングできます
	- 他のすべてのデータベースはEC2インスタンスに基づいているため、インスタンスのサイズを拡大してダウンタイムを招く
	- Amazon DynamoDB Accelerator (DAX)
		- リクエストのレイテンシをミリ秒からマイクロ秒に短縮する機能
	- DynamoDB Streams
		- DynamoDBによるクロスリージョンレプリケーションを行うために必要
	- セッションデータを高速で管理するデータベース処理
		- 規模に関係なく数ミリ秒台のパフォーマンスを実現
	- AZ間でデータを自動的に複製するサービス
	- 初めからマルチAZ構成のフォールトトレランスを考慮して設計されている
	- 利用負荷があらかじめ予測できる場合　⇒　プロビジョンドスループット
	- 利用負荷があらかじめ予測できない場合　⇒　オンデマンドキャパシティーモード
- RDS (Relational Database Service)
  
	- 高速パフォーマンスと高可用性を提供するリレーショナルデータベース
	- 自動バックアップ(自動スナップショット)の機能
	- リードレプリカ
		- データの冗長性を実現し、コスト最適に災害復旧対応を実現する機能
			- データベース (DB) インスタンスのパフォーマンスと耐久性が向上します。この機能によって、1 つの DB インスタンスのキャパシティーを伸縮自在にスケールし、読み取り頻度の高いデータベースのワークロードを緩和できます。ソース DB インスタンスのレプリカを複数作成し、アプリケーションの大容量読み取りトラフィックをデータの複数のコピーから提供することにより、全体の読み込みスループットを向上させることができます。リージョンは必要な場合、リードレプリカをスタンドアロンの DB インスタンスに昇格させることで、RDSに対してデータの冗長性を実現し、災害復旧を改善することができます
	- 自動フェールオーバーを実行する機能
		- マルチAZ構成
	- マルチ AZ 配置を使用して DB インスタンスの高可用性およびフェイルオーバーサポートを提供
	- RDSは利用している途中でインスタンスタイプを縮小することができます
	- RDS リードレプリカ
		- RDSに対してデータの冗長性を実現し、コスト最適に災害復旧対応を実現する機能
		- RDSに対してデータベース読み取りアクティビティのオフロードを許可する機能
- Organizations
	- アカウントの作成を自動化し、ビジネスニーズを反映したアカウントのグループを作成し、それらのグループにポリシーを適用して管理できます。
	- これにより、開発者向けのAWSアカウントの作成を自動化し、それらのアカウントのエンティティに必要なAWSサービスへのアクセスのみを許可するために、独自のOUを設定して、SCPによって管理することができます。
	- 単一の組織内の複数のAWSアカウントの支払いを統合
- S3 Transfer Acceleration
	- クライアントとAmazon S3バケット間の長距離にわたるファイルの高速かつ安全な転送を可能にする際に、利用するべき機能
- AWS WAF (Web Application Firewall)
  
	- ⇒Webアプリケーションのファイアウォール
	- 可用性低下、セキュリティ侵害、リソースの過剰消費など一般的なWebの脆弱性からアプリを保護する
	- 基本量は無料だが、セキュリティルールに基づいて課金
	- セキュリティルールの設定が必要
	- 適用先は、CloudFront/Application Load Balancer/API Gatewayから選択
- AWS Shield
  
	- DDoS攻撃に対する保護サービス
	- StandardプランとAdvancedプラン(AWS WAFが無償で無制限に利用可能)がある
	- エッジロケーションで使用
	- インフラに対するファイアウォール
- Inspector
  
	- EC2上のアプリのセキュリティ・コンプライアンス向上のための脆弱性診断サービス
	- 自動でアプリを診断し、問題をリスト化
- Amazon EMR(Elastic Map Reduce)
	- ビッグデータのセットを分析および処理するために利用するサービス
	- Apache Hadoop や Apache Spark などのビッグデータフレームワークとして、大量のデータを処理および分析するマネージド型クラスタープラットフォーム
	- クラウドネイティブなビッグデータプラットフォーム
		- MACHINE LEARNING
		- 抽出、変換、読み込み (ETL)
		- クリックストリーム分析
		- リアルタイムストリーミング
		- インタラクティブ分析
		- ゲノミクス
- Amazon Kinesis
	- ストリーミングデータをリアルタイムで収集、処理、分析する
- Amazon Athena
	- SQLの分析
	- インタラクティブなクエリサービスで、Amazon S3 内のデータを標準 SQL を使用して簡単に分析
- AWS SDK
	- 各言語に対応したAWS SDKを選択しすることで、選択したプログラミング言語を使用して、AWS でアプリケーションを簡単に開発することができます。
- CloudFront
	- 高速コンテンツ配信ネットワーク (CDN) サービス
	- グローバルに利用されるWEBアプリケーションのコンテンツを最適に提供するためにはCloudFrontによるコンテンツ配信を実施することが最適な構成
	- 課金対象
		- トラフィックの分散
			- データ転送とリクエストの価格は地域によって異なり、価格はコンテンツが配信されるエッジの場所に基づいています。
		- リクエスト
			- リクエスト（HTTPまたはHTTPS）の数と種類、およびリクエストが行われた地域。
		- データ転送アウト
			- Amazon CloudFrontエッジロケーションから転送されたデータの量。
	- ルーティングはしない
- Route53
	- 可用性と拡張性に優れたクラウドのドメインネームシステム (DNS) ウェブサービス
	- DNS ヘルスチェックを構成し、トラフィックを正常なエンドポイントにルーティング
	- アプリケーションやそのエンドポイントの正常性を独立してモニタリングできる
	- Webサーバーのヘルスチェックに基づいた監視にも利用できる
	- ユーザーとリソースの間の物理的な距離に基づいてトラフィックをルーティングするために、地理的近接性ルーティングを使用
- Global Accelerator
	- 世界中のユーザーに対して、地理的に近いエンドポイントにトラフィックをルーティングするために利用するサービス
	- エンドポイントにトラフィックをルーティングすることで、ローカルまたは世界中のユーザーに提供するアプリケーションの可用性とパフォーマンスを改善
	- AWS グローバルネットワークを使用してユーザーからアプリケーションへのパスを最適化し、TCP および UDP トラフィックのパフォーマンスを改善
	- アプリケーションエンドポイントの状態を継続的に監視し、異常なエンドポイントを検出し、1 分以内に正常なエンドポイントにトラフィックをリダイレクト
- AWSプロフェッショナルサービス
	- AWSで希望するビジネス成果を達成するのためにAWSから提供されている支援プログラム
- AWS Trusted Advisor
	- AWSでインフラ構築をする際に、インフラのセキュリティ最適化に関する推奨事項を提供するAWSサービス
	- ベストプラクティスに導いてくれるツール
	- コスト最適化、セキュリティ、フォールトトレランス、パフォーマンス、サービス制限の5つのカテゴリにわたってベストプラクティスチェックと推奨事項の豊富なセットを提供するオンラインツール
- AWSのアイデンティティ
	- IAMユーザー
	- IAMグループ
	- IAMロール
- IAMポリシー
	- アクセス管理をするために作成し、IAMアイデンティティにアタッチする
	- ポリシーは AWS のオブジェクトであり、アイデンティティやリソースに関連付けて、これらのアクセス許可を定義
- Storage Gateway
	- オンプレアプリとAWSのストレージをシームレスに接続利用するためのゲートウェイ
	- 長期的なデータのバックアップとアーカイブに使用できる最も費用対効果の高い構成を実現できるAWSサービス
- OpsWorks 
	- Chef や Puppet のマネージド型インスタンスを利用できるようになる構成管理サービス
	- Chef や Puppet は、コードを使用してサーバーの構成を自動化できるようにするためのオートメーションプラットフォーム
	- Puppetを使用してEC2インスタンスの構成方法を自動化することができます。
- Fargate
	- サーバーレスとなるAWSリソース
	- ECS(Elastic Container Service)とEKS(Elastic Kubernetes Service)の両方で動作する、コンテナ向けサーバーレスコンピューティングエンジン
	- ECSにはAWS Fargateが搭載されているため、サーバーをプロビジョニングまたは管理しなくてもコンテナーをデプロイおよび管理できます
-  CodeCommit
	- 完全に管理されたソース管理サービスであり、企業が安全で拡張性の高いプライベートGitリポジトリを簡単にホストできるようにします。
	- AWS CodeCommitを使用して、ソースコードからバイナリまでのあらゆるものを安全に保存でき、ライブラリなどのアプリケーション資産をコードとともに保存することが可能です。
- SNS（Simple Notification Service）
	- コンポーネント間のメッセージングをプッシュ方式で実施するサービス
	- マイクロサービス、分散型システム、およびサーバーレスアプリケーションの分離を可能にする、高可用性で、耐久性に優れたセキュアな完全マネージド型 pub/sub メッセージングサービスです
- SMS（Server Migration Service）
	- 多数のオンプレミスワークロードをAWSに移行するために最も速い方法
- STS（Security Token Service）
	- AWSリソースに対して一時的な認証情報を提供する機能
- SQS（Simple Queue Service）
	- 完全マネージド型のメッセージキューイングサービスで、マイクロサービス、分散システム、およびサーバーレスアプリケーションの切り離しとスケーリングが可能
	- マイクロサービスで使う！
- オンデマンド、リザーブ、およびスポットAmazon EC2 Linuxインスタンスは、1秒あたり最低1分で課金
- リザーブドインスタンス
	- 1〜3年間の利用継続
- Elastic Beanstalk
	- Webアプリの環境を簡単にAWSに構築
	- アプリケーションを実行しているインフラストラクチャについて学習することなく、AWS クラウドでアプリケーションをすばやくデプロイし、管理できます
	- 容量プロビジョニング、負荷分散、自動スケーリング、およびアプリケーションのモニタリングなどの機能を提供するAWSサービス
- CloudFormation
  
	- インフラ構築をコード化して自動セットアップを支援するサービス
	- AWSの各リソースを含めた環境を自動作成／更新／管理
	- インフラストラクチャ全体をテキストファイルでモデル化できます
	- 同じ内容でリソースを展開できる
- ECR(Elastic Container Registry)
	- 開発者がDockerコンテナイメージをAWSクラウドに保存・管理
	- ECRは完全マネージド型の Docker コンテナレジストリとして提供されている
- ECS (Elastic Container Service)
  
	- コンテナ管理を行うマネージドサービス
	- Docker コンテナをサポートする拡張性とパフォーマンスに優れたコンテナオーケストレーションサービスです
- AWSサービスへのプログラム呼び出し認証
	- アクセスキー
- Cost Explorer
	- コストと使用状況を表示および分析するために使用できるツール
	- 調べる必要がある分野を特定し、コストを把握するために使用できる傾向を確認できます
		- AWSの利用状況を確認してコストを最適化
- Amazon Cognito
	- ウェブアプリケーションおよびモバイルアプリに素早く簡単にユーザーのサインアップ/サインインおよびアクセスコントロールの機能を追加できる
	- 顧客がモバイルからAWSリソースにアクセスできるようにする
- Infrastructure Event Management
	- エンタープライズサポートプランの一環として、アーキテクチャおよびスケーリングのガイダンスを提供できるサービス
	- ビジネスを左右する重要な時期にガイダンスやリアルタイムのサポートを受けることができ、アプリケーション公開、インフラストラクチャ移行、マーケティングイベントに利用されます。
	- AWS エキスパートがイベント計画に関わり、アーキテクチャや運用に関するガイダンスや、規範的で段階的なアプローチを使用したリアルタイムのサポートを提供してくれます。
- ペネトレーションテスト
	- 責任共有モデルにおいてEC2インスタンスに対するセキュリティなどは顧客側の責任範囲とされており、EC2インスタンスへのペネトレーションテストは顧客が自由に実施することが可能
- AWS Artifact
	- AWSとの契約を管理できるサービス
	- 重要なコンプライアンス関連情報の頼りになる一元管理型のリソースです。AWS Artifact では、AWS のセキュリティおよびコンプライアンスレポートと特定のオンライン契約にオンデマンドでアクセスできます
- AWS X-Ray
	- 分析とデバッグのための強力なツール
	- 本番環境や分散アプリケーション (マイクロサービスアーキテクチャを使用して構築されたアプリケーションなど) を分析およびデバッグできます
- AWS CloudHSM
	- グローバルな業界標準の暗号化対応実施を保証するために利用されるサービス
	- クラウドベースのハードウェアセキュリティモジュール (HSM) 
	- AWS クラウドで暗号化キーを簡単に生成して使用できるようになります
- コンシェルジュサポート
	- ユーザーとユーザーのアカウントによく通じたシニアカスタマーサービスプロフェッショナルが、ユーザーからの請求、アカウントに関するお問い合わせに迅速かつ効率的に回答
	- エンタープライズサポートプランの一部として含まれ
- TAM（テクニカルアカウントマネージャー）
	- エンタープライズサポートプラン、継続的サポートの連絡先
- 信頼性（Reliability）
	- 「障害の発生のしにくさ」のことで、システムやサービスが使えなくなる頻度やその間隔を示す指標
	- インフラストラクチャまたはサービスの中断から回復し、需要を満たすためにコンピューティングリソースを動的に取得し、構成の誤りや一時的なネットワークの問題などの中断を緩和するシステムの機能が含まれる
	- 冗長なシステム構成を作ることで障害への早期復旧がなされるなどが信頼性には必要となります。
- AWS 不正使用対策チームに連絡
	- ✔スパム
		- AWS 所有の IP アドレスから不要なメールが届く、または AWS リソースがスパムウェブサイトやフォーラムに使用されている。
	- ✔ポートスキャニング
		-  ログに、1 つ以上の AWS 所有の IP アドレスがサーバー上の複数のポートにパケットを送信していることが示されており、セキュリティで保護されていないポートを検出しようとしていると考えられる。
	- ✔サービス拒否攻撃 (DOS):
		- ログに、1 つ以上の AWS 所有の IP アドレスがリソースのポートをパケットで溢れさせるために使用されていることが示されており、サーバーまたはサーバー上で実行されているソフトウェアを圧倒したりクラッシュさせようとしていると考えられる。
	- ✔侵入の試み:
		- ログに、1 つ以上の AWS 所有の IP アドレスがリソースへのログイン試行に使用されていることが示されている。
	- ✔不快なコンテンツや著作権で保護されたコンテンツのホスティング:
		- AWS リソースが著作権者の同意なしに、違法コンテンツをホストまたは配布したり、著作権で保護されたコンテンツを配布するために使用されている証拠がある。
	- ✔マルウェア配信:
		- インストール先のコンピュータやマシンに不正アクセスしたり危害を加えるために意図的に作成されたソフトウェアを配布するために、AWS リソースが使用されている証拠がある。
- 柔軟で弾力性があるクラウドアーキテクチャの原則
	- オンデマンドの変化に基づいて、自動プロビジョニングできるアーキテクチャを設計する
	- 弾力性の概念には、需要の変化に基づいてリソースを自動的に拡大または縮小するサービスの機能が含まれる
	- AWSでこれを実現する代表的なサービスであるAutoScalingは、需要の増減に応じてAmazon EC2インスタンスを追加または削除するプロセスを自動化するのに役立つ
- AWSクラウドの主要な設計原則
	- ✔スケーラビリティ
	- ✔デプロイ可能なリソース
	- ✔環境の自動化
	- ✔疎結合化
	- ✔サーバーの代わりのマネージドサービス
	- ✔柔軟なデータストレージオプション
- AWSのセキュリティ利点
	- 1-データの安全な保護
		- AWSインフラストラクチャは、プライバシーを保護するために強力な安全対策を講じています。すべてのデータは安全性の高いAWSデータセンターに保存されます。
	- 2-コンプライアンス要件を満たす
		- AWSは、インフラストラクチャで多数のコンプライアンスプログラムを管理します。これは、コンプライアンスのセグメントがすでに完了していることを意味します。
	- 3-節約
		- AWSデータセンターを使用してコストを削減します。独自の施設を管理することなく、最高水準のセキュリティを維持します。
	- 4-迅速な拡張
		- AWSクラウドの使用状況に合わせてセキュリティが拡張されます。ビジネスの規模に関係なく、AWSインフラストラクチャはデータを安全に保つように設計されています。
- Amazon Connect
	- クラウドベースのコンタクトセンターソリューション
	- Amazon Connectを使用すると、カスタマーコンタクトセンターのセットアップと管理が簡単になり、あらゆる規模で信頼できるカスタマーエンゲージメントを実現できます
- SCP（サービスコントロールポリシー）
	- 組織単位（OU）によるアクセス許可を設定するドキュメント
- AWS のコストと使用状況レポート
	- これまでの利用経験からコストを抑えるための知見を得たい
	- サービス、料金、予約などに関するメタデータ (例: Amazon EC2 リザーブドインスタンス (RIs)) を含む、AWS のコストと使用状況に関する最も包括的なデータを提供
- ルートアカウント
	- アクセスキーを作成しない、が最大の保護
- Lightsail
	- 最も容易に予測可能な低価格設定でAWS上に仮想プライベートサーバーを起動および管理する方法
- ルートユーザーと管理者がアクセスしたすべてのアカウントをロックダウン
	- アカウントのユーザー名とパスワードを変更
	- すべてのアクセスキーを回転（変更）
	- MFAを有効
	- すべてのユーザーのアカウントにIP制限を設定
- IAMポリシーのインラインポリシー
	- ユーザーが⾃⾝で作成および管理するポリシーであり、プリンシパルエンティティにアタッチ
- Access Advisor
	- IAMエンティティ(ユーザー、グループ、ロール) が最後にAWSサービスにアクセスした⽇付と時刻を表⽰する機能
- ターミネーションポリシー
	- デフォルトではOldest Launch ConfigurationからClosest To Next Instance Hourの順番に適用
	- 最も古い起動設定のインスタンスから削除
- パワーユーザーのアクセス権
	- IAMユーザーやグループの管理以外の全てのAWSサービスへのフルアクセス権限を有している
	- IAMの捜査権限ができないため、管理者としては利用できないが、それ以外のあらゆるサービスを利用することができます。
- Rekognition
	- 顔認証システムを作成するために利用できるAWSサービス
- パブリックホストゾーン
	- インターネット上に公開されたDNSドメインレコードを管理するコンテナ
	- インターネットのDNSドメインに対するトラフィックのルーティング方法を定義する