【随時更新】【これだけ読めばOK】AWS完全未経験が、AWSソリューションアーキテクト試験の勉強でやったことの全て

# 背景
* 海外転職が決まったのですが、次の転職先でAWSをメインで使う予定
* AWSを全く使ったことがないため、まずはAWSソリューションアーキテクト試験の合格に向けて勉強することにしました
* 試験代は15000円と高いが転職的に会社が負担してくれるということ、入社前の評価UPを期待して、1発合格するべく、勉強をスタート
* ただ、普通に勉強しているだけでは、モチベーションが続かないため、実際に勉強で使った教材や期間などを書きながら、今後受験する人の参考になれば幸いと考えている

# スペック
* 大手企業でエンジニア歴3年
* フロントエンド・バックエンドのシステム開発の経験あり
* インフラの経験は一切なし

# AWSソリューションアーキテクト試験のために勉強したこと
* ※随時アップデート中です

## 1. これだけでOK！ AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座（SAA-C02試験対応版）
* この教材を約1週間ほどで終わらせた
* 今回は資格取得だけでなく、実際に仕事でもAWSを使う予定なので、体系的に学ぶことを決意
* Udemyでハンズオン形式でAWSソリューションアーキテクト試験を勉強できる教材を見つけたので、まずはこの教材を順番に実施
* 基本的に倍速で講義を聞き、必要に応じてハンズオンを実施
    * 例えば、データベース周りの講義では、データベース作成で結構時間がかかるため、飛ばしながら進めた
* これまでAWSを触ったことがなかったが、広く浅くAWSの主要機能を学ぶことができ、非常に有益だった
* 各機能の説明資料があり、ダウンロードできたため、復習する際にも非常に役に立った

## 2. AWS認定資格試験テキスト　AWS認定 ソリューションアーキテクト-アソシエイト
* Udemy教材だけだと、試験の出題範囲をカバー出来ないというレビューを見かけたため、参考書を別で購入
* 暇がある時にパラパラ読みながら、Udemy教材では出てこなかった機能を重点的に確認しました

## 3. 【SAA-C02版】AWS 認定ソリューションアーキテクト アソシエイト模擬試験問題集（6回分390問）
* 上記2. の参考書と並行して、アウトプットとして模擬試験(Udemy教材)を解き始めました。
* 結果としては40%~50%の正答率で全く歯が立たず
* 間違えた箇所を中心に、qiitaの以下メモにまとめながら、模擬試験を解き進めました
    * qiitaにまとめながら個人メモをとるのは個人的に非常におすすめ
    * 他の人に見られても大丈夫な文章を書こうとするため、メモの質が上がる
* 教材のレビューをみると、難易度が高いと書いてあったので、途中で解き進めるか迷いましたが、１発合格を目指して、全ての問題を解きました。

## 4. Amazon Web Services 基礎からのネットワーク&サーバー構築 
* 模擬試験を一通り解いてみて、ネットワークやサーバ構築周りが弱いことが分かったので、本で体系的に勉強することにしました
* 元値は3000円ですが、たまたまセールをやっていたので1500円ほどで購入できました
* ハンズオン形式で、自分が学びたかったVPC周りを順番に解説してくれているので、大変分かりやすいです
* 知っているところは飛ばしながら読んだので、ざっくり1日あれば十分読める内容です

## 5. その他
* 随時アップデート予定 

## AWSソリューションアーキテクト試験の勉強で学んだことメモ

* これまで紹介した教材で学んだことを箇条書きで紹介しています。
* 個人メモなので、見やすくないと思いますが、その点ご容赦ください。

### Redshift
* クラウド内で完全に管理されたペタバイト規模のリレーショナルデータベース型のデータウェアハウスサービス
* スナップショット用に無料ストレージを提供しているが、ストレージ容量が超過すると課金が発生→不要になった手動スナップショットを削除することで、費用対効果を高めることが可能
* 大量データの保存や並列処理によるパフォーマンス向上が可能
* **業務解析システム用のデータベースとして最適**
* シングルAZ配置のみをサポート
* 拡張VPCルーティングを設定することでVPC内にデータ移動を制御することが可能
* EC2のように、VPCエンドポイントやゲートウェイと接続したい場合に設定する必要がある
* レポーティングやBIに活用
* 障害回復は、Redshiftクラスターのクロスリージョンスナップショットを有効化する
* Redshiftクラスターに対する拡張VPCルーティングを有効にすることで、VPCに出入りするRedshiftクラスターのすべてのCOPYおよびUNLOADトラフィックを監視することができる
* WLM(Work Load Management)を利用することで、クエリ処理を実施する際に、照会内容をキューに経路指定することが可能

### CloudFront
* ユーザーから最も近いエッジロケーションにデータをキャッシュするコンテンツ配信ネットワーク（CDN）サービス
* データがエッジロケーションに存在しない場合、データをオリジンサーバーから取得してから配信する可能性がある
* Cache-Controlのmax-ageディレクティブが低い値に設定されていると、キャッシュ保持期間が非常に短いためリクエストは頻繁にオリジンサーバーに送信される。
* CloudFront 側でフェイルオーバのコントロールが出来る

### AutoScaling
* インスタンス起動時に問題が発生すると、グループ内で実施されているプロセスを中断する
* プロセスを中断することによって、問題を解析可能
* Auto ScalingがEC2タイプのヘルスチェックを利用していると、ELBのヘルスチェックが異常を示しているにも関わらず、EC2インスタンス側のステータスの問題がなければAuto Scalingが実行されません。

### AWS Storage Gateway
* オンプレミスアプリケーションによる AWS クラウドストレージのシームレスな使用を可能にするハイブリッドストレージサービス
* キャッシュ型ボリュームを使用すると、頻繁にアクセスされるデータをローカル環境に保持する
* 保管型ボリュームを使用すると、ローカルストレージをプライマリーとして利用し、データを非同期に S3にバックアップする
* ISCSIデバイスによりオンプレミス側と接続する機能を持つ

