Amazon ECS developer tools overview - Amazon Elastic Container Service

Amazon ECS developer tools overview

Whether you are part of a large enterprise or a startup, Amazon ECS offers a variety of tools that can help you to get your containers up and running quickly, regardless of your level of expertise. You can work with Amazon ECS in the following ways.

  • Learn about, develop, manage and visualize your container applications and services using the AWS Management Console.

  • Perform specific actions to Amazon ECS resources with automated deployments through programming or scripts using the AWS Command Line Interface, AWS SDKs or the ECS API.

  • Define and manage all AWS resources in your environment with automated deployment using AWS CloudFormation.

  • Use the complete AWS Copilot CLI end-to-end developer workflow to create, release, and operate container applications that comply with AWS best practices for infrastructure.

  • Using your preferred programming language, define infrastructure or architecture as code with the AWS CDK.

  • Containerize applications that are hosted on premises or on Amazon EC2 instances or both by using the AWS App2Container integrated portability and tooling ecosystem for containers.

  • Deploy a Docker Compose application to Amazon ECS or test local containers with containers running in ECS, using the Amazon ECS CLI.

  • Launch containers from Docker Desktop integration with Amazon ECS using Amazon ECS in Docker Desktop.

AWS Management Console

The AWS Management Console is a browser-based interface for managing Amazon ECS resources. The console provides a visual overview of the service, making it easy to explore Amazon ECS features and functions without needing to use additional tools. Many related tutorials and walkthroughs are available that can guide you through use of the console.

For a tutorial that guides you through the console, see Getting started with Amazon ECS.

When starting out, many customers prefer using the console because it provides instant visual feedback on whether the actions they take succeed. AWS customers that are familiar with the AWS Management Console, can easily manage related resources such as load balancers and Amazon EC2 instances.

Start with the AWS Management Console.

AWS Command Line Interface

The AWS Command Line Interface (AWS CLI) is a unified tool that you can use to manage your AWS services. With this one tool alone, you can both control multiple AWS services and automate these services through scripts. The Amazon ECS commands in the AWS CLI are a reflection of the Amazon ECS API.

AWS provides two sets of command line tools: the AWS Command Line Interface (AWS CLI) and the AWS Tools for Windows PowerShell. For more information, see the AWS Command Line Interface User Guide and the AWS Tools for Windows PowerShell User Guide.

The AWS CLI is suitable for customers who prefer and are used to scripting and interfacing with a command line tool and know exactly which actions they want to perform on their Amazon ECS resources. The AWS CLI is also helpful to customers who want to familiarize themselves with the Amazon ECS APIs. Customers can use the AWS CLI to perform a number of operations on Amazon ECS resources, including Create, Read, Update, and Delete operations, directly from the command line interface.

Use the AWS CLI if you are or want to become familiar with the Amazon ECS APIs and corresponding CLI commands and want to write automated scripts and perform specific actions on Amazon ECS resources.

AWS CloudFormation

AWS CloudFormation and Terraform for Amazon ECS both provide powerful ways for you to define your infrastructure as code. You can easily track which version of your template or AWS CloudFormation stack is running at any time and rollback to a previous version if needed. You can perform infrastructure and application deployments in the same automated fashion. This flexibility and automation is what makes AWS CloudFormation and Terraform two popular formats for deploying workloads to Amazon ECS from continuous delivery pipelines.

For more information about AWS CloudFormation, see Creating Amazon ECS resources with AWS CloudFormation.

Use AWS CloudFormation or Terraform if you want to automate infrastructure deployments and applications on Amazon ECS and explicitly define and manage all of the AWS resources in your environment.

AWS Copilot CLI

The AWS Copilot CLI (command line interface) is a comprehensive tool that enables customers to deploy and operate applications packaged in containers and environments on Amazon ECS directly from their source code. When using AWS Copilot you can perform these operations without understanding AWS and Amazon ECS elements such as Application Load Balancers, public subnets, tasks, services, and clusters. AWS Copilot creates AWS resources on your behalf from opinionated service patterns, such as a load balanced web service or backend service, providing an immediate production environment for containerized applications. You can deploy through an AWS CodePipeline pipeline across multiple environments, accounts, or Regions, all of which can be managed within the CLI. By using AWS Copilot you can also perform operator tasks, such as viewing logs and the health of your service. AWS Copilot is an all-in-one tool that helps you more easily manage your cloud resources so that you can focus on developing and managing your applications.

For more information, see Using the AWS Copilot command line interface.

Use the AWS Copilot complete end-to-end developer workflow to create, release, and operate container applications that comply with AWS best practices for infrastructure.

AWS CDK

The AWS Cloud Development Kit (AWS CDK) is an open source software development framework that enables you to model and provision your cloud application resources using familiar programming languages. AWS CDK provisions your resources in a safe, repeatable manner through AWS CloudFormation. Using the CDK, customers can generate their environment with fewer lines of code using the same language they used to build their application. Amazon ECS provides a module in the CDK that is named ecs-patterns, which creates common architectures. An available pattern is ApplicationLoadBalancedFargateService(). This pattern creates a cluster, task definition, and additional resources to run a load balanced Amazon ECS service on AWS Fargate.

