web-dev-qa-db-ja.com

AWS ECSサービス間でHTTPリクエストを送信する方法

現在、ECSサービス間の通信を構成する方法を理解しようとしています。次の設定を計画しています:

  1. バックエンドサービス
  2. フロントサービス
  3. 1つのアプリケーションロードバランサー

私は私の心の中に次のオプションを持っています:

  1. ALBの2つのターゲットグループを構成し、パスに従って要求を転送します。たとえば、alb.amazonaws.com/backend/backend-target-groupにリクエストを転送し、バックエンドECSタスクにリクエストを提供します。
  2. 各ECSタスクで、AWS cliとサービス検出を使用して実行中のタスクのIPアドレスを取得するスクリプトを実行します。これが機能するかどうかはわかりませんが、テストが比較的困難です。

それらのどれもそれを行う正しい方法のようには思えません。財務上の制限があるため、サービスごとに個別のALBを使用したくありません。私が考えているのは、ECSサービスのある種の内部DNS名です。以下のリンクを調査しましたが、それを自分のケースに適用する方法がわかりません。

関連問題: AWS ECSコンテナ通信

理想的には、私が達成したいのは、バックエンドサービスの内部DNS名を持ち、フロントエンドサービスからバックエンドにリクエストを送信することです。

3
kozlone

あなたはほとんど正しいオプションをカバーしました。

ECS Service Discoveryが最初の選択です-すべてのコンテナーがサービス検出ドメインに自動的に登録され、その方法でアクセスできます。簡単、透明、安い。

ターゲットグループごとに異なるパスを持つ内部Application Load Balancerは、2番目の選択肢になります。 1つのALBで外部向けのトラフィックと内部向けのトラフィックを混在させたくはありませんが、内部と外部の2つのトラフィックは完全に有効なアーキテクチャです。 ALBをもう1つ追加する場合は、月額20ドル程度の追加価値があります。

AWS App Mesh-私は個人的には作業していませんが、必要な機能を果たしているようです。タイトルにすべてのサービスのアプリケーションレベルのネットワーキング

API Gatewayもオプションです。あなたのバックエンドはそれで動作するためにいくつかのわずかな変更を必要とするかもしれませんが、大きなものは何もありません。

それが役に立てば幸い:)

2
MLu