#### Amazon ECS
* Dockerコンテナサービスです
* Fargate起動タイプとEC2起動タイプの２つから選択可能
* Fargate起動タイプを使用すると、バックエンドインフラストラクチャをプロビジョニングおよび管理する必要なく、コンテナ化されたアプリケーションを実行できる。
* EC2起動タイプでは、EC2インスタンスのクラスターで、コンテナ化されたアプリケーションを実行できるが、EC2の設定が必要となる。

### EC2
* デフォルトでは、EC2インスタンスのパブリックIPアドレスは、インスタンスの停止後に解放される → Elastic IPを設定することで、EC2インスタンスの再起動後もIPアドレスが持続できる
* パブリックサブネットに設置されたEC2インスタンスはアウトバウンドトラフィックを直接にインターネット側に送信できるが、プライベートサブネットに設置されたEC2インスタンスはそれができない。
* **ユーザデータ**：「Linux インスタンスの起動時に実行するコマンド」を指定できる項目

### データベースへのインターネットアクセスを制限する方法
* プライベートサブネット内にDB用のインスタンスを設置する
* DBからはNATを通じたインターネットへの返信のみを許可する

### Amazon EFS
* NFSv4 プロトコルに基づいたファイルアクセス許可モデル、ファイルロック性能および階層ディレクトリ構造を使用
* 数千のEC2インスタンスとオンプレミスサーバーからの安全なアクセスを可能とする
* インスタンス間のデータ共有が可能となりますが、**インターネットを通じた第三者からのアクセスはできない**

### Amazon FSx
* Windows File Serverの仕組みを利用できるサービス
* フルマネージド型のネイティブ Microsoft Windows ファイルシステムを提供する
* SMBプロトコルに基づいて最大数千台のコンピューティングインスタンスからアクセス可能となるNTFSファイルシステム
* 共有ファイルストレージを必要とする Windows ベースのアプリケーションを AWS へ簡単に移行できる
* Access Control Lists (ACLs)、シャドウコピー、ユーザークォータなど、Windows ネイティブファイルシステムの機能をサポートしている

### AWS Direct Connect
* データセンターなどのオンプレミス環境からAWSへの専用ネットワーク接続を容易に確立
* AWSへの申請と設定などが必要不可欠となり、時間がかかる

### RDS
* データベースの暗号化は、データベースの作成中に行うことが可能
* リードレプリカによって、データベース (DB) インスタンスの読み込み処理のパフォーマンスと耐久性が向上する
* **レプリケーションラグ**：リードレプリカは非同期的にレプリケートされる個別のデータベースインスタンスであるため、レプリケーションデータが遅れることが多く、最新のトランザクションのいくつかを表示できない可能性があります。

* MyISAMはMySQLのストレージエンジンとして使用することはできない
* MySQLにおいて、推奨されるストレージエンジンはInnoDB

#### RDS プロキシ
* 必要となるデータベースへのコネクションプールを確立および管理し、アプリケーションからのデータベース接続を少なく抑える機能

#### RDSの読み取りキャパシティを向上させる方法
* RDS リードレプリカ(一番コストがかからない)
* 高性能なインスタンスタイプに変更
* ElastiCacheをRDSの前面に配置(一番効果が高い)

### Aurora
* MySQLおよびPostgreSQLと互換性のあるクラウド向けのリレーショナルデータベース
* 従来のエンタープライズデータベースのパフォーマンスと可用性に加え、シンプルさとコスト効率性も兼ね備えている。
* プライマリーとなるDBクラスターが設置されているリージョンとは異なるリージョンにリードレプリカを作成可能
* マルチAZ構成による高速フェイルオーバーは、リージョン障害には対応できない

### AWS Lambda
* 他のAWSリソースと連携するLambdaファンクションを作成する際には**IAMロールをLambdaファンクションに設定**して、アクセス権限を付与する
* Lambda関数は最大512MBまでのデータ容量を扱うことが可能

### VPCピアリング
* 2つのVPC間をネットワーク接続し、トラフィックをプライベートにルーティングできる→2つのVPC内に設定されたインスタンスが、あたかも同じネットワーク内にあるように相互に通信できる
* エッジ間ルーティングをサポートしていない

### AWS OpsWorks
* PuppetまたはChefを使用してクラウド企業内のアプリケーションを設定および運用する環境自動化サービス
* AWSおよびオンプレミスでアプリケーションとサーバーを管理できる
* 負荷分散、データベース、アプリケーションサーバーなど、さまざまなレイヤーを含むスタックとしてアプリケーションをモデル化可能
* 
### Amazon S3
* **プレフィックスを利用して日付ベースでアップロードを分散する**ことで少なくとも 3,500 リクエスト/秒、データの取得で 5,500 リクエスト /秒をサポートできるようにパフォーマンスを自動的に向上可能
* ハッシュを利用したランダムな プレフィックスによるパフォーマンス向上はデフォルト対応となった
* 初期段階では文書へのアクセス頻度が高いためS3 Standardなどのアクセス効率が良いストレージタイプを選択し、長期保存用ストレージとしては、Glacierを利用することが一般的
* オブジェクトの更新が同じキーに対して行われると、更新直後の読み取りリクエストには更新内容が反映されていない可能性がある
* Amazon S3 Transfer Acceleration を使用すると、クライアントと S3 バケットの間で、長距離にわたるファイル転送を高速、簡単、安全に行えるようになる
* Transfer Acceleration では、Amazon CloudFront の世界中に分散したエッジロケーションを利用しています。
* サーバーサイド暗号化を使用すると、Amazon S3 はオブジェクトをデータセンター内のディスクに保存する前に暗号化し、オブジェクトをダウンロードするときにS3側で自動で復号
* Amazon S3 分析のストレージクラス分析により、ストレージアクセスパターンを分析し、適切なデータを適切なストレージクラスに移行すべきタイミングを判断できる。
* S3バケットで利用可能なイベント通知先
    * Lambda
    * SNS
    * SQS
   
