{"id":42583574,"url":"https://github.com/justtrackio/terraform-aws-ecs-app","last_synced_at":"2026-01-28T22:38:11.293Z","repository":{"id":104469317,"uuid":"585077106","full_name":"justtrackio/terraform-aws-ecs-app","owner":"justtrackio","description":"Terraform module which creates a ecs app","archived":false,"fork":false,"pushed_at":"2026-01-11T08:42:07.000Z","size":264,"stargazers_count":2,"open_issues_count":10,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-11T14:25:11.506Z","etag":null,"topics":["app","aws","ecs","ecs-app"],"latest_commit_sha":null,"homepage":"https://registry.terraform.io/modules/justtrackio/ecs-app/aws","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/justtrackio.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-04T09:02:14.000Z","updated_at":"2025-09-01T10:05:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"a1c2a461-8cdd-42f4-9c04-5de94afed0f2","html_url":"https://github.com/justtrackio/terraform-aws-ecs-app","commit_stats":null,"previous_names":[],"tags_count":69,"template":false,"template_full_name":null,"purl":"pkg:github/justtrackio/terraform-aws-ecs-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justtrackio%2Fterraform-aws-ecs-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justtrackio%2Fterraform-aws-ecs-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justtrackio%2Fterraform-aws-ecs-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justtrackio%2Fterraform-aws-ecs-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/justtrackio","download_url":"https://codeload.github.com/justtrackio/terraform-aws-ecs-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justtrackio%2Fterraform-aws-ecs-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28853716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T15:15:36.453Z","status":"ssl_error","status_checked_at":"2026-01-28T15:15:13.020Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["app","aws","ecs","ecs-app"],"created_at":"2026-01-28T22:38:10.345Z","updated_at":"2026-01-28T22:38:11.286Z","avatar_url":"https://github.com/justtrackio.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# terraform-aws-ecs-app\nTerraform module which creates a ecs app\n\n\u003c!-- BEGIN_TF_DOCS --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.3.0 |\n| \u003ca name=\"requirement_aws\"\u003e\u003c/a\u003e [aws](#requirement\\_aws) | \u003e= 4.67 |\n| \u003ca name=\"requirement_elasticsearch\"\u003e\u003c/a\u003e [elasticsearch](#requirement\\_elasticsearch) | 2.0.7 |\n| \u003ca name=\"requirement_elasticstack\"\u003e\u003c/a\u003e [elasticstack](#requirement\\_elasticstack) | 0.11.11 |\n| \u003ca name=\"requirement_gosoline\"\u003e\u003c/a\u003e [gosoline](#requirement\\_gosoline) | 1.6.0 |\n| \u003ca name=\"requirement_grafana\"\u003e\u003c/a\u003e [grafana](#requirement\\_grafana) | 3.10.0 |\n| \u003ca name=\"requirement_sentry\"\u003e\u003c/a\u003e [sentry](#requirement\\_sentry) | 0.13.2 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_aws\"\u003e\u003c/a\u003e [aws](#provider\\_aws) | \u003e= 4.67 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_alarm_service_resources\"\u003e\u003c/a\u003e [alarm\\_service\\_resources](#module\\_alarm\\_service\\_resources) | justtrackio/alarm-service-resources/aws | 1.2.0 |\n| \u003ca name=\"module_alb_ingress\"\u003e\u003c/a\u003e [alb\\_ingress](#module\\_alb\\_ingress) | cloudposse/alb-ingress/aws | 0.30.0 |\n| \u003ca name=\"module_cloudwatch_label\"\u003e\u003c/a\u003e [cloudwatch\\_label](#module\\_cloudwatch\\_label) | justtrackio/label/null | 0.26.0 |\n| \u003ca name=\"module_container_definition\"\u003e\u003c/a\u003e [container\\_definition](#module\\_container\\_definition) | cloudposse/ecs-container-definition/aws | 0.61.1 |\n| \u003ca name=\"module_container_definition_fluentbit\"\u003e\u003c/a\u003e [container\\_definition\\_fluentbit](#module\\_container\\_definition\\_fluentbit) | cloudposse/ecs-container-definition/aws | 0.61.1 |\n| \u003ca name=\"module_ecr\"\u003e\u003c/a\u003e [ecr](#module\\_ecr) | terraform-aws-modules/ecr/aws | 2.3.1 |\n| \u003ca name=\"module_ecr_label\"\u003e\u003c/a\u003e [ecr\\_label](#module\\_ecr\\_label) | justtrackio/label/null | 0.26.0 |\n| \u003ca name=\"module_ecs_label\"\u003e\u003c/a\u003e [ecs\\_label](#module\\_ecs\\_label) | justtrackio/label/null | 0.26.0 |\n| \u003ca name=\"module_ecs_service_task_customized_autoscaling\"\u003e\u003c/a\u003e [ecs\\_service\\_task\\_customized\\_autoscaling](#module\\_ecs\\_service\\_task\\_customized\\_autoscaling) | justtrackio/ecs-autoscaling/aws | 1.2.0 |\n| \u003ca name=\"module_ecs_service_task_predefined_autoscaling\"\u003e\u003c/a\u003e [ecs\\_service\\_task\\_predefined\\_autoscaling](#module\\_ecs\\_service\\_task\\_predefined\\_autoscaling) | justtrackio/ecs-autoscaling/aws | 1.2.0 |\n| \u003ca name=\"module_ecs_service_task_schedule\"\u003e\u003c/a\u003e [ecs\\_service\\_task\\_schedule](#module\\_ecs\\_service\\_task\\_schedule) | justtrackio/ecs-autoscaling/aws | 1.2.0 |\n| \u003ca name=\"module_iam_policy_ecs_access\"\u003e\u003c/a\u003e [iam\\_policy\\_ecs\\_access](#module\\_iam\\_policy\\_ecs\\_access) | terraform-aws-modules/iam/aws//modules/iam-policy | 5.52.2 |\n| \u003ca name=\"module_monitoring\"\u003e\u003c/a\u003e [monitoring](#module\\_monitoring) | justtrackio/ecs-gosoline-monitoring/aws | 2.7.3 |\n| \u003ca name=\"module_sentry\"\u003e\u003c/a\u003e [sentry](#module\\_sentry) | justtrackio/project/sentry | 1.4.2 |\n| \u003ca name=\"module_service_task\"\u003e\u003c/a\u003e [service\\_task](#module\\_service\\_task) | justtrackio/ecs-alb-service-task/aws | 1.6.0 |\n| \u003ca name=\"module_ssm_label\"\u003e\u003c/a\u003e [ssm\\_label](#module\\_ssm\\_label) | justtrackio/label/null | 0.26.0 |\n| \u003ca name=\"module_this\"\u003e\u003c/a\u003e [this](#module\\_this) | justtrackio/label/null | 0.26.0 |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [aws_cloudwatch_log_group.default](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_group) | resource |\n| [aws_ssm_parameter.container_cpu](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssm_parameter) | resource |\n| [aws_ssm_parameter.container_memory](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssm_parameter) | resource |\n| [aws_ecr_lifecycle_policy_document.lifecycle](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ecr_lifecycle_policy_document) | data source |\n| [aws_ecs_cluster.default](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ecs_cluster) | data source |\n| [aws_iam_policy_document.ecs_access](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_lb.default](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/lb) | data source |\n| [aws_lb_listener.http](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/lb_listener) | data source |\n| [aws_lb_listener.https](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/lb_listener) | data source |\n| [aws_ssm_parameter.container_tag](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ssm_parameter) | data source |\n| [aws_ssm_parameter.grafana_token](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ssm_parameter) | data source |\n| [aws_ssm_parameter.keep_api_key](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ssm_parameter) | data source |\n| [aws_ssm_parameter.sentry_token](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ssm_parameter) | data source |\n| [aws_vpc.default](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/vpc) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_additional_tag_map\"\u003e\u003c/a\u003e [additional\\_tag\\_map](#input\\_additional\\_tag\\_map) | Additional key-value pairs to add to each map in `tags_as_list_of_maps`. Not added to `tags` or `id`.\u003cbr/\u003eThis is for some rare cases where resources want additional configuration of tags\u003cbr/\u003eand therefore take a list of maps with tag key, value, and additional configuration. | `map(string)` | `{}` | no |\n| \u003ca name=\"input_alarm_consumer\"\u003e\u003c/a\u003e [alarm\\_consumer](#input\\_alarm\\_consumer) | This can be used to override alarms for consumers. Keys are names of the consumers. | \u003cpre\u003emap(object({\u003cbr/\u003e    alarm_description      = optional(string)\u003cbr/\u003e    datapoints_to_alarm    = optional(number, 3)\u003cbr/\u003e    evaluation_periods     = optional(number, 3)\u003cbr/\u003e    period                 = optional(number, 60)\u003cbr/\u003e    success_rate_threshold = optional(number, 99)\u003cbr/\u003e    alarm_levels           = optional(list(string), [\"warning\", \"high\"])\u003cbr/\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_alarm_enabled\"\u003e\u003c/a\u003e [alarm\\_enabled](#input\\_alarm\\_enabled) | Defines if alarms should be created | `bool` | `false` | no |\n| \u003ca name=\"input_alarm_gateway\"\u003e\u003c/a\u003e [alarm\\_gateway](#input\\_alarm\\_gateway) | This can be used to override alarms for gateway routes. Keys are names of the gateway route. | \u003cpre\u003emap(object({\u003cbr/\u003e    alarm_description      = optional(string)\u003cbr/\u003e    datapoints_to_alarm    = optional(number, 3)\u003cbr/\u003e    evaluation_periods     = optional(number, 3)\u003cbr/\u003e    period                 = optional(number, 60)\u003cbr/\u003e    success_rate_threshold = optional(number, 99)\u003cbr/\u003e    alarm_levels           = optional(list(string), [\"warning\", \"high\"])\u003cbr/\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_alarm_kinsumer\"\u003e\u003c/a\u003e [alarm\\_kinsumer](#input\\_alarm\\_kinsumer) | This can be used to override alarms for kinsumers. Keys are names of the kinsumers. | \u003cpre\u003emap(object({\u003cbr/\u003e    alarm_description        = optional(string)\u003cbr/\u003e    datapoints_to_alarm      = optional(number, 1)\u003cbr/\u003e    evaluation_periods       = optional(number, 1)\u003cbr/\u003e    period                   = optional(number, 60)\u003cbr/\u003e    threshold_seconds_behind = optional(number, 3600)\u003cbr/\u003e    alarm_levels             = optional(list(string), [\"warning\", \"high\"])\u003cbr/\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_alarm_scheduled\"\u003e\u003c/a\u003e [alarm\\_scheduled](#input\\_alarm\\_scheduled) | This can be used to override scheduled alarm | \u003cpre\u003eobject({\u003cbr/\u003e    alarm_description   = optional(string)\u003cbr/\u003e    datapoints_to_alarm = optional(number, 1)\u003cbr/\u003e    evaluation_periods  = optional(number, 1)\u003cbr/\u003e    period              = optional(number, 60)\u003cbr/\u003e    threshold           = optional(number, 0)\u003cbr/\u003e    alarm_priority      = optional(string, \"high\")\u003cbr/\u003e  })\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_alarm_service_resources_cpu_average\"\u003e\u003c/a\u003e [alarm\\_service\\_resources\\_cpu\\_average](#input\\_alarm\\_service\\_resources\\_cpu\\_average) | Average CPUUtilization alarm specs | \u003cpre\u003eobject({\u003cbr/\u003e    datapoints_to_alarm = optional(number, 6)\u003cbr/\u003e    evaluation_periods  = optional(number, 6)\u003cbr/\u003e    period              = optional(number, 300)\u003cbr/\u003e    threshold           = optional(number, 125)\u003cbr/\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"datapoints_to_alarm\": 6,\u003cbr/\u003e  \"evaluation_periods\": 6,\u003cbr/\u003e  \"period\": 300,\u003cbr/\u003e  \"threshold\": 125\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_alarm_service_resources_cpu_maximum\"\u003e\u003c/a\u003e [alarm\\_service\\_resources\\_cpu\\_maximum](#input\\_alarm\\_service\\_resources\\_cpu\\_maximum) | Maximum CPUUtilization alarm specs | \u003cpre\u003eobject({\u003cbr/\u003e    datapoints_to_alarm = optional(number, 15)\u003cbr/\u003e    evaluation_periods  = optional(number, 15)\u003cbr/\u003e    period              = optional(number, 60)\u003cbr/\u003e    threshold           = optional(number, 150)\u003cbr/\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"datapoints_to_alarm\": 15,\u003cbr/\u003e  \"evaluation_periods\": 15,\u003cbr/\u003e  \"period\": 60,\u003cbr/\u003e  \"threshold\": 150\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_alarm_service_resources_enabled\"\u003e\u003c/a\u003e [alarm\\_service\\_resources\\_enabled](#input\\_alarm\\_service\\_resources\\_enabled) | Defines if resource alarms should be created | `bool` | `false` | no |\n| \u003ca name=\"input_alarm_service_resources_memory_average\"\u003e\u003c/a\u003e [alarm\\_service\\_resources\\_memory\\_average](#input\\_alarm\\_service\\_resources\\_memory\\_average) | Average MemoryUtilization alarm specs | \u003cpre\u003eobject({\u003cbr/\u003e    datapoints_to_alarm = optional(number, 6)\u003cbr/\u003e    evaluation_periods  = optional(number, 6)\u003cbr/\u003e    period              = optional(number, 300)\u003cbr/\u003e    threshold           = optional(number, 125)\u003cbr/\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"datapoints_to_alarm\": 6,\u003cbr/\u003e  \"evaluation_periods\": 6,\u003cbr/\u003e  \"period\": 300,\u003cbr/\u003e  \"threshold\": 125\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_alarm_service_resources_memory_maximum\"\u003e\u003c/a\u003e [alarm\\_service\\_resources\\_memory\\_maximum](#input\\_alarm\\_service\\_resources\\_memory\\_maximum) | Maximum MemoryUtilization alarm specs | \u003cpre\u003eobject({\u003cbr/\u003e    datapoints_to_alarm = optional(number, 15)\u003cbr/\u003e    evaluation_periods  = optional(number, 15)\u003cbr/\u003e    period              = optional(number, 60)\u003cbr/\u003e    threshold           = optional(number, 150)\u003cbr/\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"datapoints_to_alarm\": 15,\u003cbr/\u003e  \"evaluation_periods\": 15,\u003cbr/\u003e  \"period\": 60,\u003cbr/\u003e  \"threshold\": 150\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_alarm_service_resources_priority\"\u003e\u003c/a\u003e [alarm\\_service\\_resources\\_priority](#input\\_alarm\\_service\\_resources\\_priority) | Priority for service resources alarms | `string` | `\"info\"` | no |\n| \u003ca name=\"input_alarm_service_resources_treat_missing_data\"\u003e\u003c/a\u003e [alarm\\_service\\_resources\\_treat\\_missing\\_data](#input\\_alarm\\_service\\_resources\\_treat\\_missing\\_data) | How to treat missing data, defaults to 'breaching' | `string` | `\"breaching\"` | no |\n| \u003ca name=\"input_alb_health_check\"\u003e\u003c/a\u003e [alb\\_health\\_check](#input\\_alb\\_health\\_check) | ALB target group healthy check values | \u003cpre\u003eobject({\u003cbr/\u003e    enabled             = optional(bool, true)\u003cbr/\u003e    healthy_threshold   = optional(number, 2)\u003cbr/\u003e    unhealthy_threshold = optional(number, 2)\u003cbr/\u003e    threshold           = optional(number, 2)\u003cbr/\u003e    interval            = optional(number, 30)\u003cbr/\u003e    timeout             = optional(number, 10)\u003cbr/\u003e    matcher             = optional(string, \"200\")\u003cbr/\u003e    path                = optional(string, \"/health\")\u003cbr/\u003e    port                = optional(string, \"traffic-port\")\u003cbr/\u003e    protocol            = optional(string, \"HTTP\")\u003cbr/\u003e  })\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_alb_name\"\u003e\u003c/a\u003e [alb\\_name](#input\\_alb\\_name) | Name of the alb used to attach the target group | `string` | `\"\"` | no |\n| \u003ca name=\"input_alb_stickiness_enabled\"\u003e\u003c/a\u003e [alb\\_stickiness\\_enabled](#input\\_alb\\_stickiness\\_enabled) | Boolean to enable / disable `stickiness`. Default is `true` | `bool` | `false` | no |\n| \u003ca name=\"input_alb_unauthenticated_hosts\"\u003e\u003c/a\u003e [alb\\_unauthenticated\\_hosts](#input\\_alb\\_unauthenticated\\_hosts) | Unauthenticated hosts to match in Hosts header | `list(string)` | `[]` | no |\n| \u003ca name=\"input_alb_unauthenticated_paths\"\u003e\u003c/a\u003e [alb\\_unauthenticated\\_paths](#input\\_alb\\_unauthenticated\\_paths) | Unauthenticated path pattern to match (a maximum of 1 can be defined) | `list(string)` | \u003cpre\u003e[\u003cbr/\u003e  \"*\"\u003cbr/\u003e]\u003c/pre\u003e | no |\n| \u003ca name=\"input_alb_unauthenticated_priority\"\u003e\u003c/a\u003e [alb\\_unauthenticated\\_priority](#input\\_alb\\_unauthenticated\\_priority) | The priority for the rules without authentication, between 1 and 50000 (1 being highest priority). Must be different from `authenticated_priority` since a listener can't have multiple rules with the same priority | `number` | `100` | no |\n| \u003ca name=\"input_app_image_tag\"\u003e\u003c/a\u003e [app\\_image\\_tag](#input\\_app\\_image\\_tag) | The default container image to use in container definition | `string` | `null` | no |\n| \u003ca name=\"input_attributes\"\u003e\u003c/a\u003e [attributes](#input\\_attributes) | ID element. Additional attributes (e.g. `workers` or `cluster`) to add to `id`,\u003cbr/\u003ein the order they appear in the list. New attributes are appended to the\u003cbr/\u003eend of the list. The elements of the list are joined by the `delimiter`\u003cbr/\u003eand treated as a single ID element. | `list(string)` | `[]` | no |\n| \u003ca name=\"input_autoscaling_customized_metric_name\"\u003e\u003c/a\u003e [autoscaling\\_customized\\_metric\\_name](#input\\_autoscaling\\_customized\\_metric\\_name) | The name of the metric | `string` | `\"\"` | no |\n| \u003ca name=\"input_autoscaling_customized_statistic\"\u003e\u003c/a\u003e [autoscaling\\_customized\\_statistic](#input\\_autoscaling\\_customized\\_statistic) | The name of the metric | `string` | `\"Average\"` | no |\n| \u003ca name=\"input_autoscaling_customized_unit\"\u003e\u003c/a\u003e [autoscaling\\_customized\\_unit](#input\\_autoscaling\\_customized\\_unit) | The name of the metric | `string` | `\"Count\"` | no |\n| \u003ca name=\"input_autoscaling_enabled\"\u003e\u003c/a\u003e [autoscaling\\_enabled](#input\\_autoscaling\\_enabled) | Defines if autoscaling should be enabled | `bool` | `false` | no |\n| \u003ca name=\"input_autoscaling_max_capacity\"\u003e\u003c/a\u003e [autoscaling\\_max\\_capacity](#input\\_autoscaling\\_max\\_capacity) | Maximum number of running instances of a Service | `number` | `200` | no |\n| \u003ca name=\"input_autoscaling_min_capacity\"\u003e\u003c/a\u003e [autoscaling\\_min\\_capacity](#input\\_autoscaling\\_min\\_capacity) | Minimum number of running instances of a Service | `number` | `1` | no |\n| \u003ca name=\"input_autoscaling_predefined_metric_type\"\u003e\u003c/a\u003e [autoscaling\\_predefined\\_metric\\_type](#input\\_autoscaling\\_predefined\\_metric\\_type) | The metric type | `string` | `null` | no |\n| \u003ca name=\"input_autoscaling_scale_in_cooldown\"\u003e\u003c/a\u003e [autoscaling\\_scale\\_in\\_cooldown](#input\\_autoscaling\\_scale\\_in\\_cooldown) | The amount of time, in seconds, after a scale in activity completes before another scale in activity can start | `number` | `60` | no |\n| \u003ca name=\"input_autoscaling_scale_out_cooldown\"\u003e\u003c/a\u003e [autoscaling\\_scale\\_out\\_cooldown](#input\\_autoscaling\\_scale\\_out\\_cooldown) | The amount of time, in seconds, after a scale out activity completes before another scale out activity can start | `number` | `60` | no |\n| \u003ca name=\"input_autoscaling_schedule\"\u003e\u003c/a\u003e [autoscaling\\_schedule](#input\\_autoscaling\\_schedule) | Provides an Application AutoScaling ScheduledAction resource | \u003cpre\u003elist(object({\u003cbr/\u003e    schedule     = string\u003cbr/\u003e    min_capacity = number\u003cbr/\u003e    max_capacity = number\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_autoscaling_target_value\"\u003e\u003c/a\u003e [autoscaling\\_target\\_value](#input\\_autoscaling\\_target\\_value) | The target value for the metric | `number` | `null` | no |\n| \u003ca name=\"input_aws_account_id\"\u003e\u003c/a\u003e [aws\\_account\\_id](#input\\_aws\\_account\\_id) | AWS account id | `string` | `null` | no |\n| \u003ca name=\"input_aws_region\"\u003e\u003c/a\u003e [aws\\_region](#input\\_aws\\_region) | AWS region | `string` | `null` | no |\n| \u003ca name=\"input_circuit_breaker_deployment_enabled\"\u003e\u003c/a\u003e [circuit\\_breaker\\_deployment\\_enabled](#input\\_circuit\\_breaker\\_deployment\\_enabled) | If `true`, enable the deployment circuit breaker logic for the service | `bool` | `false` | no |\n| \u003ca name=\"input_circuit_breaker_rollback_enabled\"\u003e\u003c/a\u003e [circuit\\_breaker\\_rollback\\_enabled](#input\\_circuit\\_breaker\\_rollback\\_enabled) | If `true`, Amazon ECS will roll back the service if a service deployment fails | `bool` | `false` | no |\n| \u003ca name=\"input_cloudwatch_log_group_enabled\"\u003e\u003c/a\u003e [cloudwatch\\_log\\_group\\_enabled](#input\\_cloudwatch\\_log\\_group\\_enabled) | A boolean to disable cloudwatch log group creation | `bool` | `true` | no |\n| \u003ca name=\"input_container_cpu\"\u003e\u003c/a\u003e [container\\_cpu](#input\\_container\\_cpu) | The vCPU setting to control cpu limits of container. (If FARGATE launch type is used below, this must be a supported vCPU size from the table here: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-cpu-memory-error.html) | `number` | `null` | no |\n| \u003ca name=\"input_container_map_environment\"\u003e\u003c/a\u003e [container\\_map\\_environment](#input\\_container\\_map\\_environment) | The environment variables to pass to the container. This is a map of string: {key: value}. `environment` overrides `map_environment` | `map(string)` | `null` | no |\n| \u003ca name=\"input_container_map_secrets\"\u003e\u003c/a\u003e [container\\_map\\_secrets](#input\\_container\\_map\\_secrets) | The secrets variables to pass to the container. This is a map of string: {key: value}. map\\_secrets overrides secrets | `map(string)` | `null` | no |\n| \u003ca name=\"input_container_memory\"\u003e\u003c/a\u003e [container\\_memory](#input\\_container\\_memory) | The amount of RAM to allow container to use in MB. (If FARGATE launch type is used below, this must be a supported Memory size from the table here: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-cpu-memory-error.html) | `number` | `null` | no |\n| \u003ca name=\"input_container_memory_reservation\"\u003e\u003c/a\u003e [container\\_memory\\_reservation](#input\\_container\\_memory\\_reservation) | The amount of RAM (Soft Limit) to allow container to use in MB. This value must be less than `container_memory` if set | `number` | `null` | no |\n| \u003ca name=\"input_container_start_timeout\"\u003e\u003c/a\u003e [container\\_start\\_timeout](#input\\_container\\_start\\_timeout) | Time duration (in seconds) to wait before giving up on resolving dependencies for a container | `number` | `null` | no |\n| \u003ca name=\"input_container_stop_timeout\"\u003e\u003c/a\u003e [container\\_stop\\_timeout](#input\\_container\\_stop\\_timeout) | Time duration (in seconds) to wait before the container is forcefully killed if it doesn't exit normally on its own | `number` | `null` | no |\n| \u003ca name=\"input_context\"\u003e\u003c/a\u003e [context](#input\\_context) | Single object for setting entire context at once.\u003cbr/\u003eSee description of individual variables for details.\u003cbr/\u003eLeave string and numeric variables as `null` to use default value.\u003cbr/\u003eIndividual variable settings (non-null) override settings in context object,\u003cbr/\u003eexcept for attributes, tags, and additional\\_tag\\_map, which are merged. | `any` | \u003cpre\u003e{\u003cbr/\u003e  \"additional_tag_map\": {},\u003cbr/\u003e  \"attributes\": [],\u003cbr/\u003e  \"delimiter\": null,\u003cbr/\u003e  \"descriptor_formats\": {},\u003cbr/\u003e  \"enabled\": true,\u003cbr/\u003e  \"environment\": null,\u003cbr/\u003e  \"id_length_limit\": null,\u003cbr/\u003e  \"label_key_case\": null,\u003cbr/\u003e  \"label_order\": [],\u003cbr/\u003e  \"label_value_case\": null,\u003cbr/\u003e  \"labels_as_tags\": [\u003cbr/\u003e    \"unset\"\u003cbr/\u003e  ],\u003cbr/\u003e  \"name\": null,\u003cbr/\u003e  \"namespace\": null,\u003cbr/\u003e  \"regex_replace_chars\": null,\u003cbr/\u003e  \"stage\": null,\u003cbr/\u003e  \"tags\": {},\u003cbr/\u003e  \"tenant\": null\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_delimiter\"\u003e\u003c/a\u003e [delimiter](#input\\_delimiter) | Delimiter to be used between ID elements.\u003cbr/\u003eDefaults to `-` (hyphen). Set to `\"\"` to use no delimiter at all. | `string` | `null` | no |\n| \u003ca name=\"input_deployment_maximum_percent\"\u003e\u003c/a\u003e [deployment\\_maximum\\_percent](#input\\_deployment\\_maximum\\_percent) | The upper limit of the number of tasks (as a percentage of `desired_count`) that can be running in a service during a deployment | `number` | `200` | no |\n| \u003ca name=\"input_deployment_minimum_healthy_percent\"\u003e\u003c/a\u003e [deployment\\_minimum\\_healthy\\_percent](#input\\_deployment\\_minimum\\_healthy\\_percent) | The lower limit (as a percentage of `desired_count`) of the number of tasks that must remain running and healthy in a service during a deployment | `number` | `100` | no |\n| \u003ca name=\"input_descriptor_formats\"\u003e\u003c/a\u003e [descriptor\\_formats](#input\\_descriptor\\_formats) | Describe additional descriptors to be output in the `descriptors` output map.\u003cbr/\u003eMap of maps. Keys are names of descriptors. Values are maps of the form\u003cbr/\u003e`{\u003cbr/\u003e   format = string\u003cbr/\u003e   labels = list(string)\u003cbr/\u003e}`\u003cbr/\u003e(Type is `any` so the map values can later be enhanced to provide additional options.)\u003cbr/\u003e`format` is a Terraform format string to be passed to the `format()` function.\u003cbr/\u003e`labels` is a list of labels, in order, to pass to `format()` function.\u003cbr/\u003eLabel values will be normalized before being passed to `format()` so they will be\u003cbr/\u003eidentical to how they appear in `id`.\u003cbr/\u003eDefault is `{}` (`descriptors` output will be empty). | `any` | `{}` | no |\n| \u003ca name=\"input_desired_count\"\u003e\u003c/a\u003e [desired\\_count](#input\\_desired\\_count) | The desired number of tasks to start with. Set this to 0 if using DAEMON Service type. (FARGATE does not suppoert DAEMON Service type) | `number` | `1` | no |\n| \u003ca name=\"input_docker_labels\"\u003e\u003c/a\u003e [docker\\_labels](#input\\_docker\\_labels) | The configuration options to send to the `docker_labels` | `map(string)` | `null` | no |\n| \u003ca name=\"input_domain\"\u003e\u003c/a\u003e [domain](#input\\_domain) | The default domain | `string` | n/a | yes |\n| \u003ca name=\"input_ecr_repository_lifecycle_policy\"\u003e\u003c/a\u003e [ecr\\_repository\\_lifecycle\\_policy](#input\\_ecr\\_repository\\_lifecycle\\_policy) | The policy document. This is a JSON formatted string. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs | `string` | `null` | no |\n| \u003ca name=\"input_ecs_access_policy_enabled\"\u003e\u003c/a\u003e [ecs\\_access\\_policy\\_enabled](#input\\_ecs\\_access\\_policy\\_enabled) | Defines if the ecs tasks should have the ecs access policy | `bool` | `false` | no |\n| \u003ca name=\"input_elasticsearch_data_stream_enabled\"\u003e\u003c/a\u003e [elasticsearch\\_data\\_stream\\_enabled](#input\\_elasticsearch\\_data\\_stream\\_enabled) | Defines whether there will be a elasticsearch data\\_stream, index template, index lifecycle policy created | `bool` | `true` | no |\n| \u003ca name=\"input_elasticsearch_host\"\u003e\u003c/a\u003e [elasticsearch\\_host](#input\\_elasticsearch\\_host) | Defines the elasticsearch host to query for logs | `string` | `null` | no |\n| \u003ca name=\"input_elasticsearch_index_template\"\u003e\u003c/a\u003e [elasticsearch\\_index\\_template](#input\\_elasticsearch\\_index\\_template) | This defines the properties used within the index template (Only used if create\\_elasticsearch\\_data\\_stream is true) | \u003cpre\u003eobject({\u003cbr/\u003e    additional_fields  = map(any)\u003cbr/\u003e    name               = string\u003cbr/\u003e    priority           = number\u003cbr/\u003e    node_name          = string\u003cbr/\u003e    number_of_shards   = number\u003cbr/\u003e    number_of_replicas = number\u003cbr/\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"additional_fields\": {},\u003cbr/\u003e  \"name\": \"\",\u003cbr/\u003e  \"node_name\": \"*\",\u003cbr/\u003e  \"number_of_replicas\": 1,\u003cbr/\u003e  \"number_of_shards\": 1,\u003cbr/\u003e  \"priority\": 250\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_elasticsearch_lifecycle_policy\"\u003e\u003c/a\u003e [elasticsearch\\_lifecycle\\_policy](#input\\_elasticsearch\\_lifecycle\\_policy) | This defines the properties used within the index lifecycle management policy (Only used if create\\_elasticsearch\\_data\\_stream is true) | \u003cpre\u003eobject({\u003cbr/\u003e    delete_phase_min_age             = string\u003cbr/\u003e    hot_phase_max_primary_shard_size = string\u003cbr/\u003e    hot_phase_max_age                = optional(string)\u003cbr/\u003e    warm_phase_min_age               = string\u003cbr/\u003e    warm_phase_number_of_replicas    = number\u003cbr/\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"delete_phase_min_age\": \"28d\",\u003cbr/\u003e  \"hot_phase_max_primary_shard_size\": \"10gb\",\u003cbr/\u003e  \"warm_phase_min_age\": \"0d\",\u003cbr/\u003e  \"warm_phase_number_of_replicas\": 0\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_enabled\"\u003e\u003c/a\u003e [enabled](#input\\_enabled) | Set to false to prevent the module from creating any resources | `bool` | `null` | no |\n| \u003ca name=\"input_environment\"\u003e\u003c/a\u003e [environment](#input\\_environment) | ID element. Usually used for region e.g. 'uw2', 'us-west-2', OR role 'prod', 'staging', 'dev', 'UAT' | `string` | `null` | no |\n| \u003ca name=\"input_exec_enabled\"\u003e\u003c/a\u003e [exec\\_enabled](#input\\_exec\\_enabled) | Specifies whether to enable Amazon ECS Exec for the tasks within the service | `bool` | `true` | no |\n| \u003ca name=\"input_gosoline_metadata\"\u003e\u003c/a\u003e [gosoline\\_metadata](#input\\_gosoline\\_metadata) | Define custom metadata for the gosoline provider | \u003cpre\u003eobject({\u003cbr/\u003e    domain    = optional(string),\u003cbr/\u003e    use_https = optional(string),\u003cbr/\u003e    port      = optional(string)\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_gosoline_name_patterns\"\u003e\u003c/a\u003e [gosoline\\_name\\_patterns](#input\\_gosoline\\_name\\_patterns) | Define custom name patters for the gosoline provider | \u003cpre\u003eobject({\u003cbr/\u003e    hostname                         = optional(string),\u003cbr/\u003e    cloudwatch_namespace             = optional(string),\u003cbr/\u003e    ecs_cluster                      = optional(string),\u003cbr/\u003e    ecs_service                      = optional(string),\u003cbr/\u003e    grafana_cloudwatch_datasource    = optional(string),\u003cbr/\u003e    grafana_elasticsearch_datasource = optional(string)\u003cbr/\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"cloudwatch_namespace\": \"{env}/{group}/{app}\",\u003cbr/\u003e  \"ecs_cluster\": \"{env}\",\u003cbr/\u003e  \"ecs_service\": \"{group}-{app}\",\u003cbr/\u003e  \"grafana_cloudwatch_datasource\": \"cloudwatch-{family}\",\u003cbr/\u003e  \"grafana_elasticsearch_datasource\": \"elasticsearch-{env}-{family}-{group}-{app}\",\u003cbr/\u003e  \"hostname\": \"{scheme}://{app}.{group}.{env}.{metadata_domain}:{port}\"\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_grafana_dashboard_url\"\u003e\u003c/a\u003e [grafana\\_dashboard\\_url](#input\\_grafana\\_dashboard\\_url) | Url of the grafana dashboard | `string` | `null` | no |\n| \u003ca name=\"input_health_check_grace_period_seconds\"\u003e\u003c/a\u003e [health\\_check\\_grace\\_period\\_seconds](#input\\_health\\_check\\_grace\\_period\\_seconds) | Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 7200. Only valid for services configured to use load balancers | `number` | `0` | no |\n| \u003ca name=\"input_healthcheck\"\u003e\u003c/a\u003e [healthcheck](#input\\_healthcheck) | A map containing command (string), timeout, interval (duration in seconds), retries (1-10, number of times to retry before marking container unhealthy), and startPeriod (0-300, optional grace period to wait, in seconds, before failed healthchecks count toward retries) | \u003cpre\u003eobject({\u003cbr/\u003e    command     = list(string)\u003cbr/\u003e    retries     = number\u003cbr/\u003e    timeout     = number\u003cbr/\u003e    interval    = number\u003cbr/\u003e    startPeriod = number\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_id_length_limit\"\u003e\u003c/a\u003e [id\\_length\\_limit](#input\\_id\\_length\\_limit) | Limit `id` to this many characters (minimum 6).\u003cbr/\u003eSet to `0` for unlimited length.\u003cbr/\u003eSet to `null` for keep the existing setting, which defaults to `0`.\u003cbr/\u003eDoes not affect `id_full`. | `number` | `null` | no |\n| \u003ca name=\"input_ignore_changes_desired_count\"\u003e\u003c/a\u003e [ignore\\_changes\\_desired\\_count](#input\\_ignore\\_changes\\_desired\\_count) | Whether to ignore changes for desired count in the ECS service | `bool` | `true` | no |\n| \u003ca name=\"input_ignore_changes_task_definition\"\u003e\u003c/a\u003e [ignore\\_changes\\_task\\_definition](#input\\_ignore\\_changes\\_task\\_definition) | Ignore changes (like environment variables) to the ECS task definition | `bool` | `false` | no |\n| \u003ca name=\"input_kibana_data_view_enabled\"\u003e\u003c/a\u003e [kibana\\_data\\_view\\_enabled](#input\\_kibana\\_data\\_view\\_enabled) | Defines whether there will be a kibana data view | `bool` | `true` | no |\n| \u003ca name=\"input_kibana_host\"\u003e\u003c/a\u003e [kibana\\_host](#input\\_kibana\\_host) | Defines the kibana host | `string` | `null` | no |\n| \u003ca name=\"input_kibana_space_id\"\u003e\u003c/a\u003e [kibana\\_space\\_id](#input\\_kibana\\_space\\_id) | Space identifier to place the kibana data view into | `string` | `null` | no |\n| \u003ca name=\"input_label_key_case\"\u003e\u003c/a\u003e [label\\_key\\_case](#input\\_label\\_key\\_case) | Controls the letter case of the `tags` keys (label names) for tags generated by this module.\u003cbr/\u003eDoes not affect keys of tags passed in via the `tags` input.\u003cbr/\u003ePossible values: `lower`, `title`, `upper`.\u003cbr/\u003eDefault value: `title`. | `string` | `null` | no |\n| \u003ca name=\"input_label_order\"\u003e\u003c/a\u003e [label\\_order](#input\\_label\\_order) | The order in which the labels (ID elements) appear in the `id`.\u003cbr/\u003eDefaults to [\"namespace\", \"environment\", \"stage\", \"name\", \"attributes\"].\u003cbr/\u003eYou can omit any of the 6 labels (\"tenant\" is the 6th), but at least one must be present. | `list(string)` | `null` | no |\n| \u003ca name=\"input_label_orders\"\u003e\u003c/a\u003e [label\\_orders](#input\\_label\\_orders) | Overrides the `labels_order` for the different labels to modify ID elements appear in the `id` | \u003cpre\u003eobject({\u003cbr/\u003e    cloudwatch    = optional(list(string), [\"environment\", \"stage\", \"name\"]),\u003cbr/\u003e    ecr           = optional(list(string)),\u003cbr/\u003e    ecs           = optional(list(string), [\"stage\", \"name\"]),\u003cbr/\u003e    ec2           = optional(list(string), [\"environment\", \"stage\", \"name\"]),\u003cbr/\u003e    iam           = optional(list(string)),\u003cbr/\u003e    sentry        = optional(list(string), [\"stage\", \"name\"]),\u003cbr/\u003e    ssm           = optional(list(string)),\u003cbr/\u003e    vpc           = optional(list(string)),\u003cbr/\u003e    elasticsearch = optional(list(string), [\"environment\", \"namespace\", \"stage\", \"name\"])\u003cbr/\u003e    kibana        = optional(list(string))\u003cbr/\u003e  })\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_label_value_case\"\u003e\u003c/a\u003e [label\\_value\\_case](#input\\_label\\_value\\_case) | Controls the letter case of ID elements (labels) as included in `id`,\u003cbr/\u003eset as tag values, and output by this module individually.\u003cbr/\u003eDoes not affect values of tags passed in via the `tags` input.\u003cbr/\u003ePossible values: `lower`, `title`, `upper` and `none` (no transformation).\u003cbr/\u003eSet this to `title` and set `delimiter` to `\"\"` to yield Pascal Case IDs.\u003cbr/\u003eDefault value: `lower`. | `string` | `null` | no |\n| \u003ca name=\"input_labels_as_tags\"\u003e\u003c/a\u003e [labels\\_as\\_tags](#input\\_labels\\_as\\_tags) | Set of labels (ID elements) to include as tags in the `tags` output.\u003cbr/\u003eDefault is to include all labels.\u003cbr/\u003eTags with empty values will not be included in the `tags` output.\u003cbr/\u003eSet to `[]` to suppress all generated tags.\u003cbr/\u003e**Notes:**\u003cbr/\u003e  The value of the `name` tag, if included, will be the `id`, not the `name`.\u003cbr/\u003e  Unlike other `null-label` inputs, the initial setting of `labels_as_tags` cannot be\u003cbr/\u003e  changed in later chained modules. Attempts to change it will be silently ignored. | `set(string)` | \u003cpre\u003e[\u003cbr/\u003e  \"default\"\u003cbr/\u003e]\u003c/pre\u003e | no |\n| \u003ca name=\"input_launch_type\"\u003e\u003c/a\u003e [launch\\_type](#input\\_launch\\_type) | The ECS launch type (valid options: FARGATE or EC2) | `string` | `\"EC2\"` | no |\n| \u003ca name=\"input_log_driver\"\u003e\u003c/a\u003e [log\\_driver](#input\\_log\\_driver) | The log driver to use for the container. If using Fargate launch type, only supported value is awslogs | `string` | `\"awsfirelens\"` | no |\n| \u003ca name=\"input_log_retention_in_days\"\u003e\u003c/a\u003e [log\\_retention\\_in\\_days](#input\\_log\\_retention\\_in\\_days) | The number of days to retain logs for the log group | `number` | `1` | no |\n| \u003ca name=\"input_log_router_container_cpu\"\u003e\u003c/a\u003e [log\\_router\\_container\\_cpu](#input\\_log\\_router\\_container\\_cpu) | The log router cpu reservation for the ECS task definition | `string` | `30` | no |\n| \u003ca name=\"input_log_router_container_map_environment\"\u003e\u003c/a\u003e [log\\_router\\_container\\_map\\_environment](#input\\_log\\_router\\_container\\_map\\_environment) | The environment variables to pass to the log router container. This is a map of string: {key: value}. `environment` overrides `map_environment` | `map(string)` | `null` | no |\n| \u003ca name=\"input_log_router_container_memory_reservation\"\u003e\u003c/a\u003e [log\\_router\\_container\\_memory\\_reservation](#input\\_log\\_router\\_container\\_memory\\_reservation) | The log router memory reservation for the ECS task definition | `string` | `64` | no |\n| \u003ca name=\"input_log_router_essential\"\u003e\u003c/a\u003e [log\\_router\\_essential](#input\\_log\\_router\\_essential) | Determines whether all other containers in a task are stopped, if this container fails or stops for any reason. Due to how Terraform type casts booleans in json it is required to double quote this value | `bool` | `false` | no |\n| \u003ca name=\"input_log_router_image_repository\"\u003e\u003c/a\u003e [log\\_router\\_image\\_repository](#input\\_log\\_router\\_image\\_repository) | Container registry repository url | `string` | n/a | yes |\n| \u003ca name=\"input_log_router_image_tag\"\u003e\u003c/a\u003e [log\\_router\\_image\\_tag](#input\\_log\\_router\\_image\\_tag) | The default container image to use in container definition | `string` | `\"stable-3.2.9\"` | no |\n| \u003ca name=\"input_log_router_options\"\u003e\u003c/a\u003e [log\\_router\\_options](#input\\_log\\_router\\_options) | The log router options to use | `map(string)` | \u003cpre\u003e{\u003cbr/\u003e  \"config-file-type\": \"file\",\u003cbr/\u003e  \"config-file-value\": \"/fluent-bit/etc/extra.conf\"\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_log_router_stop_timeout\"\u003e\u003c/a\u003e [log\\_router\\_stop\\_timeout](#input\\_log\\_router\\_stop\\_timeout) | Time duration (in seconds) to wait before the container is forcefully killed if it doesn't exit normally on its own | `number` | `60` | no |\n| \u003ca name=\"input_log_router_type\"\u003e\u003c/a\u003e [log\\_router\\_type](#input\\_log\\_router\\_type) | The log router type to use | `string` | `\"fluentbit\"` | no |\n| \u003ca name=\"input_metric_based_autoscaling_ignore_changes_min_max_capacity\"\u003e\u003c/a\u003e [metric\\_based\\_autoscaling\\_ignore\\_changes\\_min\\_max\\_capacity](#input\\_metric\\_based\\_autoscaling\\_ignore\\_changes\\_min\\_max\\_capacity) | Whether or not to ignore min\\_capacity/max\\_capacity changes on the aws\\_appautoscaling\\_target of the metric based autoscaling module | `bool` | `false` | no |\n| \u003ca name=\"input_metric_calculator_enabled\"\u003e\u003c/a\u003e [metric\\_calculator\\_enabled](#input\\_metric\\_calculator\\_enabled) | Whether to use the metrics produced by the metric calculator for autoscaling (gosoline feature), see: https://github.com/justtrackio/gosoline | `bool` | `null` | no |\n| \u003ca name=\"input_metric_enabled\"\u003e\u003c/a\u003e [metric\\_enabled](#input\\_metric\\_enabled) | Defines if metrics should be written | `bool` | n/a | yes |\n| \u003ca name=\"input_monitoring_enabled\"\u003e\u003c/a\u003e [monitoring\\_enabled](#input\\_monitoring\\_enabled) | Defines if the monitoring module should be created | `bool` | `true` | no |\n| \u003ca name=\"input_name\"\u003e\u003c/a\u003e [name](#input\\_name) | ID element. Usually the component or solution name, e.g. 'app' or 'jenkins'.\u003cbr/\u003eThis is the only ID element not also included as a `tag`.\u003cbr/\u003eThe \"name\" tag is set to the full `id` string. There is no tag with the value of the `name` input. | `string` | `null` | no |\n| \u003ca name=\"input_namespace\"\u003e\u003c/a\u003e [namespace](#input\\_namespace) | ID element. Usually an abbreviation of your organization name, e.g. 'eg' or 'cp', to help ensure generated IDs are globally unique | `string` | `null` | no |\n| \u003ca name=\"input_network_mode\"\u003e\u003c/a\u003e [network\\_mode](#input\\_network\\_mode) | The network mode to use for the task. This is required to be `awsvpc` for `FARGATE` `launch_type` or `null` for `EC2` `launch_type` | `string` | `null` | no |\n| \u003ca name=\"input_ordered_placement_strategy\"\u003e\u003c/a\u003e [ordered\\_placement\\_strategy](#input\\_ordered\\_placement\\_strategy) | Service level strategy rules that are taken into consideration during task placement.\u003cbr/\u003eList from top to bottom in order of precedence. The maximum number of ordered\\_placement\\_strategy blocks is 5.\u003cbr/\u003eSee [`ordered_placement_strategy`](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service#ordered_placement_strategy) | \u003cpre\u003elist(object({\u003cbr/\u003e    type  = string\u003cbr/\u003e    field = string\u003cbr/\u003e  }))\u003c/pre\u003e | \u003cpre\u003e[\u003cbr/\u003e  {\u003cbr/\u003e    \"field\": \"instanceId\",\u003cbr/\u003e    \"type\": \"spread\"\u003cbr/\u003e  }\u003cbr/\u003e]\u003c/pre\u003e | no |\n| \u003ca name=\"input_organizational_unit\"\u003e\u003c/a\u003e [organizational\\_unit](#input\\_organizational\\_unit) | Usually used to indicate the AWS organizational unit, e.g. 'prod', 'sdlc' | `string` | `null` | no |\n| \u003ca name=\"input_port_gateway\"\u003e\u003c/a\u003e [port\\_gateway](#input\\_port\\_gateway) | Define the gateway port | `number` | `8088` | no |\n| \u003ca name=\"input_port_health\"\u003e\u003c/a\u003e [port\\_health](#input\\_port\\_health) | Define the health port | `number` | `8090` | no |\n| \u003ca name=\"input_port_mappings\"\u003e\u003c/a\u003e [port\\_mappings](#input\\_port\\_mappings) | The port mappings to configure for the container. This is a list of maps. Each map should contain \"containerPort\", \"hostPort\", and \"protocol\", where \"protocol\" is one of \"tcp\" or \"udp\". If using containers in a task with the awsvpc or host network mode, the hostPort can either be left blank or set to the same value as the containerPort | \u003cpre\u003elist(object({\u003cbr/\u003e    containerPort = number\u003cbr/\u003e    hostPort      = number\u003cbr/\u003e    protocol      = string\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_port_metadata\"\u003e\u003c/a\u003e [port\\_metadata](#input\\_port\\_metadata) | Define the metadata port | `number` | `8070` | no |\n| \u003ca name=\"input_propagate_tags\"\u003e\u003c/a\u003e [propagate\\_tags](#input\\_propagate\\_tags) | Specifies whether to propagate the tags from the task definition or the service to the tasks. The valid values are SERVICE and TASK\\_DEFINITION | `string` | `null` | no |\n| \u003ca name=\"input_regex_replace_chars\"\u003e\u003c/a\u003e [regex\\_replace\\_chars](#input\\_regex\\_replace\\_chars) | Terraform regular expression (regex) string.\u003cbr/\u003eCharacters matching the regex will be removed from the ID elements.\u003cbr/\u003eIf not set, `\"/[^a-zA-Z0-9-]/\"` is used to remove all characters other than hyphens, letters and digits. | `string` | `null` | no |\n| \u003ca name=\"input_scheduled_autoscaling_ignore_changes_min_max_capacity\"\u003e\u003c/a\u003e [scheduled\\_autoscaling\\_ignore\\_changes\\_min\\_max\\_capacity](#input\\_scheduled\\_autoscaling\\_ignore\\_changes\\_min\\_max\\_capacity) | Whether or not to ignore min\\_capacity/max\\_capacity changes on the aws\\_appautoscaling\\_target of the scheduled autoscaling module | `bool` | `true` | no |\n| \u003ca name=\"input_sentry_alarm_action_match\"\u003e\u003c/a\u003e [sentry\\_alarm\\_action\\_match](#input\\_sentry\\_alarm\\_action\\_match) | Trigger actions when an event is captured by Sentry and `any` or `all` of the specified conditions happen. | `string` | `\"any\"` | no |\n| \u003ca name=\"input_sentry_alarm_actions\"\u003e\u003c/a\u003e [sentry\\_alarm\\_actions](#input\\_sentry\\_alarm\\_actions) | List of actions. In JSON string format. | `string` | `\"[]\"` | no |\n| \u003ca name=\"input_sentry_alarm_conditions\"\u003e\u003c/a\u003e [sentry\\_alarm\\_conditions](#input\\_sentry\\_alarm\\_conditions) | List of conditions. In JSON string format. | `string` | `\"[]\"` | no |\n| \u003ca name=\"input_sentry_alarm_filter_match\"\u003e\u003c/a\u003e [sentry\\_alarm\\_filter\\_match](#input\\_sentry\\_alarm\\_filter\\_match) | A string determining which filters need to be true before any actions take place. Required when a value is provided for filters. | `string` | `\"all\"` | no |\n| \u003ca name=\"input_sentry_alarm_filters\"\u003e\u003c/a\u003e [sentry\\_alarm\\_filters](#input\\_sentry\\_alarm\\_filters) | A list of filters that determine if a rule fires after the necessary conditions have been met. In JSON string format. | `string` | `null` | no |\n| \u003ca name=\"input_sentry_alarm_frequency\"\u003e\u003c/a\u003e [sentry\\_alarm\\_frequency](#input\\_sentry\\_alarm\\_frequency) | Perform actions at most once every X minutes for this issue. | `number` | `5` | no |\n| \u003ca name=\"input_sentry_dsn\"\u003e\u003c/a\u003e [sentry\\_dsn](#input\\_sentry\\_dsn) | Define a custom sentry dsn if `sentry_enabled` is set to `false` | `string` | `null` | no |\n| \u003ca name=\"input_sentry_enabled\"\u003e\u003c/a\u003e [sentry\\_enabled](#input\\_sentry\\_enabled) | Set to false to prevent the module from creating any resources for sentry | `bool` | `true` | no |\n| \u003ca name=\"input_service_placement_constraints\"\u003e\u003c/a\u003e [service\\_placement\\_constraints](#input\\_service\\_placement\\_constraints) | The rules that are taken into consideration during task placement. Maximum number of placement\\_constraints is 10. See [`placement_constraints`](https://www.terraform.io/docs/providers/aws/r/ecs_service.html#placement_constraints-1) docs | \u003cpre\u003elist(object({\u003cbr/\u003e    type       = string\u003cbr/\u003e    expression = string\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_service_registries\"\u003e\u003c/a\u003e [service\\_registries](#input\\_service\\_registries) | Zero or one service discovery registries for the service.\u003cbr/\u003eThe currently supported service registry is Amazon Route 53 Auto Naming Service - `aws_service_discovery_service`;\u003cbr/\u003esee `service_registries` docs https://www.terraform.io/docs/providers/aws/r/ecs_service.html#service_registries-1\"\u003cbr/\u003eService registry is object with required key `registry_arn = string` and optional keys\u003cbr/\u003e  `port           = number`\u003cbr/\u003e  `container_name = string`\u003cbr/\u003e  `container_port = number` | `list(any)` | `[]` | no |\n| \u003ca name=\"input_stage\"\u003e\u003c/a\u003e [stage](#input\\_stage) | ID element. Usually used to indicate role, e.g. 'prod', 'staging', 'source', 'build', 'test', 'deploy', 'release' | `string` | `null` | no |\n| \u003ca name=\"input_tags\"\u003e\u003c/a\u003e [tags](#input\\_tags) | Additional tags (e.g. `{'BusinessUnit': 'XYZ'}`).\u003cbr/\u003eNeither the tag keys nor the tag values will be modified by this module. | `map(string)` | `{}` | no |\n| \u003ca name=\"input_target_group_arn\"\u003e\u003c/a\u003e [target\\_group\\_arn](#input\\_target\\_group\\_arn) | ARN of the target group to register the task into. Only works when alb\\_name is not specified. Can be used for services that are made available via a vpc endpoint | `string` | `\"\"` | no |\n| \u003ca name=\"input_task_cpu\"\u003e\u003c/a\u003e [task\\_cpu](#input\\_task\\_cpu) | The number of CPU units used by the task. If unspecified, it will default to `container_cpu`. If using `FARGATE` launch type `task_cpu` must match supported memory values (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#task_size) | `number` | `null` | no |\n| \u003ca name=\"input_task_memory\"\u003e\u003c/a\u003e [task\\_memory](#input\\_task\\_memory) | The amount of memory (in MiB) used by the task. If unspecified, it will default to `container_memory`. If using Fargate launch type `task_memory` must match supported cpu value (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#task_size) | `number` | `null` | no |\n| \u003ca name=\"input_task_policy_arns\"\u003e\u003c/a\u003e [task\\_policy\\_arns](#input\\_task\\_policy\\_arns) | A list of IAM Policy ARNs to attach to the generated task role. | `list(string)` | `[]` | no |\n| \u003ca name=\"input_tenant\"\u003e\u003c/a\u003e [tenant](#input\\_tenant) | ID element \\_(Rarely used, not included by default)\\_. A customer identifier, indicating who this instance of a resource is for | `string` | `null` | no |\n| \u003ca name=\"input_tracing_provider\"\u003e\u003c/a\u003e [tracing\\_provider](#input\\_tracing\\_provider) | Defines which tracing provider to use. Valid values are 'local', 'xray', 'noop', or any tracer you registered yourself | `string` | `\"local\"` | no |\n| \u003ca name=\"input_ulimits\"\u003e\u003c/a\u003e [ulimits](#input\\_ulimits) | The ulimits to configure for the container. This is a list of maps. Each map should contain \"name\", \"softLimit\" and \"hardLimit\" | \u003cpre\u003elist(object({\u003cbr/\u003e    name      = string\u003cbr/\u003e    softLimit = number\u003cbr/\u003e    hardLimit = number\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_wait_for_steady_state\"\u003e\u003c/a\u003e [wait\\_for\\_steady\\_state](#input\\_wait\\_for\\_steady\\_state) | If true, it will wait for the service to reach a steady state (like aws ecs wait services-stable) before continuing | `bool` | `true` | no |\n| \u003ca name=\"input_working_directory\"\u003e\u003c/a\u003e [working\\_directory](#input\\_working\\_directory) | The working directory to run commands inside the container | `string` | `\"/app\"` | no |\n\n## Outputs\n\nNo outputs.\n\u003c!-- END_TF_DOCS --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjusttrackio%2Fterraform-aws-ecs-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjusttrackio%2Fterraform-aws-ecs-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjusttrackio%2Fterraform-aws-ecs-app/lists"}