Containers are a powerful way for developers to develop, package, and deploy their applications. At AWS we have over a hundred thousand active ECS clusters and hundreds of millions of new containers started each week. That’s 400+% customer growth since 2016. Container orchestration solutions, like Amazon ECS and Kubernetes make it easier to deploy, manage, and scale these container workloads increasing your agility. However, with each of these container management solutions you’re still responsible for the availability, capacity, and maintenance of the underlying infrastructure. At AWS we saw this as an opportunity to remove some undifferentiated heavy lifting. We want to let you take full advantage of the speed, agility, and immutability that containers offer so you can focus on building your applications rather than managing your infrastructure.

AWS Fargate

AWS Fargate is an easy way to deploy your containers on AWS. To put it simply, Fargate is like EC2 but instead of giving you a virtual machine you get a container. It’s a compute engine that allows you to use containers as a fundamental compute primitive without having to manage the underlying instances. All you need to do is build your container image, specify the CPU and memory requirements, define your networking and IAM policies, and launch. With Fargate, you have flexible configuration options to closely match your application needs and you’re billed with per-second granularity.

Picture1

The best part? You can still use all of the same ECS primitives, APIs, and AWS integrations. Fargate provides native integrations with Amazon Virtual Private CloudAWS Identity and Access Management (IAM)Amazon CloudWatch and load balancers. Fargate tasks use the AWSVPC networking mode and provision an Elastic Network Interface (ENI) in your VPC to communicate securely with your resources. With the AWS Command Line Interface (CLI) launching a Fargate task is simple.

aws ecs run-task --launch-type FARGATE --cluster BlogCluster --task-definition blog --network-configuration "awsvpcConfiguration={subnets=[subnet-b563fcd3]}"

It’s also easy to use the console to create task definitions and run tasks with the Fargate launch type.
fargate 2

fargate 1

Once we’ve launched a few tasks we can see them running in our cluster:
fargate

You’ll notice that ECS clusters are heterogeneous. They can contain tasks running in Fargate and on EC2.

If we dive a little deeper and look at a task we can see some useful information including the ENI that Fargate provisioned in our VPC and all of the containers used by that task. The logs tab gives me easy access to my CloudWatch Logs for that task as well.

fargate 4

Let’s take a look at the configuration options and pricing details for Fargate.

Pricing

AWS Fargate uses an on-demand pricing model. You pay per per-second for the amount of vCPU and memory resources consumed by your applications. Price per vCPU is $0.0506 per hour and per GB memory is $0.0127 per hour. With Fargate you have 50 configuration options for vCPU and Memory to support a wide range of workloads. The configuration options are below.

 

CPU (vCPU) Memory Values (GB)
0.25 0.5, 1, 2
0.5 1, 2, 3
1 Min. 2GB and Max. 8GB, in 1GB increments
2 Min. 4GB and Max. 16GB, in 1GB increments
4 Min. 8GB and Max. 30GB in 1GB increments

Things To Know

  • You can configure Fargate to closely meet your application’s resource requirements and pay only for resources required by your containers. You can launch tens or tens of thousands of containers in seconds.
  • Fargate tasks run similarly to tasks running on EC2. You can add them to VPCs, configure load balancers, and assign IAM roles.