### STS
* AWSセキュリティトークンサービスの略
* 一時的な認証許可をあたえる機能
* 中長期的なアクセス権限を付与するため際には不適切

### SQS
* 完全マネージド型のメッセージキューイングサービス
* システムの分散処理化に使用される
* 優先度を設定することができ、優先的に処理されるキューとそうではないキューとに振り分けることが可能
* デフォルトのメッセージ保持期間は4日間。設定を変更することで、最大14日まで保持可能。
* 他のコンシューマーが同じメッセージを再処理しないように、可視性タイムアウトを設定可能。この時間内に他のコンシューマーが同じメッセージを受信したり処理したりすることはできない。メッセージのデフォルトの可視性タイムアウトは 30 秒。最小値は0秒、最大スケールは 12 時間に変更可能
* SNSはイベント通知を起点としたトリガーとして利用し、実処理はSQSに連携してポーリングするというのが標準的なAWSでのアーキテクチャ構成
* 保存できるメッセージの数は無制限


### VM Import/Export
* 仮想マシン (VM) イメージを既存の仮想化環境から Amazon EC2にインポートし、それを元の環境にエクスポートすることが可能

### AWS WAF
* CloudFront に転送される HTTP および HTTPS リクエストをモニタリングして、コンテンツへのアクセスを制御可能にするウェブアプリケーションファイアウォール
* Referer制限によって直接にURLリンクを参照することを制限できる

### ステートレスアプリケーション
* システム上のやり取りの状態情報が不要なため、セッション情報が格納されていないアプリケーション → **同じ入力が与えられたときに、どのエンドユーザに対しても同じ応答を提供するアプリケーション**

### Glacier
* 標準取り出し：3~5時間以内
* 迅速取り出し：1~3分以内
* 大容量取り出し:5~12時間以内
* Vault Lock:データを保存後に編集不可とする

### DynamoDB
* NoSQLデータベース
* 小規模データを保存・処理するためにはNoSQLデータベースを利用することが最適
* セッションデータやユーザー設定、メタデータなどを格納するための理想的なデータベースサービス
* マルチAZ構成で起動する機能はない
* SQSを利用することで、キューイングによってDynamoDBへの処理負荷を下げることができる→費用対効果が良い
* DynamoDBストリームを使用してDynamoDBテーブルへの変更ステータスが履歴として残る

### NATゲートウェイ
* NATインスタンスの代わりに使用できるマネージド型サービス

### セキュリティグループ
* 変更と新規設定は全てのEC2インスタンスに**即座に**反映される。

### Amazon Elastic Transcode
* 映像・音声をユーザーが再生可能なフォーマットに変換するクラウドサービス

### API ゲートウェイ 
* APIを介してバックエンドサービスへのHTTPからのアクセスを提供
* Lambdaと一体となって利用できるサービス
* APIゲートウェイをLambdaファンクションと統合する設定を実施することで、HTTPからLambdaファンクションへのアクセスが可能

### Elastic Beanstalk
* ウェブアプリケーションやサービスを使い慣れたサーバーで デプロイおよびスケーリングするためのサービス
* 実行時間の長いワーカープロセスに有効

### Kinesis
* データ保存期間が２４時間に設定されている。
* データレコードはKinesisストリームに加えられてからデフォルトで24時間以内までアクセスできるように設定されている
* Kinesis Analyticsはストリームデータを標準的 なSQLクエリでリアルタイ ムに可視化・分析　→　**ログ解析には向いていない。**

### Blue/Greenデプロイメント
・異なるバージョンのアプリケーションを実行する環境をそれぞれ1つずつ作成し、それらの環境間でトラフィックを移動（ブルー⇒グリーンへ移動）させることで、アプリケーションの新バージョンをリリースするために利用される技術

### RDSプロキシ
* アプリケーションとRDSデータベースの間の仲介役として機能
* 必要となるデータベースへのコネクションプールを確立および管理し、アプリケーションからのデータベース接続を少なく抑える
* Lambda関数からデータベースに直接流れるすべてのデータベーストラフィックを処理

### Sharding
* データベース内の複数のテーブルにデータを分割するための一般的な概念
* リクエスト増加などで単一のマスターDBの運用で限界がある場合に、 一定のルールに従いデータを複数のDBに振り分けることでアクセスを分散させることが可能

### Amazon EMR
* オープンソースのフレームワークである Apache Spark と Hadoop を使用して、膨大な量のデータを迅速かつコスト効率よく処理して分析するサービス
* Apache Spark、Apache Hive、Presto などのビッグデータフ レームワークを使用して、大量データを処理・分析する

### Amazon Elastic Kubernetes Service (Amazon EKS) 
* フルマネージド型の Kubernetes サービス
* 最も機密性が高くミッションクリティカルなアプリケーションを EKS で実行

### ネットワークACL
* 1つ以上のサブネットのインバウンドトラフィックとアウトバウンドトラフィックを制御するファイアウォールとして動作
※ **セキュリティーグループはインスタンスに対するトラフィック制御を行う**
* ネットワークACLルールは低い値から高い値にかけて評価され、一致する許可/拒否ルールが設定されるとすぐに実行される。


### AWS Key Management Service (KMS)
・キーを簡単に作成・管理し、幅広い AWS のサービスやアプリケーションで暗号化の使用を制御

### ElastiCache
* 完全マネージド型の インメモリDB。
* オープンソースであるRedis および Memcached といった普及しているオープンソース互換のインメモリデータストアを、シームレスにデプロイ、運用、スケール可能。
* 高スループットかつ低レイテンシーなインメモリデータストアからデータを取得して、大量のデータを扱うアプリケーションを構築したり、既存のアプリケーションのパフォーマンスを改善したりすることが可能。
* ユーザー行動データの高速な処理には最適なDB
* ランキングやレコメンデーションの実装に使うための便利な機能を有している

