AWS 認定ソリューションアーキテクト – プロフェッショナル 合格への道#23

#学習
## 1
大手商社では社内業務システムにおいてClassic Load Balancerを使用して、複数のリザーブドEC2インスタンスに均等に着信トラフィックを分散しています。 最近、この業務システムのアプリケーションサーバーが原因と思われる断続的な使用不可が発生しています。この原因を究明するために、登録されたインスタンスから送信されたサーバーエラーを確認することが必要です。

サーバーエラーを確認するために必要なメトリクスを選択してください。

> HTTPCode_Backend_5XXの原因は登録済みインスタンスからサーバーエラー応答が送信された場合

### Classic Load Balancer のトラブルシューティングを行う: 応答コードのメトリクス

* HTTPCode_ELB_4XX
    * クライアントからのリクエストが誤った形式であるか、キャンセルされました。

* HTTPCode_ELB_5XX
    * ロードバランサーまたは登録されたインスタンスがエラーの原因であるか、またはロードバランサーが応答を解析できませんでした。
    * serverside error
    * LB/EC2

* HTTPCode_Backend_2XX
    * 登録済みインスタンスから正常な応答が返されました
    * 200OK
* HTTPCode_Backend_3XX
    * 登録済みインスタンスからリダイレクト応答が送信されました。
    * URL リダイレクトは、 URL 転送とも呼ばれ、ページ、フォーム、ウェブアプリケーション全体などに二つ以上の URL のアドレスを与えるテクニックです。 HTTP では特別な種類の応答である HTTP リダイレクトを提供し、サイトをメンテナンスしている間の一時的なリダイレクト、サイトの構成を変更した後も外部のリンクを機能させるための恒久的なリダイレクト、ファイルをアップロードしているときの進捗を示すページなど、様々な目的のためにこの操作を行います。

* HTTPCode_Backend_4XX
    * 登録済みインスタンスからクライアントエラー応答が送信されました。

## 2
### CloudFront の地理制限機能の使用
> エッジロケーションによる地理的制限を有効化することで、ディストリビューションに関連するすべてのファイルへのアクセスを制限し、国レベルでアクセスを制限する場合は、この方法を使用します。

### サードパーティの位置情報サービスの使用
> ディストリビューションに関連するファイルのサブセットへのアクセスを制限する場合や、国レベルより詳細なレベルでアクセスを制限する場合は、この方法を使用

## 3
AI開発企業は防犯カメラの映像から万引きを特定するサービスを開発しています。このサービスは防犯カメラからのストリーミングビデオで顔認証を実施して、過去の万引き犯データとマッチングさせます。アプリケーションはビデオを介してリアルタイムで迅速に顔のアドレスを指定し、ダウンストリームの処理に適した方法で出力を保存できる必要があります。 あなたはAWS Rekognitionを使用してサービスを開発したいと考えています。 

AWS Rekognitionを利用した最適なアーキテクチャを選択してください。（3つ選択してください。）

> Amazon Rekognition Video では、お客様のライブビデオストリーミングをリアルタイムで解析して、顔を検出し、判別できます。Amazon Kinesis Video Streams のストリーミングデータを Rekognition Video に入力し、お客様が提供する最大数千万もの顔データと照らし合わせて、超低レイテンシーでの顔認識を行います。バッチ処理のユースケースとして、Amazon Rekognition Video では Amazon S3 に保存した録画データを解析することもできます。

> Amazon Rekognition には、Amazon Rekognition API、AWS マネジメントコンソール、および AWS コマンドラインインターフェイス (CLI) を使用してアクセスできます。コンソール、API、CLI では、Rekognition API を使用して、ラベル検出、顔分析、顔照合、顔検索を行えます。AWS Lambda には Rekognition 用の設計図が用意されており、Amazon S3 や Amazon DynamoDB といった AWS データストアでのイベントに基づいて画像分析を簡単に開始できます。 

### Amazon Rekognition とは
https://docs.aws.amazon.com/ja_jp/rekognition/latest/dg/video.html

