Amazon Web Serviceの現在の仕様では、以下の制約のために1つのECSサービスには1つのALBからのみしか通信を転送できない。
- 1つのTarget Groupは1つのALBのみにしか設定できない。(参考:ALBの制限)
- 1つのECSサービスには1つのALB(Target Group)のみしか設定できない。(参考:ECSサービスの制限)
このため、インターネットALBと内部ALBを1つのECSサービスに転送するといった構成を組むことができない。この制約の緩和はコミュニティからも強くリクエストされているようであるが、今のところロードマップは示されていない。(参考:関連するGitHub Issue)
参考:代替手段(開発環境向け)
上記のGitHub Issueの議論の中で、以下の方法でTarget Groupをミラーリングする代替手段が提案されている。
- ECSサービスをTarget Group Aに関連付けておく。
- ECSタスク状態変更イベント(CloudWatch Events)をトリガーにAWS Lambdaを起動する。
- Lambaの処理で追加(削除)されたタスクを取得し、Target Group Bを更新する。
ただし、この方法ではTarget Group Bへのタスク追加・削除の完全性が保証されないため、本番環境では推奨されない。(例えば、Lambdaの処理がタスク削除より遅くなった場合や、Lambdaの処理がエラーとなった場合にサービス停止となってしまう。)