Book Image

Amazon Fargate Quick Start Guide

By : Deepak Vohra
Book Image

Amazon Fargate Quick Start Guide

By: Deepak Vohra

Overview of this book

Amazon Fargate is new launch type for the Amazon Elastic Container Service (ECS). ECS is an AWS service for Docker container orchestration. Docker is the de facto containerization framework and has revolutionized packaging and deployment of software. The introduction of Fargate has made the ECS platform serverless. The book takes you through how Amazon Fargate runs ECS services composed of tasks and Docker containers and exposes the containers to the user. Fargate has simplified the ECS platform. We will learn how Fargate creates an Elastic Network Interface (ENI) for each task and how auto scaling can be enabled for ECS tasks. You will also learn about using an IAM policy to download Docker images and send logs to CloudWatch. Finally, by the end of this book, you will have learned about how to use ECS CLI to create an ECS cluster and deploy tasks with Docker Compose.
Table of Contents (14 chapters)
Title Page
Copyright and Credits
Packt Upsell

Compute resources in Amazon ECS Fargate

Task size consists of Task memory (GB) and Task CPU (vCPU). While optional in the EC2 launch type, task size is required with the Fargate launch type. Docker container level memory and CPU settings may optionally be defined, but are overridden by task definition level settings. Only specific combinations of task memory and task CPU are supported, and the ECS wizard indicates with a message the supported value (or range of values) for a selected value. As an example, the valid CPU range for 1 GB memory is 0.25 vCPU to 0.5 vCPU. The total resources (memory or CPU) configured at the container level must not exceed the task level resource settings. As an example, if a task definition consists of two containers (MySQL and WordPress) with a memory limit of 128 MB for each container, the task level memory must be at least 256 MB. Also, the total of container level memory must not exceed 256 MB. Similarly for the CPU. Two memory limits may be defined at the container level: Soft limit and Hard limit. The Soft limit corresponds to the memoryReservation attribute at the task level, and the Hard limit corresponds to the memory attribute at the task level. The sum of container memory reservations (Soft limits) must not exceed the task memory. The Hard limit for each container must not exceed the memory configured at the task level. A minimum of 4 GB must be specified by default for a container.

An example task size is shown in the following screenshot, in which the Task memory (memory attribute) is set to 0.5 GB (512 GB), and the Task CPU is set to 0.25 vCPU. At the container level, as configured in the two container definitions, the memory reservation is 128 MB for each container, which makes the total memory reservation of 256 MB well within the 512 GB allocated at the task level. The task size is allocated to a task, whether used or not. Similarly, the number of CPU Units configured for each container is 10, which makes the total CPU units 20 for containers within the CPU units, 25 are allocated at the task level. Refer to the following screenshot:

Task size configuration and allocation for containers