> Amazon Rekognition では、イメージ分析とビデオ分析をアプリケーションに簡単に追加することができます。Amazon Rekognition API にイメージやビデオを指定するだけで、このサービスによってモノ、人物、テキスト、シーン、アクティビティを識別できます。不適切なコンテンツも検出できます。Amazon Rekognition は、高精度な顔分析、顔比較、および顔検索機能も備えています。顔の検出、分析、比較は、ユーザー検証、カタログ作成、人数計数、公共安全など、多岐にわたって活用できます。

> Amazon Rekognition は、Amazon のコンピュータ視覚科学者が日々何十億ものイメージを分析するために開発したものと同じ、実証済みで高度にスケーラブルな深層学習テクノロジーに基づいています。使用に際して機械学習についての知識を必要としません。Amazon Rekognition には、Amazon S3 に保存されているイメージファイルやビデオファイルを即座に分析できる、シンプルで使いやすい API が含まれています。AWS では、Amazon Rekognition に絶えず新しいデータを学習させ、新しいラベルおよび顔比較機能を継続的にサービスに追加しています。

#### Amazon Rekognition の一般的ユースケース
* 検索可能なイメージおよびビデオライブラリ
    * Amazon Rekognition ではイメージと保存済みビデオの検索が可能であるため、その中に表示される物体やシーンを検出することができます。
* 顔ベースのユーザー検証
    * Amazon Rekognition では、実際のイメージを参照イメージと比較することで、アプリケーションでユーザーのアイデンティティを確認
* 感情分析および人口統計分析
    * イメージを分析して Amazon Redshift に感情や人口統計の属性を送信して、店舗内の場所や同様のシナリオなど、トレンドに関するレポートを定期的に作成できます
* 顔検索
    * Amazon Rekognition では、コンテナ (顔コレクションとも呼ばれる) に保存されているものと一致する顔がないか、イメージ、保存済みビデオ、ストリーミングビデオを検索できます。顔コレクションはお客様が所有および管理する顔のインデックスです。
        * 顔のインデックスを作成
        * 顔を検索
* 安全でないコンテンツの検出
    * イメージや保存されたビデオ内のアダルトコンテンツや暴力的なコンテンツを検出
* 有名人認識
    * 指定のイメージ内やビデオ内の有名人を認識できます。
* テキスト検出
    * イメージのテキストコンテンツを認識して抽出
* カスタムラベル
    * ビジネスニーズに合わせたイメージの物体やシーンを特定


#### Amazon Rekognition の仕組み
> Amazon Rekognition には 2 つの API セットがあります。Amazon Rekognition Image はイメージ分析に、Amazon Rekognition Video はビデオ分析に使用します。

* Amazon Rekognition Image
    * たとえば、Amazon Rekognition Image を使用すると、写真管理アプリケーションの顧客エクスペリエンスを向上させることができます。ユーザーが写真をアップロードすると、アプリケーションで Amazon Rekognition Image を使用して、イメージ内の現実世界の物体や顔を検出できます。Amazon Rekognition Image から返された情報をアプリケーションに保存した後、ユーザーは、特定の物体や顔が含まれた写真がないか、自分の写真コレクションにクエリを行うことができます。より詳細にクエリできます。たとえば、笑っている顔に対するクエリや特定の年齢の顔に対するクエリを行うことができます
* Amazon Rekognition Video
    * 保存済みビデオの人物の動線を追跡できます。また、Amazon Rekognition Video を使用すると、ストリーミングビデオを検索し、すでに Amazon Rekognition に保存されている顔の特徴と一致する人物を見つけ出すことができます。

> 深層学習イメージ分析を手軽に使うには、Amazon Rekognition API を使用します。たとえば、RecognizeCelebrities からは、イメージで検出された有名人の情報を 100 人まで取得することができます。この情報には、イメージの有名人の顔が検出された場所やその有名人に関する詳細情報が見られる場所に関する情報が含まれます。

#### イメージおよびビデオのオペレーション

* Amazon Rekognition Image オペレーション
    * Amazon Rekognition のイメージオペレーションは同期した状態で行われます。入力およびレスポンスは JSON 形式です。Amazon Rekognition のイメージオペレーションでは、.jpg 形式または .png 形式の入力イメージを分析します。Amazon Rekognition Image オペレーションに渡されたイメージは Amazon S3 バケットに保存できます。AWS CLI を使用していない場合は、Base64 暗号化イメージのバイトを Amazon Rekognition オペレーションに直接渡すこともできます。詳細については、「イメージの操作」を参照してください。
        * ipg/png
        * json
        * s3 に保存
