AWS provides its cloud users with a highly scalable container management service, dubbed Amazon ECS, that allows them to create and manage Docker containers on a cluster of EC2 instances.
Amazon ECS, essentially, does away with the need for developers to install, operate and scale their own cluster management infrastructure. They can simply launch and stop Docker enabled applications on the cloud, all the while accessing the security features and capabilities available on the Amazon cloud.
We read up on the basic details of Amazon ECS, now let’s get down to its various components.
Amazon ECS makes the process of building and running containerized applications on the cloud simple, and the biggest reason for this is ECS architecture that Amazon has built. The core of ECS is the cluster manager, which is a backend service that handles the tasks of cluster coordination and state management.
On top of it reside the various schedulers.
So, in essence, a cluster is just a pool of compute resources that are available to your applications, like CPU, memory and networking resources. The Amazon ECS Container Agent runs on each EC2 instance on the cluster, and channels the communication between the cluster and the instance, offerings users the ability to start, stop, and monitor containers. This agent is written in Go, a programming language that allows for the creation of agile solutions with minimal footprints.
Now, that we have a very basic idea of the architecture, let’s take a look at the features available to Amazon ECS users. All of these features and components have been designed by Amazon to make the process of running containers on its cloud platform simple as it can be.
Amazon developed ECS in response to the rise in popularity of containerization, with the whole idea being saving users of its cloud platform from the hassle of installing, operating, and scaling their own cluster management. The ECS services does all this for you, and all you have to do is launch a cluster of container instances and specify the tasks you want to run. Cluster management is done for you!
This is the big one! Amazon ECS offers full, native support for Docker, allowing for the possibility to run and manage Docker containers across a cluster of EC2 instances. A Docker daemon manages each instance in a cluster, enabling all your applications packaged as a container locally to deploy and run on the ECS service without the need of any configuration.
A declarative JSON template called a Task Definition allows you to define tasks on Amazon ECS. You get the ability to specific any number of containers for your tasks, and launch as many tasks as you want from a single Task Definition file. These files can also be used for version control the specifications of your cloud apps.
Amazon ECS services comes with support for schedulers that you can use to place containers across your clusters based on the resources you need at any given time. These can be used to schedule both long running applications, and batch jobs. It is possible to develop your own schedulers, or integrate third-party schedulers by making use of container management and orchestration solutions like Blox.
Full programmatic control is available to developers using the Amazon ECS service, via a set of simple APIs that allows them to integrate and extend the service. You can create and delete clusters, register and deregister tasks, as well as launch and terminate Docker containers with ease. Detailed information about the state of your cluster and its instances is also provided.
Any third-party or private Docker registry can access the Amazon ECS service. Connecting is straightforward enough, with the user just needing to specific the repository in the task definition to retrieve the image. Any accessible private Docker registry, or Docker Hub, even a hosted Docker image repository works for perfectly for this purpose.
Amazon provides monitoring capabilities for your containers and clusters, including the ability to monitor average and aggregate CPU and memory utilization of running tasks. You can also set CloudWatch alarms to alert you when your containers or clusters need to scale up or down.
In addition to this, fairly comprehensive agent and container logs can also be sent to Amazon CloudWatch Logs for simple and streamlined diagnosis.