TxKxZxWx's blog

AWS SAA取得に向けて学習

AWS SAA取得に向けて 75日目 練習問題

例題1:

以下の要件を満たしたVPCを作成する必要がある。

  • ウェブ層とデータベース層を備えた2層アプリケーション
  • インターネットからの全てのトラフィックは、ALBに送信する。
  • ウェブサーバーとデータベースは、パブリックIPアドレスを取得したり、パブリックインターネットからの直接アクセスを禁止する。
  • セキュリティ要件、データベースはルートテーブルまたはサブネットを他のサービスと共有しない。
  • 全てのサービスに対して同じVPC内で高可用である必要がある。

これらの要件とベストプラクティスに基づいて必要とするサブネットの最小数は?

 

答え:

 

解説:

全てのサービスに対して同じVPC内で高可用性である必要があるため、ALB用の2つのパブリックサブネット、ウェブサーバー用の2つのプライベートサブネット、およびデータベース用の2つのプライベートサブネットの計6個のサブネットが最小で必要。

 

aws.amazon.com

 

 

 

例題2:

顧客の要望によりAWS上に動作する内部アプリケーションを変更して負荷分散する構成に変更する必要がある。

顧客のリクエストは常に顧客の会社のドメインから送信される。

HTTPおよびHTTPSの着信トラフィックが、送信されたリクエスト内のURLパスに基づいてルーティングされる必要がある。

要件を満たす適切な実装は?

 

答え:

ALBにURLパスを基づいてリクエストを転送するルールを持つリスナーを作成する。

 

解説:

パスベースのルーティングでURLパスに基づいてリクエストを転送するルールを持つリスナーを作成できる。

マイクロサービスを実行している場合、パスベースのルーティングを使用して複数のバックエンドサービスにトラフィックをルーティングすることができる。

例えば、1つのターゲットグループに全般的なリクエストをルーティングし、イメージをレンダリングするリクエストを別のターゲットグループにルーティングできる。

docs.aws.amazon.com

 

 

 

例題3:

企業が動的なウェブサイトを立ち上げた。

立ち上げの初日はトラフィックが最大10倍になると運用チームは予想している。

このウェブサイトはEC2インスタンスでホストされ、トラフィックはRoute53によって配信される。

ユーザーからのトラフィックに対して十分なバックエンドの容量が必要だと考えている。

運用チームはウェブサイトの立ち上げの数日後はできるだけ早くスケールダウンしたいと考えている。

要求を満たす最も費用対効果の高いフォールトトレラントなソリューションは?

 

フォールトトレラントとは

- 構成要素の一部が故障、停止などしても予備の系統に切り替えるなどして機能を保ち、正常に稼動させ続けること。

 

答え:

  • ウェブサイトを複数のAZを使用するようにAuto Scalingグループを設定し、スケールアウトおよびスケールインポリシーを作成する。

  • ALBをセットアップして、トラフィックを複数のEC2インスタンスに分散する。

 

解説:

ALBをセットアップして、トラフィックを複数のEC2インスタンスに分散する。

複数のAZにわたってAuto Scalingグループを設定し、スケールアウトおよびスケールインポリシーを作成することで、費用対効果が高いフォールトトレラントなソリューションを構築できる。

 

Auto Scalingグループをリージョン内の複数のAZに分散させてから、それらのAZに着信トラフィックを分散するようにロードバランサーをアタッチすることで、地理的な冗長性による安全性と信頼性を活用できる。

使用しているロードバランサーに対して有効なすべてのAZにわたって、着信トラフィックが均等に分散される。

docs.aws.amazon.com

 

 

 

 

例題4:

EC2インスタンスにデプロイされたアプリケーションでDynamoDBのテーブルにデータを書き込むために最適な方法は?

ただし、セキュリティキーはEC2インスタンス上に格納することを許可しない。

 

答え:

  • EC2インスタンスにIAMロールを割り当てる。

  • DynamoDBのテーブルへの書き込みアクセスを許可するIAMロールを作成する。

 

解説:

