Amazon Elastic Container Service - Overview of Deployment Options on AWS

Amazon Elastic Container Service

Amazon Elastic Container Service (Amazon ECS) is a fully managed container orchestration service that supports Docker containers and allows you to easily run applications on a managed cluster. Amazon ECS eliminates the need to install, operate, and scale container management infrastructure, and simplifies the creation of environments with familiar AWS core features like Security Groups, Elastic Load Balancing, and AWS Identity and Access Management (IAM).

When running applications on Amazon ECS, you can choose to provide the underlying compute power for your containers with Amazon EC2 instances or with AWS Fargate, a serverless compute engine for containers. In either case, Amazon ECS automatically places and scales your containers onto your cluster according to configurations defined by the user. Although Amazon ECS does not create infrastructure components such as Load Balancers or IAM Roles on your behalf, the Amazon ECS service provides a number of APIs to simplify the creation and use of these resources in an Amazon ECS cluster.

Amazon ECS allows developers to have direct, fine-grained control over all infrastructure components, allowing for the creation of custom application architectures. Additionally, Amazon ECS supports different deployment strategies to update your application container images.

Table 4: Amazon ECS deployment features

Capability Description
Provision

Amazon ECS will provision new application container instances and compute resources based on scaling policies and Amazon ECS configurations. Infrastructure resources such as Load Balancers will need to be created outside of Amazon ECS.

Refer to Getting Started with Amazon ECS for more details on the types of resources that can be created with Amazon ECS.

Configure

Amazon ECS supports customization of the compute resources created to run a containerized application, as well as the runtime conditions of the application containers (e.g., environment variables, exposed ports, reserved memory/CPU). Customization of underlying compute resources is only available if using Amazon EC2 instances.

Refer to Creating a Cluster for more details on how to customize an Amazon ECS cluster to run containerized applications.

Deploy

Amazon ECS supports several deployment strategies for you containerized applications.

Refer to Amazon ECS Deployment Types for more details on the types of deployment processes that are supported.

Scale

Amazon ECS can be used with auto-scaling policies to automatically adjust the number of containers running in your Amazon ECS cluster.

Refer to Service Auto Scaling for more details on configuring auto scaling for your containerized applications on Amazon ECS.

Monitor

Amazon ECS supports monitoring compute resources and application containers with CloudWatch.

Refer to Monitoring Amazon ECS for more details on the types of monitoring capabilities offered by Amazon ECS.

The following diagram illustrates Amazon ECS being used to manage a simple containerized application. In this example, infrastructure components are created outside of Amazon ECS, and Amazon ECS is used to manage the deployment and operation of application containers on the cluster

Figure 4: Amazon ECS use case