<img width="723" alt="スクリーンショット 2020-05-13 14.15.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321923/731592a5-fcce-a906-60de-56625659088b.png">


* Amazon Rekognition Video オペレーション
    * Amazon S3 バケットに保存されているビデオと、Amazon Kinesis Video Streams によってストリーミングされているビデオを分析
    * 保存済みビデオの顔を検出するには、StartFaceDetection を呼び出します。分析が完了すると、Amazon Rekognition は完了ステータスを Amazon SNS トピックに発行します。分析オペレーションの結果を取得するには、要求した分析タイプに対する取得オペレーション (GetFaceDetection など) を呼び出します。
    * Amazon Rekognition Video のストリーミング型ビデオオペレーションでは、Amazon Rekognition Video コレクションに保存されている顔を検索できます。Amazon Rekognition Video によって Kinesis video stream が分析され、検索結果が Kinesis data stream に出力されます。ビデオ分析の管理は、Amazon Rekognition Video ストリームプロセッサを作成して使用することで行います。たとえば、ストリームプロセッサを作成するには、CreateStreamProcessor を呼び出します。

<img width="711" alt="スクリーンショット 2020-05-13 14.20.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321923/feba0457-4756-8e3d-d586-36a48345d294.png">



#### 非ストレージ型およびストレージ型のオペレーション
* 非ストレージ型 API オペレーション
    * このオペレーションでは、Amazon Rekognition によって情報は保存されません。入力イメージやビデオを指定すると、分析が実行されてその結果が返されますが、Amazon Rekognition によって情報は保存されません。
    * image/video
* ストレージ型 API オペレーション
    * Amazon Rekognition サーバーは、検出された顔情報をコレクションと呼ばれるコンテナに保存できます。Amazon Rekognition には、保存された顔情報から一致する顔を検索するための追加の API オペレーションが用意
    * imege/video

#### AWS SDK または HTTP による Amazon Rekognition API オペレーションの呼び出し
> WS SDK を使用するか、直接 HTTP を使用して Amazon Rekognition API オペレーションを呼び出すことができます。正当な理由がない限り、常に AWS SDK を使用

> HTTP で Amazon Rekognition を呼び出す場合は、POST HTTP オペレーションを使用

#### イメージ

> Amazon Rekognition Image オペレーションでは、.jpg 形式や .png 形式のイメージを分析できます。

> イメージのバイトを呼び出しの一部として Amazon Rekognition Image オペレーションに渡すか、既存の Amazon S3 オブジェクトを参照

* S3
    * DetectLabels API オペレーション
* API
    * HTTP を使用して Amazon Rekognition Image オペレーションの一部として渡す場合のイメージのバイトは、base64 でエンコードされた文字列であることが必要です。AWS SDK を使用して API オペレーションの呼び出しの一部としてイメージのバイトを渡す場合、イメージのバイトを Base64 でエンコードする必要があるかどうかは使用言語によって異なります。
    * 以下の言語は自動でエンコードする
        * PHP
        * JAVA
        * javas
        * python
* AWS CLI を使用して Amazon Rekognition Image オペレーションを呼び出す場合
    * S3upload
    * アップロードしたイメージを参照するオペレーションを呼び出し
        * イメージのバイトの代わりに S3Object に保存されたイメージを渡す場合は、イメージを base64 でエンコードする必要はありません。

#### ローカルファイルシステムからロードしたイメージの分析
> イメージのバイトを Amazon Rekognition API オペレーションに渡すには、Image 入力パラメータを使用します。Image 内で Bytes プロパティを指定し、base64 エンコードされたイメージのバイトを渡します