DynamoDBのテーブルへの書き込みを可能にするIAMロールを作成して、IAMロールをEC2インスタンスに割り当てる。

IAMロールは既に実行されているインスタンスへの割り当ても可能。

 

※ IAMユーザーとIAMロールの違いをしっかりと理解する。

IAMユーザーはEC2インスタンスなどのリソースに割り当てることができない。

リソースへのアクセス許可はIAMポリシーを作成してIAMユーザーに割り当てる必要がある。

 

IAMユーザーは、AWSへのアクセス権限を人やAWS以外のサーバに付与するために使用する。

IAMロールは、EC2やLambdaなどのAWSリソースに権限を付与するために使用する。

 

 

 

 

例題5:

パブリックサブネット上にAMIよりNATインスタンスを手動で起動してネットワークを構築した。

プライベートサブネット上のインスタンスをNATインスタンスにアクセスできるように、セキュリティグループとNACLを適切に設定した。

NATインスタンスはインターネットにアクセスできる。

一方でプライベートサブネット上のインスタンスはインターネットにアクセスできない。

プライベートサブネット上のインスタンスからインターネットにアクセスする解決策は?

 

答え:

NATインスタンスの「送信元/送信先チェック」を無効にする。

 

解説:

NATインスタンスはインターネットに接続できるため、セキュリティグループとNACLが適切に設定されている。

NATインスタンスを経由する通信がインターネットへ接続できていないため、NATインスタンスの「送信元/送信先チェック」を無効にしてインターネットに接続できるようにする。

 

EC2インスタンスは「送信元/送信先チェック」をデフォルトで実行する。

つまりそのインスタンスは、そのインスタンスが送受信する任意のトラフィックの送信元または送信先である必要がある。

しかし、NATインスタンスは送信元または送信先がそのインスタンスでない時にもトラフィックを送受信できなければならない。

したがってNATインスタンスでは「送信元/送信先チェック」を無効にする必要がある。

docs.aws.amazon.com

 

 

 

 

例題6:

会社にはEC2で実行されているNode.jsアプリケーションがある。

現在DynamoDBテーブルから顧客のデータを取得している。

同社は同じ項目に対して多くのクエリが繰り返される。

アプリケーションの人気が高まるにつれてクエリの数は増え続けている。

アプリケーションの変更を最小限に抑えながら、必要な読み取りキャパシティユニット(RCU)を削減するソリューションは?

 

答え:

Amazon DynamoDB Accelerator (DAX)を使用してキャッシュを提供する。

 

解説:

クエリが繰り返されるため、キャッシュサービスのAmazon DynamoDB Accelerator を使用してパフォーマンスを向上させ、負荷とコストを削減できる。

また、読み取りキャパシティユニット (RCU)を削減できる。

 

Amazon DynamoDB Acceleratorは、フルマネージド型の高可用インメモリキャッシュで、DynamoDB用に特化している。

 

aws.amazon.com

 

 

 

例題7:

フェイルオーバー機能が確実に動作するように、ネットワークインターフェイスの受信トラフィックに対して何を使用することを検討する必要があるか?

 

答え:

セカンダリプライベートIP

 

解説:

フェイルオーバー機能が確実に動作するように、ネットワークインターフェイスの受信トラフィックに対してセカンダリプライベート IPv4使用することがお勧め。

インスタンスに障害が発生した場合は、インターフェイスまたはセカンダリプライベート IPv4アドレス、あるいはその両方をスタンバイ用のインスタンスに移行できる。

 

docs.aws.amazon.com

 

 

 

例題8:

本番用アプリケーションは頻繁にデータを上書き、および削除している。

このアプリケーションで要求されるデータは、最新のデータを必要とする。

ユースケースを満たす最適なストレージは?

 

答え:

Amazon RDS

 

解説:

Amazon RDSは頻繁な上書き、および削除をするデータに適している。

また常に最新のデータが返される。

 

※S3は結果整合性で最新のデータを返さない場合があるためこのケースでは間違い。

 

 

 

 

 

 

 

ELBに関してもっと理解を深める必要があるのでブラックベルトを復習する。

www.youtube.com