Amazon Announces New Command Line Interface Tool AWS Copilot

Recently, Amazon announced a new command-line interface tool called AWS Copilot, which allows customers to develop, release, and operate containerized applications on AWS. With a single command, customers can create all the infrastructure and artifacts necessary to run a service on Amazon Elastic Container Service (ECS) and AWS Fargate.

Back in 2015, Amazon made the first command-line tool for Amazon Elastic Container Service (Amazon ECS), and later in 2019, the company shared a preview release. Now the tool is publicly available in GitHub and has a name: AWS Copilot. Nathan Peck, a developer advocate for container services at Amazon Web Services, wrote in a blog post on AWS Copilot:

AWS Copilot is designed for both existing ECS users, and new ECS users who want to move beyond manual management of lower-level infrastructure, and instead, just start thinking about their application and its life cycle. Copilot creates modern application deployments by default, based on production-ready patterns that include best practices designed by ECS engineers and customers over the years.

Users can install AWS Copilot by downloading the latest release from GitHub onto their development machine. The tool uses the same credentials as AWS CLI, which the user may need to set up if not present on his or her machine. Furthermore, Docker is required on the users' machine as AWS Copilot uses it to build and package applications. 

Amazon Announces New Command Line Interface Tool AWS Copilot
Source: https://aws.amazon.com/blogs/containers/introducing-aws-copilot/

The tool is based on three main concepts:

  • Application: a grouping of components. A single team can work together within one Copilot application, or multiple teams work in separate Copilot applications to build up a system.
  • Environment: a stage in the development of an application. A team can deploy in one stage first to test and later deploy to production.
  • Service: single long-running code process in a container. An application can consist of one or more services (components).

Thus, once the tool is up and running, users can execute built-in commands to add more services, infrastructure, or even new deployment environments in different accounts and regions.

AWS Copilot is currently not the only tool that integrates with ECS and Fargate. A respondent on a Hacker News thread on AWS Copilot mentions:

Note also that the Docker integration into Fargate was released at the same time. This provides a simpler way of using Fargate, especially if you are already using Docker Compose. You can output cloud formation from this as well, but you don't have to understand the internals of ECS to use it.

InfoQ also reported on the integration.

Lastly, by using AWS Copilot users can easily set up a CI/CD pipeline automatically and deploy by simply pushing to a Git repository. Furthermore, they can expect more features soon with the provisioning of services like NoSQL and SQL databases, and S3 buckets.