# ECS サービスの入口づくりにサヨナラ！Amazon ECS Gateway が誕生

みんな、しぃちゃんだよ！

ECS のサービスを公開するたびに、ロードバランサーや証明書を整える作業、大変だよね。それを肩代わりしてくれる新機能が来たよ！

## なにが発表されたの？

AWS Blog で、Amazon ECS Gateway が紹介されたよ。ECS 上のコンテナ化サービスの ingress ネットワークを扱う、アカウントレベルの新しいリソースなの。ロードバランサー、証明書、セキュリティグループなどの必要なインフラを代わりに用意・管理して、リソースはすべて自分のアカウント内に作られるよ。

## 今までどうだったの？

新しいサービスを作るたびに、プラットフォームチームが同じネットワーク設定を繰り返す必要があったの。ECS Gateway はこのサービスごとの作業をなくすのが狙いだよ。

## これで何が変わるの？

役割ごとに、こう変わるよ。

- プラットフォームチーム: サブネット、セキュリティグループ、TLS 証明書、リスナー設定、WAF の web ACL といったネットワークの標準を、gateway で一か所に定義して、クラスターに関連付ける
- アプリケーションチーム: サービスの作成・更新時に gateway connector を追加するだけで参加できる。ネットワークの専門知識は要らない

## 深く潜ってみよう

接続したサービスごとに、ECS が次のものを作るよ。

- ACM 証明書
- 固有の DNS ホスト名
- リスナールール
- ターゲットグループ
- サービス用セキュリティグループ（ロードバランサーからの inbound のみ許可）

ホストベースのルーティングで、最大 25 サービスが 1 つの ALB を共有するよ。容量が埋まると ECS が ALB を追加して、不要になると削除するの。

デプロイのたびに、クラスターの gateway の関連付けを評価して、互換性のあるすべての gateway にサービスを接続するよ。互換性の条件は、アクセスタイプがコネクタのフィルターと合うこと、同じ VPC にあること、サービスの全 AZ をカバーしていることなの。

制限と要件はこれだよ。

- 1 つの gateway は最大 10,000 クラスターに関連付けられる
- 1 つのクラスターに関連付けられる gateway は最大 5 つ
- `maxAlbCount` のデフォルトのクォータは 10 で、上限に達して空きがないとデプロイは失敗する
- `awsvpc` ネットワークモードのサービスのみ対応（EC2、Fargate、ECS Managed Instances）
- 名前、scheme、VPC、サブネット、IP アドレスタイプ、リスナーのプロトコルとポートは、作成後に変更できない

導入手順は 4 ステップだよ。

- `aws ecs create-gateway` などで gateway を作る（この時点ではインフラは作られない）
- `aws ecs associate-gateway-with-cluster` でクラスターに関連付ける
- `create-service` か `update-service` で gateway connector を追加する
- デプロイすると、ECS が ALB とサービスごとのリソースを用意し、route が `ACTIVE` になる

既存サービスも `UpdateService` で connector を追加できて、古い設定と並行して動かしながら試せるよ。

料金は ECS Gateway 自体に追加料金なしで、ALB、CloudWatch、ACM 証明書、データ転送など、作られるインフラ分を支払うの。

## まとめ

- ECS Gateway は、ECS サービスの ingress を自動で用意するアカウントレベルのリソース
- プラットフォームチームが標準を決め、アプリチームは connector を足すだけ
- 最大 25 サービスが 1 つの ALB を共有する
- 追加料金なし、基盤のインフラ分のみ課金

ECS で多くのサービスを運用しているプラットフォームチームのみんなに刺さる発表だよ！