#### 保存済みビデオの使用
> Amazon Rekognition Video は、ビデオの分析に使用できる API です。Amazon Rekognition Video では、Amazon Simple Storage Service (Amazon S3) バケットに保存されているビデオ内のラベル、顔、人物、有名人、(明示的および暗示的な) アダルトコンテンツを検出できます。Amazon Rekognition Video は、メディア/エンターテインメントや公共安全などのカテゴリで利用できます。これまでのような物体や人物が撮影されたビデオの人間によるスキャンでは、かなりの時間がかかるだけでなく、エラーも頻繁に発生していました。Amazon Rekognition Video を使うことで、ビデオ全体を通しての項目の検出や、項目が登場したタイミングの検出を自動化することができます。

> StartLabelDetection などの Start オペレーションを呼び出すことで、ビデオの処理が開始されます。リクエストの完了ステータスが Amazon Simple Notification Service (Amazon SNS) トピックに発行されます。Amazon Simple Queue Service (Amazon SQS) キューまたは AWS Lambda 関数を使うことで、完了ステータスを Amazon SNS トピックから取得できます。完了ステータスを取得したら、GetLabelDetection などの Get オペレーションを呼び出してリクエストの結果を取得します。

<img width="735" alt="スクリーンショット 2020-05-13 14.05.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321923/eb1066f3-71fd-9874-968d-646de825ff6d.png">


#####ビデオの形式とストレージ
Amazon Rekognition のオペレーションでは、Amazon S3 バケットに保存されているビデオを分析できます。ビデオは H.264 コーデックでエンコードする必要があります。

*  MPEG-4 
*  MOV

## 4
B社では社内用インフラとしてAWSを使用しています。彼らは、世界中の顧客がアクセスする企業独自のコールセンター・問合せシステムを構築しています。このアプリケーションはコールセンターのピーク時には非常に負荷が高まりますが、夜間や朝早い時間帯ではあまり負荷が高まることはありません。また、ピーク時の発生時間はまちまちであり、事前に準備することが難しくなっています。したがって、アプリケーションによってピーク時の処理が問題なく実施されるスケーラブルな構成が必要不可欠です。データベースはオンライントランザクション処理（OLTP）が実施されており、この処理も同様にスケーラブルにする必要があります。

これらの要件を満たすためのAWSアーキテクチャ設計パターンを選択してください。

> このシナリオでは、EC2インスタンスのWEBサーバーとOLTP処理を行うデータベースの両方をスケーラブルな構成によって可用性を高める必要があります。したがって、複数のアベイラビリティーゾーンにまたがるEC2インスタンスにAuto ScalingグループとELBを設定している高可用性でスケーラブルなAWSの基本アーキテクチャです。これに加えて、データベースは、ピーク時の発生時間はまちまちであり不規則なピーク処理が発生することからAuroraサーバレスを利用

## 5
あなたの会社は大規模なEコマースサイトを運営しているソフトウェア企業です。あなたはWEBマーケティング担当者として、Eコマースサイト上の顧客のクリックストリームデータを分析して、行動分析を実現する必要があります。 会社は顧客がクリックしたページに対して広告の影響を把握し、売れ筋商品に向かうWEB行動パターンを解析したいと考えています。

これらのデータ分析要件を満たすたアーキテクチャ

> Amazon Kinesis Data Streamsによって処理されたレコードはダッシュボードに送信されて、さまざまなAWSサービスへのデータ送信に使用できます。分析するアクションとして、アプリケーション側にKCLワーカーを組み込んで行動分析を実施

### datastreams

<img width="597" alt="スクリーンショット 2020-05-13 15.27.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321923/b5a2a357-23c2-6d2e-5603-d1c3b3bc6cd3.png">

#### best practice
https://qiita.com/yShig/items/500d4139efed91bc432d#4-%E3%83%99%E3%82%B9%E3%83%88%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9

##### partiction key tactics

* Amazon Kinesis Data Streamsでは複数のシャードを用意して処理を分散することができますが、
どのシャードを使用するのか決定するのはプロデューサが発行するパーティションキーです。
上記のCLIの例ではシャードに送信するデータのパーティションキーはすべて固定で1にしていました。
もしシャードを複数用意したとしてもこのような設定をしてしまうと結局すべてのデータが1つのシャードに集中してしまうことになります。
実際は固定値で設定せずにきちんとばらけるように設定する必要がありますが、分け方には2つの考え方があります。

