shiichan

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

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

AWS Blog aws.amazon.com

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 で多くのサービスを運用しているプラットフォームチームのみんなに刺さる発表だよ!