--- layout: docs page_title: AWS ECS description: >- Configuration Reference for Consul on AWS ECS (Elastic Container Service). Do not modify by hand! This is automatically generated documentation. --- # Configuration Reference This pages details the configuration options for the JSON config format used by the `consul-ecs` binary. This configuration is passed to the `consul-ecs` binary as a string using the `CONSUL_ECS_CONFIG_JSON` environment variable. This configuration format follows a [JSON schema](https://github.com/hashicorp/consul-ecs/blob/main/config/schema.json) that can be used for validation. ## Terraform Mesh Task Module Configuration The `mesh-task` Terraform module provides input variables for commonly used fields. The following table shows which Terraform input variables correspond to each field of the Consul ECS configuration. Refer to the [Terraform registry documentation](https://registry.terraform.io/modules/hashicorp/consul-ecs/aws/latest/submodules/mesh-task?tab=inputs) for a complete reference of supported input variables for the `mesh-task` module. | Terraform Input Variable | Consul ECS Config Field | | ------------------------ | ------------------------------------- | | `upstreams` | [`proxy.upstreams`](#proxy-upstreams) | | `checks` | [`service.checks`](#service-checks) | | `consul_service_name` | [`service.name`](#service) | | `consul_service_tags` | [`service.tags`](#service) | | `consul_service_meta` | [`service.meta`](#service) | | `consul_namespace` | [`service.namespace`](#service) | | `consul_partition` | [`service.partition`](#service) | Each of these Terraform input variables follow the Consul ECS config schema. The remaining fields of the Consul ECS configuration not listed in this table can be passed using the `consul_ecs_config` input variable. # Top-level fields These are the top-level fields for the Consul ECS configuration format. | Field | Type | Required | Description | | ----- | ---- | -------- | ----------- | | `bootstrapDir` | `string` | required | The directory at which to mount the shared volume where Envoy bootstrap configuration is written by `consul-ecs mesh-init`. | | `healthSyncContainers` | `array` | optional | The names of containers that will have health check status synced from ECS into Consul. Cannot be specified with `service.checks`. | | [`proxy`](#proxy) | `object` | optional | Configuration for the sidecar proxy registration with Consul. | | [`service`](#service) | `object` | required | Configuration for Consul service registration. | # `service` Configuration for Consul service registration. | Field | Type | Required | Description | | ----- | ---- | -------- | ----------- | | [`checks`](#service-checks) | `array` | optional | The list of Consul checks for the service. Cannot be specified with `healthSyncContainers`. | | `enableTagOverride` | `boolean` | optional | Determines if the anti-entropy feature for the service is enabled | | `meta` | `object` | optional | Key-value pairs of metadata to include for the Consul service. | | `name` | `string` | optional | The name the service will be registered as in Consul. Defaults to the Task family name if empty or null. | | `namespace` | `string` | optional | The Consul namespace where the service will be registered [Consul Enterprise]. | | `partition` | `string` | optional | The Consul admin partition where the service will be registered [Consul Enterprise]. | | `port` | `integer` | required | Port the application listens on, if any. | | `tags` | `array` | optional | List of string values that can be used to add service-level labels. | | [`weights`](#service-weights) | `object` | optional | Configures the weight of the service in terms of its DNS service (SRV) response. | # `service.checks` Defines the Consul checks for the service. Each check may contain these fields. | Field | Type | Required | Description | | ----- | ---- | -------- | ----------- | | `aliasNode` | `string` | optional | Specifies the ID of the node for an alias check. | | `aliasService` | `string` | optional | Specifies the ID of a service for an alias check. | | `args` | `array` | optional | Command arguments to run to update the status of the check. | | `body` | `string` | optional | Specifies a body that should be sent with `HTTP` checks. | | `checkId` | `string` | optional | The unique ID for this check on the node. Defaults to the check `name`. | | `failuresBeforeCritical` | `integer` | optional | Specifies the number of consecutive unsuccessful results required before check status transitions to critical. | | `grpc` | `string` | optional | Specifies a `gRPC` check. Must be an endpoint that supports the [standard gRPC health checking protocol](https://github.com/grpc/grpc/blob/master/doc/health-checking.md). The endpoint will be probed every `interval`. | | `grpcUseTls` | `boolean` | optional | Specifies whether to use TLS for this gRPC health check. | | `h2ping` | `string` | optional | Specifies this is an h2ping check. Must be an address, which will be pinged every `interval`. | | `h2pingUseTls` | `boolean` | optional | Specifies whether TLS is used for an h2ping check. | | `header` | `object` | optional | Specifies a set of headers that should be set for HTTP checks. Each header can have multiple values. | | `http` | `string` | optional | Specifies this is an HTTP check. Must be a URL against which request is performed every `interval`. | | `interval` | `string` | optional | Specifies the frequency at which to run this check. Required for HTTP, TCP, and UDP checks. | | `method` | `string` | optional | Specifies the HTTP method to be used for an HTTP check. When no value is specified, `GET` is used. | | `name` | `string` | optional | The name of the check. | | `notes` | `string` | optional | Specifies arbitrary information for humans. This is not used by Consul internally. | | `status` | `string` | optional | Specifies the initial status the health check. Must be one of `passing`, `warning`, `critical`, `maintenance`, or`null`. | | `successBeforePassing` | `integer` | optional | Specifies the number of consecutive successful results required before check status transitions to passing. | | `tcp` | `string` | optional | Specifies this is a TCP check. Must be an IP/hostname plus port to which a TCP connection is made every `interval`. | | `udp` | `string` | optional | Specifies this is a UDP check. Must be an IP/hostname plus port to which UDP datagrams are sent every `interval`. | | `timeout` | `string` | optional | Specifies a timeout for outgoing connections. Applies to script, HTTP, TCP, UDP, and gRPC checks. Must be a duration string, such as `10s` or `5m`. | | `tlsServerName` | `string` | optional | Specifies an optional string used to set the SNI host when connecting via TLS. | | `tlsSkipVerify` | `boolean` | optional | Specifies if the certificate for an HTTPS check should not be verified. | | `ttl` | `string` | optional | Specifies this is a TTL check. Must be a duration string, such as `10s` or `5m`. | # `service.weights` Configures the weight of the service in terms of its DNS service (SRV) response. | Field | Type | Required | Description | | ----- | ---- | -------- | ----------- | | `passing` | `integer` | required | Weight for the service when its health checks are passing. | | `warning` | `integer` | required | Weight for the service when it has health checks in `warning` status. | # `proxy` Configuration for the sidecar proxy registration with Consul. | Field | Type | Required | Description | | ----- | ---- | -------- | ----------- | | `config` | `object` | optional | Object value that specifies an opaque JSON configuration. The JSON is stored and returned along with the service instance when called from the API. | | [`meshGateway`](#proxy-meshgateway) | `object` | optional | Specifies the mesh gateway configuration for the proxy. | | [`upstreams`](#proxy-upstreams) | `array` | optional | The list of the upstream services that the proxy should create listeners for. | # `proxy.upstreams` The list of the upstream services that the proxy should create listeners for. Each upstream may contain these fields. | Field | Type | Required | Description | | ----- | ---- | -------- | ----------- | | `config` | `object` | optional | Specifies opaque configuration options that will be provided to the proxy instance for the upstream. | | `datacenter` | `string` | optional | Specifies the datacenter to issue the discovery query to. | | `destinationName` | `string` | required | Specifies the name of the upstream service or prepared query to route the service mesh to. | | `destinationNamespace` | `string` | optional | Specifies the namespace containing the upstream service [Consul Enterprise]. | | `destinationPartition` | `string` | optional | Specifies the name of the admin partition containing the upstream service [Consul Enterprise]. | | `destinationType` | `string` | optional | Specifies the type of discovery query the proxy should use for finding service mesh instances. Must be one of `service`, `prepared_query`, or`null`. | | `localBindAddress` | `string` | optional | Specifies the address to bind a local listener to. | | `localBindPort` | `integer` | required | Specifies the port to bind a local listener to. The application will make outbound connections to the upstream from the local port. | | [`meshGateway`](#proxy-upstreams-meshgateway) | `object` | optional | Specifies the mesh gateway configuration for the proxy for this upstream. | ## `proxy.upstreams.meshGateway` Specifies the mesh gateway configuration for the proxy for this upstream. | Field | Type | Required | Description | | ----- | ---- | -------- | ----------- | | `mode` | `string` | required | Specifies how the upstream with a remote destination datacenter gets resolved. Must be one of `none`, `local`, or`remote`. | # `proxy.meshGateway` Specifies the mesh gateway configuration for the proxy. | Field | Type | Required | Description | | ----- | ---- | -------- | ----------- | | `mode` | `string` | required | Specifies how upstreams with a remote destination datacenter get resolved. Must be one of `none`, `local`, or`remote`. |