AWS Copilot v1.24: ECS Service Connect!
Posted On: Nov 28, 2022
The AWS Copilot core team is announcing the Copilot v1.24 release.
Our public сommunity сhat is growing and has over 350 people online and over 2.5k stars on GitHub. Thanks to every one of you who shows love and support for AWS Copilot.
Copilot v1.24 brings several new features and improvements:
- ECS Service Connect support: See detailed section.
env deploy: Copilot
env deploynow has a new flag
--no-rollback; you can specify the flag to disable automatic env deployment rollback to help with debugging.
- Config autoscaling for Request-Driven Web Service: It is now possible to specify autoscaling configuration for your RDWS. For example, this can be configured in your service manifest:
- Add log retention to VPC flow logs: There is now a default value of 14 days.
Alternatively, you can customize the number of days for retention:
network: vpc: flow_logs: on
network: vpc: flow_logs: retention: 30
What’s AWS Copilot?
The AWS Copilot CLI is a tool for developers to build, release, and operate production ready containerized 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 micro service 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.
ECS Service Connect Support
Copilot supports the newly launched ECS Service Connect! Your private service-to-service communication will be more resilient and load-balanced with Service Connect than with Service Discovery. Let's walk through how Copilot supports ECS Service Connect.
(Optional) Deploy an example service
If you don't have any existing services deployed, please follow our tutorial to deploy a simple front-end service that is accessible in your browser.
Set up Service Connect
In addition to Service Discovery, you can set up Service Connect with the following configuration in your service manifest.
network: connect: true
In order to use Service Connect, both server and client services need to have Service Connect enabled.
Check out the generated endpoint
After successfully deploying with the updated manifest, Service Connect should be enabled for your service. You can run
copilot svc show to get the endpoint URL for your service.
$ copilot svc show --name front-end ... Internal Service Endpoints Endpoint Environment Type -------- ----------- ---- front-end:80 test Service Connect front-end.test.demo.local:80 test Service Discovery ...
front-end:80is your Service Connect endpoint that your other client services can call. (They must have Service Connect enabled as well.)
(Optional) Verify that it works
To verify the IP address for your Service Connect endpoint URL has indeed been added to your service network, you can simply use
copilot svc exec to execute into your container and check out the hosts file.
$ copilot svc exec --name front-end Execute `/bin/sh` in container frontend in task a2d57c4b40014a159d3b2e3ec7b73004. Starting session with SessionId: ecs-execute-command-088d464a5721fuej3f # cat /etc/hosts 127.0.0.1 localhost 10.0.1.253 ip-10-0-1-253.us-west-2.compute.internal 127.255.0.1 front-end 2600:f0f0:0:0:0:0:0:1 front-end # exit Exiting session with sessionId: ecs-execute-command-088d464a5721fuej3f.