### パイロットライト
停止した状態の最小限の構成を別のリージョンに用意しておき、障害発生時に立ち上げる

### エンドポイント
* ネットワークにつながっているパソコンとかサーバ（サービスを提供するコンピュータ）とかスマホとかのこと

### VPCエンドポイント
* プライベートなサブネットからAWSのサービスにアクセスする際にNATゲートウェイ、NATインスタンスなどが不要となるため、AWSの利用料を削減できる
* インターネットを経由せずAWSのサービスにアクセスできるため、よりセキュアなアクセス経路が実現できる
* VPCエンドポイント（ゲートウェイ型）は、Amazon S3とDynamoDBをサポートしている

### SSE-S3
* Amazon S3 がキーを管理。キーは定期的に更新される。
* S3バケットの設定画面で選択するだけで、データの暗号化を実施してくれます→ユーザの管理が不要
* 暗号化方式に、AES-256暗号化を使用している

### SSE-KMS
* ユーザがKMSでキーを生成して管理。

### Amazon Elastic Container Registry (ECR) 
* 完全マネージド型の Docker コンテナレジストリ。
* このレジストリを使うと、開発者は Docker コンテナイメージを簡単に保存、管理、デプロイ可能

### VPC
* AWSのVPC内で設定できるCIDR範囲として、/16から/28までが利用可能
* VPCのDNS hostnamesオプション有効化されていないと、サブネットで起動されたインスタンスはDNS名を取得できない。
* VPC内に設置したEC2インスタンスに対してインターネットからアクセスできない場合は、以下のような要因が考えられる。
+ インターネットゲートウェイがサブネットに設定されていない。
+ ネットワークACLの設定でインターネットアクセス許可が設定されていない。
+ セキュリティグループの設定でインターネットアクセス許可が設定されていない。
+ パブリックIPアドレスが付与されていない。
* VPCのDNS hostnamesオプションが有効化されていないと、サブネットで起動されたインスタンスはDNS名を取得できない
* 
### IAMユーザとIAMロール
* IAMユーザー：ユーザーアカウントの権限設定に利用します。
* IAMロール：リソースに対するアクセス権限設定にを利用します。

### ゴールデンイメージ
* 起動設定においてソフトウェアがインストールされた最新の状態のAMI

### AWS Snowball edge
* 安全なデバイスを使用して AWS クラウドの内外に大量のデータを転送するペタバイト規模のデータ転送サービス
* 100 TB のデータ転送デバイス
* 利用可能な領域は80TB

### Snowball Edge Compute Optimized
* 機械学習、フルモーション動画分析、分析、ローカルコンピューティングスタックなどのユースケースに強力なコンピューティングリソースを提供
* S3 互換オブジェクトストレージまたは EBS 互換ブロックボリューム用に 42 TB の使用可能な HDD 容量を提供

### オリジンアクセスアイデンティティ (OAI) 
* 特別な CloudFront ユーザー
* CloudFront が OAI を使用してファイルにアクセスしてユーザーに提供できるようにアクセス許可を構成

### CloudFormation
* Resourceのみが必須項目。
* Properties／Outputs／Description／Metadataは必須ではなくオプショナルで設定する要素。
* CloudFormationスタックセット：CloudFormation テンプレート内に AWS リソースの設定を定義して、それから数回のクリックで複数の AWS アカウント及び/あるいはリージョンにそれらを水平展開する
* Dependenciesというセクションはありません。

### カスタマーゲートウェイ
* AWS側とユーザ側をVPN接続する際にユーザ側のアンカーとして働く存在。
* AWS側で同様の役割を持っているのは、仮想プライベートゲートウェイ(VGW)

### CORS(Cross-Origin Resource Sharing)
* ブラウザがオリジン(HTMLを読み込んだサーバのこと)以外のサーバからデータを取得する仕組み

### AutoScalingの設定手順
1. AMIが準備する
2. 最初に起動テンプレートを設定する
3. AutoScalingグループを設定する

### S3 One Zone-IA
* アクセスが頻繁ではないデータをコストを抑えて保存するのに最適なストレージクラス
* データ取り出しは通常の標準クラスと同じように即時に実行可能
* 単一AZにデータを保存することによってコストを節約
* ログファイルなどのマスターではないデータは、One Zone-IAを利用することがユースケースとして最適

### Amazon Cognito
* ウェブアプリケーションおよびモバイルアプリに素早く簡単にユーザーのサインアップ/サインインおよびアクセスコントロールの機能を追加

### Amazon Athena
* Amazon S3 から直接データに対してクエリ処理が可能
* 標準のSQL式を使用してAmazon S3のデータを簡単に分析できる
* Amazon S3のデータをポイントし、スキーマを定義し、標準のSQL式を使用してクエリを開始する
* ほとんどの結果は数秒以内に配信される


### Amazon Data Lifecycle Manager (Amazon DLM)
* EBSのバックアップであるスナップショットの作成、保存、削除を自動化できる

### EC2インスタンスのデフォルトメトリクス以外の詳細なログ情報を取得する方法
* CloudWatchエージェントの利用：対象のEC２インスタンスにインストールすることで、CloudWatchによりサーバー内部の詳細なログが取得できるようになる
* CloudWatch Logs:取得したログを集約することができ、EC2インスタンスのログ管理を実施できる

### Client Side Encryption（CSE）
* ユーザーが独自の暗号化キーを利用して暗号化したオブジェクトをS3に保存して、暗号化キーの生成・監理はクライアントで実行する形式

### Kinesis Data Firehose
* ストリームデータをS3やRedshiftなどの分析ツールに送るサービス
* ストリーミングデータをデータレイクやデータストア、分析ツールに確実にロードする最も簡単な方法
* ストリーミングデータをキャプチャして変換し、Amazon S3、Amazon Redshift、Amazon Elasticsearch Service、Splunk にロード