For more information, see Creating an Amazon ECS on AWS Fargate service using the AWS CDK in the AWS Cloud Development Kit (AWS CDK) Developer Guide.

Use the AWS CDK if you want to define infrastructure or architecture as code in your preferred programming language. For example, you can use the same language that you use to write your applications.

AWS App2Container

Sometimes enterprise customers might already have applications that are hosted on premises or on EC2 instances or both. They are interested in the portability and tooling ecosystem of containers specifically on Amazon ECS, and need to containerize first. AWS App2Container enables you to do just that. App2Container (A2C) is a command line tool for modernizing .NET and Java applications into containerized applications. A2C analyzes and builds an inventory of all applications running in virtual machines, on premises or in the cloud. After you select the application you want to containerize, A2C packages the application artifact and identified dependencies into container images. It then configures the network ports and generates the Amazon ECS task. Last, it creates a CloudFormation template that you can deploy or modify if needed.

For more information, see Getting started with AWS App2Container.

Use App2Container if you have applications that are hosted on premises or on Amazon EC2 instances or both.

Amazon ECS CLI

The Amazon ECS CLI enables you to run your applications on Amazon ECS and AWS Fargate using the Docker Compose file format. You can quickly provision resources, push and pull images using Amazon ECR, and monitor running applications on Amazon ECS or AWS Fargate. You can also test containers running locally along with containers in the cloud within the CLI.

For more information, see Using the Amazon ECS command line interface.

Use the ECS CLI if you have a Compose application and want to deploy it to Amazon ECS, or test local containers with containers running in Amazon ECS in the cloud.

Docker Desktop integration with Amazon ECS

AWS and Docker have collaborated to make a simplified developer experience that enables you to deploy and manage containers on Amazon ECS directly using Docker tools. You can now build and test your containers locally using Docker Desktop and Docker Compose, and then deploy them to Amazon ECS on Fargate. To get started with the Amazon ECS and Docker integration, download Docker Desktop and optionally sign up for a Docker ID. For more information, see Docker Desktop and Docker ID signup.

Beginners to containers often start learning about containers by using Docker tools such as the Docker CLI and Docker Compose. This makes using the Docker Compose CLI plugin for Amazon ECS a natural next step in running containers on AWS after testing locally. Docker provides a walkthrough on deploying containers on Amazon ECS. For more information, see Deploying Docker containers on Amazon ECS.

You can take advantage of additional Amazon ECS features, such as service discovery, load balancing and other AWS resources for use with their applications with Docker Desktop.

You can also download the Docker Compose CLI plugin for Amazon ECS directly from GitHub. For more information, see Docker Compose CLI plugin for Amazon ECS on GitHub.

AWS SDKs

You can also use AWS SDKs to manage Amazon ECS resources and operations from a variety of programming languages. The SDKs provide modules to help take care of tasks, including tasks in the following list.

  • Cryptographically signing your service requests

  • Retrying requests

  • Handling error responses

For more information about the available SDKs, see Tools for Amazon Web Services.

Summary

With the many options to choose from, you can choose the options that are best suited to you. Consider the following options.

  • If you are visually oriented, you can visually create and operate containers using the AWS Management Console.

  • If you prefer CLIs, consider using AWS Copilot or the AWS CLI. Alternatively, if you prefer the Docker ecosystem, you can take advantage of the functionality of ECS from within the Docker CLI to deploy to AWS. After these resources are deployed, you can continue managing them through the CLI or visually through the Console.

  • If you are a developer, you can use the AWS CDK to define your infrastructure in the same language as your application. You can use the CDK and AWS Copilot to export to CloudFormation templates where you can change granular settings, add other AWS resources, and automate deployments through scripting or a CI/CD pipeline such as AWS CodePipeline.

The AWS CLI, SDKs, or ECS API are useful tools for automating actions on ECS resources, making them ideal for deployment. To deploy applications using AWS CloudFormation you can use a variety of programming languages or a simple text file to model and provision all the resources needed for your applications. You can then deploy your application across multiple Regions and accounts in an automated and secure manner. For example, you can define your ECS cluster, services, task definitions, or capacity providers, as code in a file and deploy through the AWS CLI CloudFormation commands.

To perform operations tasks, you can view and manage resources programmatically using the AWS CLI, SDK, or ECS API. Commands like describe-tasks or list-services display the latest metadata or a list of all resources. Similar to deployments, customers can write an automation that includes commands such as update-service to provide corrective action upon the detection of a resource that has stopped unexpectedly. You can also operate your services using AWS Copilot. Commands like copilot svc logs or copilot app show provide details about each of your microservices, or about your application as a whole.

Customers can use any of the available tooling mentioned in this document and use them in variety of combinations. ECS tooling offers various paths to graduate from certain tools to use others that fit your changing needs. For example, you can opt for more granular control over resources or more automation as needed. ECS also offers a large range of tools for a wide range of needs and levels of expertise.