Amazon Elastic Container Service (Amazon ECS) is a highly scalable, high-performance container orchestration service that supports Docker containers and allows you to easily run and scale containerized applications on AWS. Amazon ECS eliminates the need for you to install and operate your own container orchestration software, manage and scale a cluster of virtual machines, or schedule containers on those virtual machines.
With simple API calls, you can launch and stop Docker-enabled applications, query the complete state of your application, and access many familiar features such as IAM roles, security groups, load balancers, Amazon CloudWatch Events, AWS CloudFormation templates, and AWS CloudTrail logs.
Containers without Infrastructure Management
Amazon ECS features AWS Fargate, so you can deploy and manage containers without having to manage any of the underlying infrastructure. With AWS Fargate technology, you no longer have to select Amazon EC2 instance types, provision, and scale clusters of virtual machines to run containers or schedule containers to run on clusters and maintain their availability. Fargate enables you to focus on building and running the application and not the underlying infrastructure.
Amazon ECS lets you easily build all types of containerized applications, from long-running applications and microservices to batch jobs and machine learning applications. You can migrate legacy Linux or Windows applications from on-premises to the cloud and run them as containerized applications using Amazon ECS.
Amazon ECS launches your containers in your own Amazon VPC, allowing you to use your VPC security groups and network ACLs. No compute resources are shared with other customers. You can also assign granular access permissions for each of your containers using IAM to restrict access to each service and what resources a container can access. This high level of isolation helps you use Amazon ECS to build highly secure and reliable applications.
Performance at Scale
Amazon ECS is built on technology developed from many years of experience running highly scalable services. You can launch tens or tens of thousands of Docker containers in seconds using Amazon ECS with no additional complexity.
Designed for Use with Other AWS Services
Amazon ECS is integrated with the following AWS services, providing you a complete solution for running a wide range of containerized applications or services: Elastic Load Balancing, Amazon VPC, AWS IAM, Amazon ECR, AWS Batch, Amazon CloudWatch, AWS CloudFormation, AWS CodeStar, and AWS CloudTrail
How it works
Popular use cases for Amazon ECS
Amazon ECS helps you run microservices applications with native integration to AWS services and enables continuous integration and continuous deployment (CICD) pipelines.
Amazon ECS lets you run batch workloads with managed or custom schedulers on Amazon EC2 On-Demand Instances, Reserved Instances, or Spot Instances.
Application Migration to the Cloud
Legacy enterprise applications can be containerized and easily migrated to Amazon ECS without requiring code changes.
Amazon ECS makes it easy to containerize ML models for both training and inference. You can create ML models made up of loosely coupled, distributed services that can be placed on any number of platforms, or close to the data that the applications are analyzing.
Amazon Elastic Container Service (ECS) now supports container health checks. This gives you more control over monitoring the health of your tasks and improves the ability of the ECS service scheduler to ensure your services are healthy.
You can now set up Service Auto Scaling using target tracking policies for your containerized services directly from the Amazon ECS console. With target tracking, you select a load metric for your service, set the target value, and Auto Scaling adjusts the number of running tasks for your service to maintain the target value.
You can now query task metadata and container-level Docker statistics for tasks that are launched using the awsvpc network mode. This gives you a straightforward way to get environmental data such as task, container, and image ID, as well as check the status and health of running containers and tasks.