### Kinesis Data Streams
* ストリームデータを受けるサービス

### Elastic Container Registry(ECR)
* Dockerイメージ管理
* Docker社が提供しているDockerHubですが、そのAWS版

### Elastic Container Service(ECS)
* AWS上でDockerコンテナを稼働させる環境と、そのコンテナをスケールするための機能を提供
* Dockerコンテナ運用のためのECS

### AWS CloudHSM
* 安全なキーストレージや高パフォーマンスの暗号化オペレーションをAWSアプリケーションに対して簡単に追加できるようにするクラウドベースのハードウェアセキュリティモジュール (HSM)
* AWS CloudHSM では不正使用防止策が施された HSM へのシングルテナントアクセスを利用できます。
* HSM は暗号化モジュール向けの FIPS 140-2 レベル 3 標準に準拠

### ストレージゲートウェイ キャッシュ型ボリュームと保管型ボリュームの違い
* キャッシュ型ボリューム：プライマリーストレージがAmazon S3
* 保管型ボリューム：プライマリーストレージがローカルストレージ

### AWS Data Pipeline
* データの移動と変換を自動化するサービス
* データ駆動型のワークフローを定義して、タスクの正常な完了をトリガーにして、次のタスクを実行する
* DynamoDBに設定することが可能であり、定期的なデータ取得タスクを設定させることができます。

### オンプレミスのインフラストラクチャをAWSクラウドネットワークに接続する対応
* Direct Connect
* VPN

### AWS CloudTrail
* AWS アカウントのガバナンス、コンプライアンス、運用監査、リスク監査を行うためのサービス
* 取得ログはユーザーのログ

### AWS Config
* AWS リソースの設定を評価、監査、審査できる構成管理のサービス

### Connection Draining
* 既存の接続を開いたまま、登録解除または異常なインスタンスへのCLBのリクエスト送信を停止できる→ロードバランサーは、登録解除または異常なインスタンスに対して行われた実行中のリクエストを完了するトラフィック処理を実施可能
* ELBより、EC2インスタンスの切り離しを実施
* 処理中のリクエストは処理を続ける
* 新規リクエストは拒否する
* 処理中のリクエストがタイムアウト時間待っても終了しない場合は、処理を破棄

### SNSとSESのメール機能の違い
* SNS：特定IAMユーザーへのメール通知に向いている
* SES：不特定多数の一般ユーザーへのメール通知に使う

### Aurora Serverless
* DB インスタンスクラスのサイズを指定せずにデータベースエンドポイントを作成して、最小と最大のキャパシティーを設定
* データベースエンドポイントがプロキシフリートに接続される。このプロキシフリートでは、ワークロードをルーティングする先のリソースのフリートがオートスケーリングされます。
* プロキシフリートを使用すると、最小と最大のキャパシティー仕様に基づいてリソースを自動的にスケールする
* 処理負荷が一定ではないケースにはAurora Serverless を利用する

### AWS Certificate Manager
* SSL証明書を作って、ELBに設定することで、証明書の費用が実質無料で安全なサイトが用意できる→クライアントとELB間のデータ保護が実施されます。

### Amazon Simple Workflow Service(SWF)
* 分散アプリケーションコンポーネント間での作業の調整を容易にするWebサービス

### AWS X-Ray
* アプリケーションが処理するリクエストに関するデータを収集するサービス

### ベアメタル
* メモリ・ハードディスクなど、物理的な部分は用意されているが、OSなどのソフトウェアがインストールされていない素のサーバーのこと

### Amazonリソースネーム（ARN）
* AWSリソースを一意に識別する

### DynamoDB Accelerator(DAX)
* 1 秒あたりのリクエスト数が数百万件になる場合でも、ミリセカンドからマイクロセカンドへの最大 10 倍のパフォーマンス向上を実現
* 特定のデータへのアクセスが集中する場合、そのデータがキャッシュに保持されてアクセスがキャッシュ上で行われれば、処理性能を大幅に向上させることができる

### Amazon S3 Select
* Amazon S3バケット内のオブジェクト内のデータをより迅速かつ安価に分析および処理できる
* 単純なSQL式を使用してAmazon S3のオブジェクトからデータのサブセットを取得する機能を提供することで機能
* 高度なデータ分析はできない

### AWS Shield
* マネージド型の分散サービス妨害 (DDoS) に対する保護サービス
* AWS で実行しているアプリケーションを保護
* 直接的にDDoS攻撃を回避するにはWAFではなくAWS Sheildを設定する

### AWS Organizations
* 一括請求により、単一の組織内の複数のAWSアカウントの支払いを統合できます。 
* Amazon EC2やAmazon S3などの一部のサービスでは、ユーザーがサービスをより多く使用すればするほど、ユーザーに低価格を提供する特定のボリューム価格が利用される→ボリュームを統合して請求することによって、コストを削減できる可能性がある

### リザーブド購入形式の種類
* EC2リザーブドインスタンス
* RDSリザーブドインスタンス
* ElastiCacheリザーブドノード
* DynamoDBリザーブドキャパシティ
* Redshiftリザーブドノード

### Elastic IP
* 起動しているEC2インスタンスで、EIPを1つだけ使用している場合のみ、無料で利用できる

### AWS Server Migration Service (SMS)
* 数千のオンプレミスワークロードを従来よりも簡単に、かつ短時間で AWS に移行できるエージェントレスサービス
* ライブサーバーボリュームの増分レプリケーションの自動化、スケジュール設定、および追跡が可能なため、大規模なサーバーの移行作業を簡単に調整できる

