
Networking
Amazon ECS is a managed service for containerized applications based on Docker containers. Managed service implies that ECS manages all container orchestration aspects including launching a cluster of virtual machines (EC2 instances), creating and scheduling containers on the virtual machines, and scaling the cluster of VMs.
Problem: Amazon ECS runs Docker containers on virtual machines (EC2 instances). The EC2 launch type incurs an overhead of launching and managing a cluster of virtual machines (EC2 instances). As a primer on ECS, a task definition defines a group of containers (container definitions). A container definition defines a name, Docker image, port mappings, entry point, and command. Resources (CPU and memory) are defined at both the task and container level. A service definition defines a service and consists of a task definition, launch type, load balancers, network configuration, deployment configuration, and deployments. The ECS cluster with the EC2 launch type is as follows:

Solution: Amazon Fargate has introduced serverless ECS and does not run VMs. The fundamental infrastructure with Fargate is the Fargate platform . A user does not manage the underlying instances, which makes Fargate an Infrastructure as a Service (IaaS). The main benefit of Fargate is that a user does not have to manage any servers. A user does not provision, configure, and scale clusters of VMs. With Fargate, a user does not create or manage any EC2 instances and does not manage cluster capacity and scheduling. A user only has to define the application resource requirements in terms of the CPU and memory of a container and a task, and Fargate manages the scaling as the requirements fluctuate. With the Fargate launch type, ECS is still integrable with all the same AWS services, which include IAM, VPC, and CloudWatch, as it is with the EC2 launch type. The EC2 launch type option is still available. The ECS cluster with the Fargate launch type is illustrated in the following diagram. The only supported networking mode with the Fargate launch type is awsvpc, and an elastic network interface for a task is created in a VPC to provide access to the task. An ECS cluster may consist of Fargate-managed tasks in multiple availability zones for high availability:

With the introduction of the Fargate launch type, some of the settings in a task definition, container definition, and service definition are different to the EC2 launch type. The Fargate-related configuration parameters are discussed in subsequent sections.
In this chapter, we will learn about the following:
- Creating an ECS cluster
- Configuring a container definition
- Configuring a task definition
- Configuring a service
- Configuring and creating a cluster
- Running an additional task
- Accessing the service
- Deleting a cluster
The only prerequisite is an AWS account, which may be created at https://aws.amazon.com/resources/create-account/.