###### hotシャード回避のために広範囲にパーティションキーを確保する
パーティションキーに偏りがあり、データが集中してしまったシャードをホットシャードといいます。
このホットシャードの発生を防ぐためにパーティションキーを広範囲の値を持つようにする、タイムスタンプなどを使ってランダムなキーを生成するという工夫をする考え方

###### データに対応したシャードを設定
例えばこのセンサから取得したデータは全てこのシャードに送信するようにするなど、データをより有意義に使用できるようにパーティションキーを設定する方法。そのシャードに入っているデータがどこから取得したのかわかるのでその後のデータ分析がやりやすくなったりする。

##### 適切なシャード数の設定
> 予期せぬデータ量の増加に備えてシャードは余分に用意

##### 重複データの削除
> プロデューサからストリームへのデータ送信は成功したけどストリームからプロデューサへの成功通知が送信できなかったりするとプロデューサは同じデータを再送しようとするのでストリームに同じデータが登録される可能性があります。
これを防ぐためにデータにプライマリキーを持たせてコンシューマで重複を削除するという手法が推奨されています。

### Amazon Elasticsearch Service とは
https://docs.aws.amazon.com/ja_jp/elasticsearch-service/latest/developerguide/what-is-amazon-elasticsearch-service.html

> Amazon Elasticsearch Service (Amazon ES) は、AWS クラウドの Elasticsearch クラスターを、簡単にデプロイ、運用、スケールするマネージド型サービスです。Elasticsearch はログ分析、リアルタイムのアプリケーションモニタリング、クリックストリーム分析などのユースケース向けの、人気の高いオープンソースの検索および分析エンジンです。Amazon ES を使用すると、Elasticsearch の API に直接アクセスできるため、既存のコードとアプリケーションがこのサービスとシームレスに連携します。