### AWS Global Accelerator
* 世界中の顧客に提供するアプリケーションの可用性とパフォーマンスを改善するネットワークサービス
* AWS がホストするアプリケーションに対して固定エントリポイントとして機能する静的 IP アドレスを提供することでグローバルアプリケーションの管理を容易にし、様々な AWS リージョン、アベイラビリティーゾーンの特定の IP アドレスの管理における複雑さを排除
* EC2 インスタンスと Global Accelerator を接続するには、Accelerator を作成し、EC2 インスタンス ID を使用するエンドポイントにEC2 インスタンスを追加する

### インスタンスストア
* EC2インスタンスに内蔵されているローカルストレージ
* EC2の一時的なデータが保持され、EC2の停止・終了と共にクリアされる
* 無料で使用可能

### Amazon Lex
* 音声やテキストを使用して、任意のアプリケーションに対話型インターフェイスを構築するサービス
* 音声のテキスト変換には自動音声認識 (ASR)、テキストの意図認識には自然言語理解 (NLU) という高度な深層学習機能が使用できるため、ユーザーにとって使いやすく魅力的なアプリケーションや、リアルな会話を実現するアプリケーションを開発できる

### AWS DataSync
* オンプレミスストレージと Amazon EFS 間でデータを迅速かつ簡単に移動することができるマネージド型のデータ転送サービス

### ブートストラップ（Bashシェルスクリプトの利用）
* Amazon EC2インスタンスやAmazon Relational Database（Amazon RDS）DBインスタンスなどのAWSリソースを起動するとき、Bashシェルスクリプトを利用して自動で設定を反映すること

### ゴールデンイメージ
* リソースの特定の状態のスナップショットから起動すること
* ブートストラップアプローチと比較すると、ゴールデンイメージは起動時間を短縮し、構成サービスまたはサードパーティのリポジトリへの依存関係を削除できる。

### AWS Snowmobile
* 超大容量データを AWS に移動するために使用できるエクサバイト規模のデータ転送サービス
* Snowmobile 1 台あたり 100 PB まで転送できます。

### AWS Application Discovery Service （ADS）
* オンプレミスデータセンターに関する情報を収集することにより、ユーザーの移行プロジェクト計画作成を支援
* サーバーの設定データ、使用状況データ、動作データが収集され、ユーザーに提供される

### Amazon QuickSight
* クラウド駆動の高速なビジネスインテリジェンスサービス
* 組織のすべてのユーザーにインサイトを提供する
* 完全マネージド型のサービス
* ML Insights を含むインタラクティブなダッシュボードを簡単に作成して公開できる
* DynamoDBに直接利用できない

### AWS Backup
* AWS Storage Gateway を使用して、オンプレミスおよび AWS サービス全体のデータのバックアップの一元化と自動化を簡単に実行できる、完全マネージド型のバックアップサービス
* バックアップポリシーを一元的に設定し、Amazon EBS ボリューム、Amazon RDS データベース、Amazon DynamoDB テーブル、Amazon EFS ファイルシステム、AWS Storage Gateway ボリュームなどの AWS リソースのバックアップアクティビティを監視できる

### Lake Formation
* データベースとオブジェクトストレージからデータを収集およびカタログ化し、データを新しい Amazon S3デ ータレイクに移動し、機械学習アルゴリズムを使用してデータをクリーンアップおよび分類し、機密データへのアクセスを保護

### Amazon WorkSpaces
* マネージド型でセキュアなサービスとしてのデスクトップ (DaaS) ソリューション。
* Windows または Linux のデスクトップが数分でセットアップでき、すばやくスケールすることで世界中のたくさんの従業員にデスクトップを提供できる

### AWS Transit Gateway
* 中央のゲートウェイからネットワーク上にある Amazon VPC、オンプレミスのデータセンター、リモートオフィスそれぞれに単一の接続を構築して管理する

### EBS
* DeleteOnTermination 属性 を使用して、ボリュームを存続させるべきか、削除すべきかを判断
* EBSボリュームのスナップショットを作成中でも、通常通り利用可能

### AWS SAM
* サーバーレスアプリケーション構築用のデプロイツール

### Amazon MQ
* Apache ActiveMQとマッチしたマネージド型のメッセージブローカーサービス
* 業界標準に沿ったメッセージングを使用している場合に、そのメッセージング機能をそのまま迅速にAWSクラウドに移行可能
* 業界標準のAPIとプロトコルをサポートしている
* アプリケーションのメッセージングコードを書き換えることなく、標準ベースのメッセージブローカーからAmazon MQに切り替えることができます。

### AWS IoT Core
* インターネットに接続されたデバイスから、クラウドアプリケーションやその他のデバイスに簡単かつ安全に通信するためのマネージド型クラウドサービス
* AWS IoT Coreを利用してセンサーデバイスを利用した車両管理アプリケーションを容易に構築することが可能

### デフォルトで保存データを暗号化しているサービス
* AWS Storage Gateway
* Amazon Gracier
* Amazon　S3

### AD Connector
* IAMとオンプレミス環境のADとを連携する

### Simple AD
* Samba 4 Active Directory Compatible Server を使用するスタンドアロンのマネージド型ディレクトリです。
* これを利用してAWS上に新規にActive Directoryを構成することができる→連携用ではない

### S3
* インターネットからのアクセスが許可するには、「パブリックアクセス許可設定を有効化」ではなく、「パブリックアクセスブロックの無効化」する設定が必要
* Amazon S3 によってバケットポリシーが評価され適用された後、バケットの暗号化が適用

### AWS 暗号化 SDK
* 言語固有の SDK とは別の暗号化ライブラリ
* アプリケーションで暗号化のベストプラクティスをより簡単に実装できる

### プレイスメントグループ
* インスタンス間の通信速度を高速化させる機能
* 単一AZ内の複数のEC2インスタンスをグループ化し、物理的になるべく近いインスタンスとして起動

### 試験前日の振り返り用メモ

