助け合いフォーラム
AWS ソリューションアーキテクト - アソシエイト(SAA-C03)
問題ID : 49250
問題を開く
ある企業は輸送管理システムを開発しており、EKS上で複数のマイクロサービス(経路計算API、集荷依頼API、請求照会APIなど)を稼働させている。外部の取引先企業の業務システムがインターネット経由でHTTPSで接続し、リクエストのURIパスに応じて適切なマイクロサービスに振り分けられる必要がある。今後マイクロサービスの数が増えた場合でも、外部エンドポイントを増やさずに一貫したアクセスを提供しながら、運用負荷を考慮して効率的に実現する必要がある。どのアーキテクチャを採用するのが最も適切か。
正解
EKSクラスターにLoad Balancer Controllerを導入し、ALBを自動的にプロビジョニングして各リクエストをURIパスに基づいてルーティングする
解説
本設問では、外部の取引先がHTTPSで接続し、リクエストのURIパスに応じて適切なマイクロサービスに振り分けられる必要があります。この要件を満たすには、レイヤー7(アプリケーション層)のロードバランサーであるALBを利用するのが適切です。比較表にあるとおり、「ホストベースやパスベース、URLクエリ文字列でのルーティング」に対応しているのはALBだけであり、この要件を満たせる唯一のロードバランサーです。

AWS Load Balancer Controllerは、Amazon EKSやAmazon EC2上で動作するKubernetesコントローラーで、AWSのロードバランサーであるALBやNLBとKubernetesのリソース定義をつなぐツールです。EKSクラスターにLoad Balancer Controllerをデプロイすると、Kubernetes側で必要な設定を行うだけで自動的にALBやNLBがプロビジョニング・管理されます。アプリケーションを実行するPodの増減に応じてターゲット登録も更新されるため、利用者がロードバランサーを手作業で構築・運用する必要はありません。また、Kubernetes内にソフトウェアのロードバランサーを自前で用意する必要がなく、スケーリングや可用性の確保をAWSに任せられるため、運用がシンプルになり効率的に管理できます。
したがって、正解は
・EKSクラスターにLoad Balancer Controllerを導入し、ALBを自動的にプロビジョニングして各リクエストをURIパスに基づいてルーティングする
です。
それ以外の選択肢は、以下の通りです。
・EKSクラスターにLoad Balancer Controllerを導入し、NLBを自動的にプロビジョニングして各リクエストをURIパスに基づいてルーティングする
NLBは、レイヤー4のロードバランサーであり、TCP/UDPレベルの転送に特化しています。URIパスやホスト名といったアプリケーション層の情報に基づいたルーティングはできませんので、誤りです。
・CloudFrontを利用してリクエストをキャッシュし、オリジンにEKS上の各マイクロサービスを指定してURIパスごとの振り分けを行う
Amazon CloudFrontは、静的・動的コンテンツをグローバルに高速配信するためのコンテンツ配信ネットワークサービスです。主なユースケースはコンテンツ配信やキャッシュによるパフォーマンス向上であり、マイクロサービスごとのルーティングには適していません。よって、誤りです。
・API Gatewayでリクエストを受信し、バックエンドのLambda関数でURIパスを解析してEKS上の各マイクロサービスへ転送する
技術的に可能ですが、HTTPルーティングのためにLambdaを利用するのは過剰設計です。リクエスト数が多い場合は実行課金が増え、さらにレイテンシや同時実行制御の問題も発生します。本設問の要件である「コスト効率」や「運用負荷の低減」に反するため、誤りです。

AWS Load Balancer Controllerは、Amazon EKSやAmazon EC2上で動作するKubernetesコントローラーで、AWSのロードバランサーであるALBやNLBとKubernetesのリソース定義をつなぐツールです。EKSクラスターにLoad Balancer Controllerをデプロイすると、Kubernetes側で必要な設定を行うだけで自動的にALBやNLBがプロビジョニング・管理されます。アプリケーションを実行するPodの増減に応じてターゲット登録も更新されるため、利用者がロードバランサーを手作業で構築・運用する必要はありません。また、Kubernetes内にソフトウェアのロードバランサーを自前で用意する必要がなく、スケーリングや可用性の確保をAWSに任せられるため、運用がシンプルになり効率的に管理できます。
したがって、正解は
・EKSクラスターにLoad Balancer Controllerを導入し、ALBを自動的にプロビジョニングして各リクエストをURIパスに基づいてルーティングする
です。
それ以外の選択肢は、以下の通りです。
・EKSクラスターにLoad Balancer Controllerを導入し、NLBを自動的にプロビジョニングして各リクエストをURIパスに基づいてルーティングする
NLBは、レイヤー4のロードバランサーであり、TCP/UDPレベルの転送に特化しています。URIパスやホスト名といったアプリケーション層の情報に基づいたルーティングはできませんので、誤りです。
・CloudFrontを利用してリクエストをキャッシュし、オリジンにEKS上の各マイクロサービスを指定してURIパスごとの振り分けを行う
Amazon CloudFrontは、静的・動的コンテンツをグローバルに高速配信するためのコンテンツ配信ネットワークサービスです。主なユースケースはコンテンツ配信やキャッシュによるパフォーマンス向上であり、マイクロサービスごとのルーティングには適していません。よって、誤りです。
・API Gatewayでリクエストを受信し、バックエンドのLambda関数でURIパスを解析してEKS上の各マイクロサービスへ転送する
技術的に可能ですが、HTTPルーティングのためにLambdaを利用するのは過剰設計です。リクエスト数が多い場合は実行課金が増え、さらにレイテンシや同時実行制御の問題も発生します。本設問の要件である「コスト効率」や「運用負荷の低減」に反するため、誤りです。
学習テキスト
この学習テキストはプレミアムコンテンツです。 プレミアムプランへのお申込みは 「プレミアムプランの紹介ページ」 よりお願いいたします。
クラウドフロントの機能
投稿日 2025/11/10
「CloudFrontを利用してリクエストをキャッシュし、オリジンにEKS上の各マイクロサービスを指定してURIパスごとの振り分けを行う
Amazon CloudFrontは、静的・動的コンテンツをグローバルに高速配信するためのコンテンツ配信ネットワークサービスです。主なユースケースはコンテンツ配信やキャッシュによるパフォーマンス向上であり、マイクロサービスごとのルーティングには適していません。よって、誤りです」と、ありますが、URLのパスに応じて異なるオリジンサーバを指定することで1つのドメインで複数のサービスを提供できます。よって、この選択肢は正解とすべきです。
h
haru453
2025/11/12 02:27
確かに、CloudFrontはパスパターンによって異なるオリジンを指定できるため、1つのドメインで複数のサービスを提供すること自体は技術的に可能だと思います。ただ、設問では「運用負荷を考慮して効率的に実現すること」が明記されているので、マイクロサービスを追加するたびにCloudFrontのオリジンやビヘイビアを都度設定・更新し、ディストリビューション反映までを待つ運用は、やや手間がかかる印象です。そのため、技術的に成立する構成であっても、この要件のもとでは「最も適切な」選択肢とは言いにくいのではないかと思いました。
コメント
この投稿に対して返信しませんか?
c chipalion
2025/11/12 11:06
Haru453様、ご回答ご解説ありがとうございます。運用負荷を考慮すると、やはりCloudfrontパスは選択肢は不適切と納得できました。