AWS Copilot v1.31: NLB enhancements, better task failure logs, copilot deploy
enhancements
Posted On: October 5, 2023
The AWS Copilot core team is announcing the Copilot v1.31 release.
Our public сommunity сhat has over 500 people participating, and our GitHub repository has over 3k stars on GitHub 🚀. Thanks to every one of you who shows love and support for AWS Copilot.
Copilot v1.31 brings big enhancements to help you develop more flexibly and efficiently:
- NLB enhancements: You can now add security groups to Copilot-managed network load balancers. NLBs also support the UDP protocol. See detailed section
- Better task failure logs: Copilot will show more descriptive information during deployments when tasks fail, allowing better troubleshooting.
copilot deploy
enhancements: You can now deploy multiple workloads at once, or deploy all local workloads with--all
.- Importing an ACM certificate for your Static Site: You can now bring your own ACM certificate for the Static Site service. See detailed section
What’s AWS Copilot?
The AWS Copilot CLI is a tool for developers to build, release, and operate production-ready applications on AWS. From getting started, pushing to staging, and releasing to production, Copilot can help manage the entire lifecycle of your application development. At the foundation of Copilot is AWS CloudFormation, which enables you to provision Infrastructure as Code. Copilot provides pre-defined CloudFormation templates and user-friendly workflows for different types of microservice architectures, enabling you to focus on developing your application, instead of writing deployment scripts.
See the section Overview for a more detailed introduction to AWS Copilot.
NLB enhancements
Copilot brings UDP traffic support with an update to your Network Load Balancer! The protocol your NLB uses is specified by the nlb.port field.
nlb:
port: 8080/udp
Info
NLB Security Group is a new AWS feature that lets you filter public traffic to your NLB, enhancing the security of your application. For more information, read this AWS blogpost. For Copilot to use this feature, your NetworkLoadBalancer
and TargetGroup
resources need to be recreated. With v1.31 this will only happen if you specify udp
protocol. With v1.33 however, Copilot will make this change for all users. This means that if you don't use DNS aliases, then the NLB's domain name will change, and if you do use DNS alias, then the alias will start pointing to the new NLB that is enhanced with a security group.
copilot deploy
enhancements
copilot deploy
now supports deploying multiple workloads with one command. You can specify multiple workloads with the
--name
flag, use the new --all
flag in conjunction with --init-wkld
to initialize and deploy all local workloads,
and you can now provide a "deployment order" tag when specifying service names.
For example, if you have cloned a new repository which includes multiple workloads, you can initialize the environment and all services with one command.
copilot deploy --init-env --deploy-env -e dev --all --init-wkld
If you have a service which must be deployed before another--for example, there is worker service which subscribes to a topic exposed
by a different service in the workspace--you can specify names and orders with --all
.
copilot deploy --all -n fe/1 -n worker/2
fe
, then worker
, then the remaining services or jobs in the workspace.
Better task failure logs
Before Copilot v1.31, if you wanted to find out why your ECS tasks stopped, you'd have to navigate to AWS Console -> ECS -> Service -> Stopped Tasks -> Stopped Reason.
With this enhancement, copilot [noun] deploy
will now display the ECS task stopped reasons within your CloudFormation deployment progress tracker. Copilot will show the two most recent task failures during deployments of your Load Balanced Web Service, Backend Service and Worker Services.
- An ECS service to run and maintain your tasks in the environment cluster
Deployments
Revision Rollout Desired Running Failed Pending
PRIMARY 11 [in progress] 1 0 1 0
ACTIVE 8 [completed] 1 1 0 0
Latest 2 stopped tasks
TaskId CurrentStatus DesiredStatus
6b1d6e32 DEPROVISIONING STOPPED
9802d212 STOPPED STOPPED
✘ Latest 2 tasks stopped reason
- [6b1d6e32,9802d212]: Essential container in task exited
Troubleshoot task stopped reason
1. You can run `copilot svc logs --previous` to see the logs of the last stopped task.
2. You can visit this article: https://repost.aws/knowledge-center/ecs-task-stopped.
Importing an ACM certificate for your Static Site
Copilot now introduces a new field http.certificate
in the Static Site manifest. You can specify with the ARN of any validated ACM certificate in us-east-1
as below:
http:
alias: example.com
certificate: "arn:aws:acm:us-east-1:1234567890:certificate/e5a6e114-b022-45b1-9339-38fbfd6db3e2"
Note that example.com
must be the domain name or any subject alternative name of the certificate you are bringing in, and we'll use the imported certificate for your HTTPS traffic instead of creating a Copilot-managed one.