#### Blue/Greenデプロイメント
* 異なるバージョンのアプリケーションを実行する環境をそれぞれ1つずつ、つまり計2つ作成し、それらの環境間でトラフィックを移動（ブルー⇒グリーンへ移動）させることによって、アプリケーションの新バージョンをリリースするために利用される技術
* Blue Greenの展開に**加重ルーティング**を設定します

#### RDS
* 2019年6月より、RDSのストレージに対するAuto Scalingが利用可能となりました。
* これにより、増加するデータベースのワークロードに応じてストレージ容量がダウンタイムなしで自動的にスケールされます。
* 最もコストがかからない障害復旧方法は、バックアップを取得してS3に保存し、復元する方式です。EC2インスタンスであればAMIを取得して、RDSはバックアップまたはスナップショットを利用して、それをS3に定期的に保存しておけば、もしものときに復元することができます。これはバックアップなどの保存コストしかかからないため、最も費用対効果が高い対応といえます。
* RDS Proxy
    * 必要となるデータベースへのコネクションプールを確立および管理し、アプリケーションからのデータベース接続を少なく抑える機能です
* DB インスタンスとスナップショットを暗号化するためには、Amazon RDSのDB インスタンス設定メニューにある暗号化オプションを有効化します
* 一般的なリレーショナルデータベースとしてデータを中長期処理するために利用されます。データ処理を行って、短期間でデータを削除するといったライフサイクル管理には向いていません。
* RDSのマルチAZ構成はバックアップからRDSを複製する必要はありません。マルチAZを有効化するだけで実現可能です。

#### Redshift
* Redshiftクラスターのクロスリージョンスナップショットすることで、プライマリクラスターがダウンした場合に備えて即座に利用できる構成を維持することができます。
* 拡張VPCルーティングを設定することでVPC内にデータ移動を制御することが可能です。また、VPCエンドポイントを利用したS3アクセスもVPC内のみにデータ移動を制御できます。
* Redshiftクラスターを費用対効果の高い方法で使用する方法
    * クラスターに対するスナップショットのうち、不必要な設定を削除する
* WLM(Work Load Management)
    * クエリ処理を実施する際に、照会内容をキューに経路指定することが可能です。
    * WLMは、Redshiftに投げ込まれるクエリに対して割り当てるRedshiftのリソースを指定する機能です。
    * 事前にWLMとしてキューを用意しておき、キューに対して割り当てるメモリの割合や並列度、タイムアウトの時間を指定することでクエリに対してリソースの配分を決定したり、長時間実行されるクエリを止めてクラスタリソースを無駄遣いしないようにすることができます。
 
#### EC2
* 起動設定におけるソフトウェアインストール設定といった機能はEC2マネージメントコンソールにはありません。

#### ElastiCache
* RDSなどのデータベース処理の高速処理化などで利用する(EC2との組み合わせて使わない)
* ElastiCacheは高速データ処理に向いていますが、NoSQL型のデータベースの代表的なAWSサービスです。こちらもリレーショナルデータベースとして利用することはできません。
* Elasticache + RDSでキャッシュ処理を導入することは可能
* インメモリDBであるElasticacheは他のDBと比較しても非常に高価ですが、性能が最も高いDBの一つ


#### S3
* Standard-IA
    * 処理中のデータを保存する先としては不適切
* Amazon S3のパフォーマンスを最大化する対応方法:プレフィックスを利用して日付ベースでアップロードを分散する
* S3のクロスリージョンレプリケーション
    * バケットに対するオブジェクト作成・更新・削除などのデータ処理のイベントをトリガーとしてレプリ ケーションが実行されます
* Amazon S3 分析のストレージクラス分析
    * ストレージアクセスパターンを分析し、適切なデータを適切なストレージクラスに移行すべきタイミングを判断できます。
* アクセスを拒否するためには、パブリックアクセス許可設定を有効化するのではなく、パブリックアクセスブロックの無効化する設定が必要です。
* S3バケットで利用可能なイベント通知先
    * SQS
    * SNS
    * Lambda
* VPCエンドポイントはリージョン内のポイントであるため、リージョン外からはアクセスできません。したがって、エンドポイントを使用するには、使用されるリージョンに対して、 S3 クロスリージョンレプリケーションによってS3オブジェクトをコピーする必要があります。

#### Direct connect
* 専用線サービスですので、VPN接続のためには利用すると非効率です。

#### SQS
* メッセージがクラッシュした場合は、可視性タイムアウトが設定されている場合は有効期限内は他のEC2インスタンスでは処理されませんが、有効期限を過ぎれば別のEC2インスタンスでキューが取得されることになります。
* デフォルトでメッセージはデッドキューに移動されるのではなく、別途設定が必要です。

#### NATゲートウェイを使った設定対応方法
* NATゲートウェイをパブリックサブネットに配置する
* EC2インスタンスがあるプライベートサブネットのルートテーブルにNATゲートウェイを設定する
    * プライベートサブネットのルートテーブルを更新して、インターネットトラフィックを NAT ゲートウェイに向かわせる必要があります。

#### Lambda
* Lambdaファンクションが他のAWSリソースにアクセスする必要がある場合は、そのサービスに対するアクセス権限を付与するIAMロールがLambdaファンクションに設定されている必要があります。

#### DynamoDB
* DAXはキャッシュを利用しているため特定のデータへの処理が高い場合などに中長期的な性能向上のために対策としては正しいです。しかしながら、キャッシュDBは高コストであるため、コスト最適という要件に合致させるためには、本件ではAuto Scalingによる処理負荷に対するスケーリングを優先して実行します。

#### Amazon Kinesis Data Firehose
* データを所定の形式に変換しつつS3やRedShiftに蓄積することができます
* Amazon Kinesis Data FirehoseはDynamoDBにデータを転送することができません。

