Amazon Elastic Container Service (Amazon ECS) ist ein Containerverwaltungsservice. Es müssen Aufgaben definiert werden (Task Definition), um Docker-Container in Amazon ECS auszuführen. Dabei legst du fest, welches Docker-Image jeder Container für die Aufgaben nutzen soll und wie viel CPU und Speicher dafür zu Verfügung stehen. Weitere Parameter können je nach Bedarf angepasst werden. In der Definition einer Aufgabe können mehrere Container genutzt werden. Die Aufgabe selbst muss nicht die ganze Anwendung enthalten, sondern die Anwendung kann auf mehrere Aufgabendefinitionen aufgeteilt werden.
Je nachdem wie der Workload variiert und ob Container selbstständig verwaltet werden sollen, gibt es verschiedene Launchtypes für Amazon ECS: Amazon EC2 und AWS Fargate. Der Launchtype EC2 stellt Amazon EC2-Instanzen für die Container zur Verfügung und eignet sich für stabile CPU- und Speicherauslastungen. Zusätzlich musst du deine Infrastruktur selbst verwalten.
Im Vergleich dazu bietet der Launchtype Fargate den Vorteil, dass die Infrastruktur nicht selbst verwaltet werden muss und sich dieser selbstständig skaliert, wodurch die Anzahl seiner Aufgaben erhöhen oder reduzieren kann je nach Grösse der Nachfrage. Die Skalierung kann als Grundlage den Wert einer Metrik nutzen beispielsweise die CPU-Auslastung. Durch diese Metriken kann dann festgelegt werden, wann Amazon ECS skalieren soll.
Eine andere Art der Skalierung ist die geplante Skalierung. Dadurch wird festgelegt an welchem Tag und zu welcher Zeit eine bestimmte Menge an Aufgaben erfüllt werden soll. Als dritte Möglichkeit kann die Anpassung auch schrittweise erfolgen. Je nachdem wie groß oder klein die Veränderung der betrachteten Metrik ist, zum Beispiel der mittleren CPU-Auslastung, hängt davon auch die Skalierung ab. Die Skalierbarkeit ist für mehrere Availability Zones automatisch möglich und erhöht dadurch die Verfügbarkeit der eigenen Anwendungen, da durch die Availability Zones die Anwendung redundant wird. Um die Amazon EC2-Instanzen in einem Amazon ECS-Cluster zu managen, ist kein weiteres Programm nötig. Mit API-Aufrufen können container-basierte Anwendungen einfach gestartet und gestoppt werden. Außerdem können dadurch Informationen über den gesamten Zustand des Clusters aufgerufen werden. Durch Amazon ECS können auch viele bereits bekannte Services genutzt werden wie Security Groups und and IAM-Rollen.