#### kinesis 周辺地図
![ELB (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321923/38cc30f4-6435-6cac-5c53-ae5e5c569501.png)


## 6
B銀行ではクライアントの口座管理にAWS上のポータルサイトを利用して、クライアントが自身の口座利用履歴などの情報を受け取れるようにしています。最近になってセキュリティ監査を実施したところ、直接機密情報を利用することがないユーザーがS3に保存された全てのオブジェクトに対してアクセスが可能となっていることが問題となりました。したがって、個人情報を利用する本人と本人から許可を受けたユーザー以外は、これらの機密ファイルに直接アクセスできないようにするように求められました。 

CloudFrontを利用して、この要件を満たすための最適な方法を選択してください。（2つ選択してください。）

> Amazon S3 バケットから配信するコンテンツへのアクセスを制限するには、CloudFront 署名付き URL または署名付き Cookie を作成して Amazon S3 バケット内のファイルへのアクセスを制限してから、オリジンアクセスアイデンティティ (OAI) という特別な CloudFront ユーザーを作成して配布に関連付けます。次に、CloudFront が OAI を使用してファイルにアクセスしてユーザーに提供できるようにアクセス許可を構成します。これによりユーザーは S3 バケットへの直接 URL を使用してファイルにアクセスすることはできなくなります。これらのステップを踏むことは、CloudFront を通じてユーザーが提供するファイルへの安全なアクセスを維持するのを助けます。

### Amazon CloudFront とは
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/Introduction.html

> Amazon CloudFront は、ユーザーへの静的および動的ウェブコンテンツ (.html、.css、.js、イメージファイルなど) の配信を高速化するウェブサービスであり、CloudFront ではエッジロケーションと呼ばれるデータセンターの世界規模のネットワークを通じてコンテンツが配信されます。CloudFront を使用して提供されているコンテンツをユーザーがリクエストすると、そのユーザーはエッジロケーションにルーティングされます。エッジロケーションでは最も低いレイテンシー (遅延時間) が提供されるので、コンテンツは可能な最高のパフォーマンスで配信されます。

![Cloudfront_map (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321923/b7ef6f16-a00c-dafa-f573-e4d8260e57a2.png)


#### ディストリビューションを作成または更新する場合に指定する値

* オリジンドメイン名
    * CloudFront がこのオリジンのオブジェクトの取得先とする Amazon S3 バケットまたは HTTP サーバーの DNS ドメイン名。
    * オリジンが Amazon S3 バケットの場合
        * バケットがウェブサイトとして構成されている場合は、バケットの Amazon S3 静的ウェブサイトホスティングエンドポイントを入力します。[Origin Domain Name (オリジンドメイン名)] フィールドのバケット一覧からバケット名を選択しない
        * バケットに Amazon S3 Transfer Acceleration を設定した場合、[オリジンドメイン名] に s3-accelerate エンドポイントを指定しない
        * バケットアクセスの制限
            * Amazon S3 URL ではなく CloudFront URL のみを使用して Amazon S3 バケット内のオブジェクトにアクセスするようユーザーに要求する場合は、[Yes] を選択
        * オリジンアクセスアイデンティティ
            * [Restrict Bucket Access] で [Yes] を選択した場合、新しいオリジンアクセスアイデンティティを作成するか、AWS アカウントに関連付けられた既存のオリジンアクセスアイデンティティを使用するかを選択します。オリジンアクセスアイデンティティが既にある場合は、それを再利用し、メンテナンスを簡素化することをお勧めします。
        * バケットに読み取りアクセス許可を付与する
            * CloudFront で、オリジンアクセスアイデンティティに Amazon S3 バケット内のオブジェクトの読み取りアクセス許可を自動的に付与するには、[Yes, Update Bucket Policy (はい、バケットポリシーを更新します)] を選択
        * オリジンプロトコルポリシー
            * HTTP Only
            * HTTPS Only
            * [Match Viewer (ビューアーに合わせる)]
        * オリジンのキープアライブタイムアウト
            * CloudFront がレスポンスの最後のパケットを取得した後にカスタムオリジンへの接続を維持する時間 (秒)。持続的接続を維持すると、TCP 接続の再構築に必要な時間と後続のリクエストに対する別の TLS ハンドシェイクの実行に必要な時間を節約できます。キープアライブタイムアウトを増やすと、ディストリビューションの接続あたりのリクエストメトリクスの改善に役立ちます。
                * [Origin Keep-alive Timeout (オリジンキープアライブタイムアウト)] の値が有効になるためには、永続接続を許可するようにオリジンが設定されている必要があります。
                * デフォルトのタイムアウトは 5 秒です。この値は、1～60 秒の範囲で変更できます。60 秒を超えるキープアライブタイムアウトが必要な場合は、 AWS サポートセンターでケースを作成

## 7
あなたはグローバルにオフィスを持つコンサルティングファームのソリューションアーキテクトとして働いています。 そこでは、AWS Organizationsを使用して、各地域や支社が使用している複数のAWSアカウントを管理しています。 システム管理全体を担当する特定の組織単位（OU）に新しいAWSアカウントが最近追加されました。この新しいAWSアカウントでは、全てのサービスにリンクされたロールがアタッチされたAmazon ECSクラスターを使用しており、セキュリティ上問題があることが確認されました。 社内のセキュリティ要件に適用させるため、新しいアカウントのECS利用に関連して特定のアクションの実行を拒否するカスタムSCPを作成しました。 しかしながら、このポリシーを適用した後も、新アカウントは実行が制限されているはずのECSの実行アクションを操作できる状態が継続していることが判明しました。

このシナリオで、最も考えられる原因は次のうちどれですか？

> AWS OrganizationsのSCPはサービスにリンクされたIAMロールには影響しない

### AWS Organizations とは何ですか？
https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_introduction.html

## 8
あなたの会社ではCLBと複数のEC2インスタンスで構成されたWEBアプリケーションを運用しています。東京リージョンのAZ 1aには3つの実行中のEC2インスタンスがあり、AZ 1bには6つのEC2インスタンスがあり、CLBでトラフィックを分散しています。 着信トラフィックの半分がAZ 1aに送られ、3つのインスタンスが過剰に使用され、他の6つのインスタンスが十分に使用されていないことが判明しました。

この問題の最も可能性の高い原因を選択してください。

> クロスゾーン負荷分散を使用すると、Classic Load Balancer の各ロードバランサーノードは、有効なすべてのアベイラビリティーゾーンの登録されたインスタンスにリクエストを均等に分散します。クロスゾーン負荷分散が無効の場合は、各ロードバランサーノードは、そのアベイラビリティーゾーンの登録されたインスタンスにのみリクエストを均等に分散します。

### ELB
https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/userguide/what-is-load-balancing.html
![ELB_map.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321923/64003382-83f2-2732-3ff2-e167addca13b.png)


> Elastic Load Balancing は受信したアプリケーションまたはネットワークトラフィックを、Amazon EC2 インスタンス、コンテナ、IP アドレス、複数のアベイラビリティーゾーンなど、複数のターゲットに分散させます。Elastic Load Balancing はアプリケーションへのトラフィックが時間の経過とともに変化するのに応じてロードバランサーをスケーリングします。また、大半のワークロードに合わせて自動的にスケーリングできます。

#### クロスゾーン負荷分散
> ロードバランサーのノードは、クライアントからのリクエストを登録済みターゲットに分散させます。クロスゾーン負荷分散が有効な場合、各ロードバランサーノードは、有効なすべてのアベイラビリティーゾーンの登録済みターゲットにトラフィックを分散します。クロスゾーン負荷分散が無効な場合、各ロードバランサーノードは、そのアベイラビリティーゾーンの登録済みターゲットにのみトラフィックを分散します。

> クロスゾーン負荷分散が有効な場合、10 個のターゲットのそれぞれがトラフィックの 10% を受け取ります。これは、各ロードバランサーノードが、そのクライアントトラフィックの 50% を 10 個のターゲットすべてにルーティングできるためです。

<img width="471" alt="スクリーンショット 2020-05-13 18.58.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321923/28118eb5-95d9-958f-cc1c-87cd6c895575.png">

> クロスゾーン負荷分散が無効な場合

<img width="478" alt="スクリーンショット 2020-05-13 19.00.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321923/41544c70-af71-fdd6-9408-49731956bd9a.png">

* Application Load Balancer では、クロスゾーン負荷分散が常に有効
* Network Load Balancer を使用する場合、クロスゾーン負荷分散はデフォルトで無効化

## 9
あなたの会社ではAWSで顧客分析アプリケーションを実行しています。あなたはソリューションアーキテキトとして、データ分析部門からアプリケーションにレポート機能を追加するよう依頼されました。この新しいコンポーネントは、マルチAZ構成のRDS MySQLデータベースインスタンスに保存されているユーザー行動データから1時間ごとにデータを集約して、ステータスレポートを抽出することができます。このレポート機能はなるべくコストを要せずに、また既存のデータベース処理に影響を与えない方法を選択することが要件となっています。

この要件を満たすために、AWS上の最適なアーキテクチャ設計を選択してください。
> データ分析レポートを生成するコンポーネントの追加によって、既存のデータ処理能力に影響がないようにする必要があります。RDSの読取処理専用のリードレプリカを利用した構成とすることで、この要件を達成することが可能です。そして、プロキシを利用してLambda関数によってRDSからデータ取得と集計を実施するサーバレスアプリケーションを構築することができます。RDS Proxyは、アプリケーションとRDSデータベースの間の仲介役として機能します。RDS Proxyは、必要となるデータベースへのコネクションプールを確立および管理し、アプリケーションからのデータベース接続を少なく抑える機能です。RDS Proxyは、Lambda関数からデータベースに直接流れるすべてのデータベーストラフィックを処理します。

### RDS Proxyを使ってAWS LambdaからRDBにコネクションプールで接続する
https://dev.classmethod.jp/articles/using-relational-databases-with-aws-lambda-easy-connection-pooling/


### AWS Clinet VPNを分かりやすく解説してみる
杉村さんの記事
http://blog.serverworks.co.jp/tech/2019/06/10/awsclientvpn/

### [アップデート] AWS Client VPN 用の VPN クライアントが AWS より提供されました
https://dev.classmethod.jp/articles/aws-client-vpn-application-windows/

## 9
あなたの会社は自分で撮影した動画をユーザー間でPCやモバイルなどの様々なデバイスで共有することができる動画プラットフォームを構築しています。モバイルアプリケーションや動画を撮影すると、ユーザーの動画フォルダにMP4形式で保存され、好きなように動画をカスタマイズして他のユーザーにシェアする仕組みです。配信の際には、主にモバイルデバイス上でグローバルにストリーミングされることになります。

この要件を満たすために最適なアーキテクチャを選択してください。（2つ選択してください。）

> Elastic Transcoderを使用して動画をさまざまな形式にトランスコードすることができます。ストリーミング配信にはモバイルでHLSを使用してS3リソースを利用して、CloudFront配布をダウンロードオプション付きで使用することが可能です。オンデマンドストリーミングの場合、動画コンテンツはAmazon S3に保存されます。

### AWS再入門ブログリレー Amazon Elastic Transcoder編
https://dev.classmethod.jp/articles/relay_looking_back_elastic-transcoder/

<img width="685" alt="スクリーンショット 2020-05-13 20.43.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321923/46698bfa-c502-c2f6-d7cc-264a1fb07903.png">

## 10
大手製造業では、EC2インスタンスを利用したサーバーなどのインフラストラクチャーを主に利用して、複数のWEBアプリケーションを利用しています。この会社ではデータウェアハウスとしてRedshiftを利用していますが、その災害復復旧対応が準備されていません。そこで、あなたはRedshiftクラスターのDR対応を実施しています。バックアップを地理的に離れた場所に保存して、そのバックアップは暗号化によって保護される必要があります。

このシナリオで、要件に対応するための最適なアーキテクチャを選択してください。（２つ選択してください。）
> Amazon Redshiftクラスターを起動するときに、AWS KMSのマスターキーで暗号化することを選択できます。その際の AWS KMSキーはリージョンに固有となります。DR元リージョンにおいてAWS KMSで暗号化されたクラスターのクロスリージョンスナップショットコピーを有効にすることで、DR対象となるリージョンに対して、Redshiftクラスターのスナップショットをコピーして移転させることができます。

> この設定には、Amazon Redshiftが宛先リージョンで暗号化操作を実行できるように、宛先リージョンのマスターキーのスナップショットコピーを許可する設定が必要です。Amazon Redshiftのスナップショットはクラスターのポイントインタイムバックアップです。スナップショットには、自動と手動の 2 つのタイプがあります。Amazon Redshift は、暗号化された SSL接続を使用して、これらのスナップショットを Amazon S3 の内部に保存できます。

### Amazon Redshift 管理の概要
https://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/overview.html

* コンピューティングノードの予約
    * クラスターを 1 年以上連続して実行する場合、1 年間または 3 年間コンピューティングノードを予約することでお金を節約できます。コンピューティングノードを予約すれば、要求に応じてコンピューティングノードをプロビジョニングするときに時間単位で支払う場合に比べて大幅な節約
* クラスタースナップショットの作成
    * スナップショットはクラスターのポイントインタイムバックアップです。スナップショットには、自動と手動の 2 つのタイプがあります。Amazon Redshift は、暗号化された Secure Sockets Layer (SSL) 接続を使用して、これらのスナップショットを Amazon Simple Storage Service (Amazon S3) の内部に保存
    * スナップショットから復元する場合は、Amazon Redshift で新しいクラスターを作成し、指定したスナップショットからデータをインポート
* セキュリティグループ
    * IAM 認証情報は、Amazon Redshift API 関連リソース、つまり Amazon Redshift console コマンドラインインターフェイス (CLI)、API および SDK へのアクセスのみコントロール
    * JDBC または ODBC 経由で SQL クライアントツールからクラスターへのアクセスを有効にするには、セキュリティグループを使用
    * Amazon Redshift クラスターに EC2-VPC プラットフォームを使用している場合、VPC セキュリティグループを使用する必要があります。クラスターは EC2-VPC プラットフォームで起動することをお勧めします。
* 暗号化
    * 暗号化は、クラスターの変更不可能なプロパティです。暗号化されたクラスターから、暗号化されていないクラスターに切り替える唯一の方法は、データをアンロードして新しいクラスターに再ロードすることです。暗号化は、クラスターとすべてのバックアップに適用されます。暗号化されたスナップショットからクラスターを復元すると、新しいクラスターも暗号化されます。