How to Create an ECS Service from a Task Definition

Madhuwantha Priyashan Bandara
5 min readApr 23, 2024

Are you looking to efficiently manage your containerized applications in the cloud? Amazon Elastic Container Service (ECS) provides a scalable and secure platform for deploying and running containerized workloads. This guide delves into the process of creating an ECS service from a task definition, enabling you to harness the power of ECS for your containerized deployments.

Introduction to ECS Services and Task Definitions

What is Amazon ECS?

Amazon ECS is a managed container orchestration service that simplifies the deployment, scaling, and management of containerized applications. It eliminates the need for manual provisioning and management of infrastructure, allowing you to focus on your application logic.

What are ECS Services and Task Definitions?

  • ECS Service: An ECS service acts as a logical unit that manages a group of containerized tasks running on your cluster. It allows you to scale your application by adjusting the number of tasks running within the service.
  • Task Definition: A task definition serves as a blueprint that defines the configuration of a single task within your service. It specifies details like the container image, memory and CPU allocation, environment variables, and networking settings.

Benefits of using ECS Services:

  • Simplified Management: ECS automates the deployment and scaling of your containerized applications, freeing you from manual infrastructure management tasks.
  • Improved Scalability: Easily scale your applications up or down by adjusting the number of tasks within the service.
  • Resource Optimization: ECS allows efficient utilization of resources by dynamically allocating resources to running tasks.
  • Enhanced Security: ECS provides various security features, including IAM roles and network isolation, to secure your containerized applications.

Understanding Key Components (Visuals Included)

Before diving into the creation process, let’s visualize the key components involved:

  • Cluster: A logical group of resources (EC2 instances or Fargate) where tasks are scheduled and run.
  • Launch Type: Determines how tasks are launched: Fargate (serverless) or EC2 (managed instances).
  • Container: An isolated unit of software that bundles code and its dependencies.
  • Task: A single execution of a task definition, comprising one or more containers.
  • Service: A logical unit that manages and scales a group of tasks based on the same task definition.

Defining Your Task Definition:

For detailed information on creating a task definition, please refer to this comprehensive guide: [Task Definition: The Blueprint for Docker Deployments on AWS].

Step-by-Step Guide to Creating an ECS Service (with Examples and Screenshots)

Configuring Your Service (Using the AWS Management Console):

1. Service Name:

  • Navigate to the “ECS” service in the AWS Management Console.
  • Click on “Clusters” from the navigation pane and create a cluster
  • Navigate to inside of the created cluster.
  • Click on “Create” in the “Services” section.
  • Then following view will shows and I am keeping the default values for “Environment”
  • In “Deployment configuration” section, For the “Service name” field, enter a descriptive name for your service. This name will be used to identify your service in the console and other AWS services. Select the task definition you want to use for your service for the “Family”. You can choose from existing task definitions

2. Desired Tasks:

  • In the “Desired tasks” field, enter the number of tasks you want to run in your service initially. This number can be scaled up or down later as needed.

4. (Optional) Service Discovery:

  • This section allows services to discover and communicate with each other within your VPC. For this guide, we’ll keep it disabled.

5. Load Balancing:

  • You can configure a load balancer to distribute incoming traffic across your tasks. This will provide you a http or https url to access the deployed service. For this I am using a “Application Load Balancer”

The health check url is a important parameter. Make sure to you have some API endpoint which will return 200 response without any authentication.

6. Autoscaling Configuration:

  • Click on the “Service auto scaling — optional” section and enable it.
  • Minimum tasks: Enter the minimum number of tasks you want to run, even during periods of low demand.
  • Maximum tasks: Enter the maximum number of tasks you want to run, during periods of high demand.
  • Scaling policy:
  • Choose a metric to track for scaling, such as CPU utilization, network traffic, or custom metrics.
  • Define the conditions that will trigger scaling up or down (e.g., scale up if CPU utilization exceeds 70% for 5 minutes).

7. Create the Service:

  • Once you’ve completed configuring your service, click on the “Create service” button.

--

--