Consul
Configure routes between ECS tasks
This topic describes how to configure routes between tasks after registering the tasks to Consul service mesh.
Overview
To enable tasks to call through the service mesh, complete the following steps:
- Configure the sidecar proxy to listen on a different port for each upstream service your application needs to call.
- Modify your application to make requests to the sidecar proxy on the specified port.
Requirements
Consul service mesh must be deployed to ECS before you can bind a network address. For more information, refer to the following topics:
Configure the sidecar proxy
Add the upstreams
block to your application configuration and specify the following fields:
destinationName
: Specifies the name of the upstream service as it is registered in the Consul service catalog.localBindPort
: Specifies the port that the proxy forwards requests to. You must specify an unused port but it does not need to match the upstream service port.
In the following example, the route from an application named web
to an application named backend
goes through port 8080
:
module "web" {
family = "web"
upstreams = [
{
destinationName = "backend"
localBindPort = 8080
}
]
}
You must include all upstream services in the upstream
configuration.
Configure your application
Use an appropriate environment variable in your container definition to configure your application to call the upstream service at the loopback address.
In the following example, the web
application calls the backend
service by sending requests to the
BACKEND_URL
environment variable:
module "web" {
family = "web"
upstreams = [
{
destinationName = "backend"
localBindPort = 8080
}
]
container_definitions = [
{
name = "web"
environment = [
{
name = "BACKEND_URL"
value = "http://localhost:8080"
}
]
...
}
]
...
}