#### AWS Data Pipeline
* データの移動と変換を自動化するサービスです。
* AWS Data Pipeline はデータ駆動型のワークフローを定義して、タスクの正常な完了をトリガーにして、次のタスクを実行できます。AWS Data Pipeline はDynamoDBに設定することが可能であり、定期的なデータ取得タスクを設定させることができます。
* 主にクラウドベースのデータワークフローサービスとして使用され、異なるAWSサービスとオンプレミスデータソース間でデータを処理および移動するのに利用する

#### AWS Lambda + API Gatewayでの性能向上施策
* APIゲートウェイのスロットリング制限設定とキャッシュを有効化することで実現することが可能です

#### ECS
* Docker形式でのアプリケーション開発環境を構築することができるオーケストレーションサービスです。
* これを利用してAWSリソースの展開は可能ですが、リソースのプロビジョニング、負荷分散、オートスケーリング、監視、クラスター全体でのコンテナ配置などのタスクの自動化にはElastic Beanstalkとの連携が必要です。

#### Opsworks
* Chef や Puppet のマネージド型インスタンスを利用できるようになる構成管理サービスです。
* これはインフラ構成の自動化に利用しますが、WEBアプリケーションのデプロイには利用されません。

#### ECSとEKS
* ECSとFargateの組合せよりも Kubernetesを利用することで、より自動化を達成することが可能です。

#### Cloudformation
* テンプレートにおいて無効なセクションは、Description

#### AWS SAM
* AWS サーバーレスアプリケーションモデルの略
* サーバーレスアプリケーション構築用のデプロイツールです。
* YAMLを使用して、サーバレスアプリケーションのLambda関数、API、データベース、イベントソースマッピングをモデリングします。AWS SAMはCloudFormationと連携してサーバレスアプリケーションを展開します。

#### クライアントとELB間のデータ保護の方法
* AWS Certificate ManagerでSSL証明書を作って、ELBに設定することで、証明書の費用が実質無料で安全なサイトが用意できます。
ALBを利用してリスナー設定にHTTPS(443)の設定を追加して、SSL証明書をダウンロードすることで、SSL証明書を設定することが出来ます。

#### Amazon SWF
* 開発者が並行したステップまたは連続したステップがあるバックグラウンドジョブを構築、実行、スケールするための状態追跡およびタスクコーディネーターサービス
* 複数のAWSリソースにサーバーレスオーケストレーションを提供しません。

#### AWS Step Functions
* AWS の複数のサービスをサーバーレスワークフローに整理して、プロセス処理を実行するアプリケーションを構築できます。

#### EBS
* EBSボリュームを使用するためは、ボリュームにファイルシステムを作成する作業を実施します

#### CloudFront
* フェールオーバーオプションを提供することができます。
* サイト単位でのフェイルオーバではなく、動作としてはオブジェクト単位でのフェイルオーバになります。

#### AutoScaling
* 単体ではオンプレミス環境には構成することができない

#### Amazon EMR
* 適用するべきユースケース
    * MACHINE LEARNING
    * 抽出、変換、読み込み (ETL)
    * クリックストリーム分析
    * リアルタイムストリーミング

#### AWS Globel Accelerator
* 世界中の顧客に提供するアプリケーションの可用性とパフォーマンスを改善するネットワークサービスです。
* AWS がホストするアプリケーションに対して固定エントリポイントとして機能する静的 IP アドレスを提供することでグローバルアプリケーションの管理を容易にし、様々な AWS リージョン、アベイラビリティーゾーンの特定の IP アドレスの管理における複雑さを排除します

#### SSLサーバー証明書を管理するサービス
* AWS ACM
    * ELBやCloudFrontではあれば、ACMからの証明書は適用できる
    * EC2に対してはACMからの証明書は適用できない
* IAM
    * ACMでサポートされていないリージョンでは、HTTPS接続をサポートする必要がある場合は、IAMをSSL証明書マネージャーとして使用します。 IAMはすべてのリージョンでのSSL証明書のデプロイをサポートしていますが、AWSで使用するには外部プロバイダーからSSL証明書を取得する必要があります。

#### IAM Access Analyzer
* アクセス権限の最小化構成をモニタリングするための機能

#### AWS Backup
* AWS Storage Gateway を使用して、オンプレミスおよび AWS サービス全体のデータのバックアップの一元化と自動化を簡単に実行できる、完全マネージド型のバックアップサービスです。バックアップポリシーを一元的に設定し、Amazon EBS ボリューム、Amazon RDS データベース、Amazon DynamoDB テーブル、Amazon EFS ファイルシステム、AWS Storage Gateway ボリュームなどの AWS リソースのバックアップアクティビティを監視できます。
    * Amazon DLMは、AmazonEBSボリュームとスナップショットをサポートしており、スナップショットの取得サイクルを設定することができます。しかしながら、これはのバックアップの一元管理を実施するサービスではない

#### QuickSight
* Redshift、S3、Athena、Aurora、RDS、IAM、CloudTrail、Cloud Directory などの AWS サービスへのネイティブ統合など、クラウドやオンプレミスのデータソースと簡単に統合できます。
* DynamoDBに直接利用できません。 

#### Accelerated サイト間VPN
* Global Accelerator を利用したサイト間VPNです。
* VPNの通信は AWS グローバルネットワークを経由して接続されるため、 高可用性・高パフォーマンスが維持されます。

#### Route 53
* ルーティングについて
    * 地理的近接性ルーティング:Amazon Route 53 はユーザーとリソースの地理的場所に基づいてリソースのトラフィックをルーティング
    * 位置情報ルーティング:ユーザーの位置情報（IPアドレスによる）基づいて特定のリージョンに対して、ルーティング
        * リソースに基づかない
* Route53によりフェールオーバールーティングを設定することは可能ですが、これは２つのEC2インスタンス間でのフェールオーバー構成を実施することしかできません。今回はELBで複数インスタンス間でのトラフィック分散を実現することが最適な構成となります。

#### ネットワークACLとセキュリティグループ
* URLに基づいてリクエストをフィルタリングすることができない。これを実現したい時はプロキシサーバーを利用する