昨夜、AWS ECSサービスで遊びたくなった。すべてを同時にデプロイするためのTerraformコードを書いた。Terraformは、異なるVPCでECSを実行し、他のリソースから分離するためのすべてのリソースを作成する。

このプロジェクトではnginx:alpine Dockerイメージを使用したが、必要に応じてTerraformを修正・変更して自分のニーズに合わせて実装できる。

AWS ECSとは?

Amazon Elastic Container Service(Amazon ECS)は、フルマネージドのコンテナオーケストレーションサービスだ。顧客はECSのセキュリティ、信頼性、スケーラビリティの高さから、最も機密性が高くミッションクリティカルなアプリケーションを実行するためにECSを使用している。

ECSがコンテナの実行に最適な選択肢である理由はいくつかある。第一に、コンテナ向けサーバーレスコンピュートであるAWS Fargateを使用してECSクラスタを実行することを選択できる。Fargateはサーバーのプロビジョニングと管理の必要性を取り除き、アプリケーションごとにリソースを指定して支払い、設計によるアプリケーション分離を通じてセキュリティを向上させる。第二に、ECSはAmazon SageMaker、AWS Batch、Amazon Lex、Amazon.comのレコメンデーションエンジンなどのサービスを支えるためにAmazon内部で広範に使用されており、ECSがセキュリティ、信頼性、可用性について広範にテストされていることを保証する。

さらに、ECSは主要なAmazonサービスの基盤となっているため、Amazon Route 53、Secrets Manager、AWS Identity and Access Management(IAM)、Amazon CloudWatchなどの他のサービスとネイティブに統合でき、コンテナのデプロイとスケーリングに使い慣れた体験を提供する。ECSはまた、他のAWSサービスと迅速に統合して新しい機能をECSにもたらすことができる。例えば、ECSはアプリケーションがAmazon EC2とAWS Fargateをスポットとオンデマンドの価格オプションで組み合わせて使用する柔軟性を可能にする。ECSはまた、サービスメッシュであるAWS App Meshと統合し、アプリケーションに豊富な可観測性、トラフィック制御、セキュリティ機能をもたらす。ECSはローンチ以来急速に成長しており、現在EC2がインスタンスを起動するよりも1時間あたり5倍多くのコンテナを起動している。

リポジトリ

リポジトリはhttps://github.com/flightlesstux/aws-ecs-nginx-appで確認でき、必要に応じてコードを使用してデプロイを行ったり、ECSがどのように動作するかを理解したりできる。