{"id":15155732,"url":"https://github.com/infraspecdev/terraform-aws-ecs-deployment","last_synced_at":"2026-03-06T21:31:44.901Z","repository":{"id":249944398,"uuid":"828798206","full_name":"infraspecdev/terraform-aws-ecs-deployment","owner":"infraspecdev","description":"Terraform module to deploy production-ready applications and services on an existing ECS infra.","archived":false,"fork":false,"pushed_at":"2025-12-04T06:43:03.000Z","size":737,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-03-01T09:50:46.165Z","etag":null,"topics":["aws-acm","aws-alb","aws-ecs","aws-ecs-capac","ecs-deployment","terraform-aws-module","terraform-module"],"latest_commit_sha":null,"homepage":"https://registry.terraform.io/modules/infraspecdev/ecs-deployment/aws/latest","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/infraspecdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"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":"2024-07-15T06:39:56.000Z","updated_at":"2025-12-04T06:40:50.000Z","dependencies_parsed_at":"2025-02-09T14:33:01.981Z","dependency_job_id":"9515e1bf-a139-4795-86c7-5d455bc72e33","html_url":"https://github.com/infraspecdev/terraform-aws-ecs-deployment","commit_stats":{"total_commits":133,"total_committers":2,"mean_commits":66.5,"dds":0.1278195488721805,"last_synced_commit":"eccca4154cf3fb9cb0e497eec7cb39b5f75d696e"},"previous_names":["infraspecdev/terraform-aws-ecs-deployment"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/infraspecdev/terraform-aws-ecs-deployment","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infraspecdev%2Fterraform-aws-ecs-deployment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infraspecdev%2Fterraform-aws-ecs-deployment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infraspecdev%2Fterraform-aws-ecs-deployment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infraspecdev%2Fterraform-aws-ecs-deployment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/infraspecdev","download_url":"https://codeload.github.com/infraspecdev/terraform-aws-ecs-deployment/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infraspecdev%2Fterraform-aws-ecs-deployment/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30198661,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["aws-acm","aws-alb","aws-ecs","aws-ecs-capac","ecs-deployment","terraform-aws-module","terraform-module"],"created_at":"2024-09-26T18:43:04.327Z","updated_at":"2026-03-06T21:31:44.877Z","avatar_url":"https://github.com/infraspecdev.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- BEGIN_TF_DOCS --\u003e\n# terraform-aws-ecs-deployment\n\nTerraform module to deploy production-ready applications and services on an existing ECS infra.\n\n## Architecture Diagram\n\n![ECS Deployment Architecture Diagram](https://github.com/infraspecdev/terraform-aws-ecs-deployment/raw/main/diagrams/ecs-deployment-architecture.jpeg)\n\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.6.0 |\n| \u003ca name=\"requirement_aws\"\u003e\u003c/a\u003e [aws](#requirement\\_aws) | ~\u003e 5.0 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_aws\"\u003e\u003c/a\u003e [aws](#provider\\_aws) | ~\u003e 5.0 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_acm\"\u003e\u003c/a\u003e [acm](#module\\_acm) | ./modules/acm | n/a |\n| \u003ca name=\"module_alb\"\u003e\u003c/a\u003e [alb](#module\\_alb) | ./modules/alb | n/a |\n| \u003ca name=\"module_capacity_provider\"\u003e\u003c/a\u003e [capacity\\_provider](#module\\_capacity\\_provider) | ./modules/capacity-provider | n/a |\n| \u003ca name=\"module_s3_bucket\"\u003e\u003c/a\u003e [s3\\_bucket](#module\\_s3\\_bucket) | ./modules/s3-bucket | n/a |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [aws_ecs_service.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service) | resource |\n| [aws_ecs_task_definition.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition) | resource |\n| [aws_elb_service_account.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/elb_service_account) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_acm_certificates\"\u003e\u003c/a\u003e [acm\\_certificates](#input\\_acm\\_certificates) | ACM certificates to create. | \u003cpre\u003emap(object({\u003cbr/\u003e    domain_name               = string\u003cbr/\u003e    subject_alternative_names = optional(list(string), [])\u003cbr/\u003e    validation_method         = optional(string, \"DNS\")\u003cbr/\u003e    key_algorithm             = optional(string, \"RSA_2048\")\u003cbr/\u003e    validation_option = optional(object({\u003cbr/\u003e      domain_name       = string\u003cbr/\u003e      validation_domain = string\u003cbr/\u003e    }))\u003cbr/\u003e    tags                   = optional(map(string), {})\u003cbr/\u003e    record_zone_id         = string\u003cbr/\u003e    record_allow_overwrite = optional(bool, true)\u003cbr/\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_capacity_provider_default_auto_scaling_group_arn\"\u003e\u003c/a\u003e [capacity\\_provider\\_default\\_auto\\_scaling\\_group\\_arn](#input\\_capacity\\_provider\\_default\\_auto\\_scaling\\_group\\_arn) | ARN for this Auto Scaling Group. | `string` | `null` | no |\n| \u003ca name=\"input_capacity_providers\"\u003e\u003c/a\u003e [capacity\\_providers](#input\\_capacity\\_providers) | Capacity Providers to associate with the ECS Cluster. | `any` | `{}` | no |\n| \u003ca name=\"input_cluster_name\"\u003e\u003c/a\u003e [cluster\\_name](#input\\_cluster\\_name) | (Required) Name of the cluster. | `string` | n/a | yes |\n| \u003ca name=\"input_create_acm\"\u003e\u003c/a\u003e [create\\_acm](#input\\_create\\_acm) | Creates the ACM certificates to use with the Load Balancer. | `bool` | `false` | no |\n| \u003ca name=\"input_create_alb\"\u003e\u003c/a\u003e [create\\_alb](#input\\_create\\_alb) | Creates a new Application Load Balancer to use with the ECS Service. | `bool` | `true` | no |\n| \u003ca name=\"input_create_capacity_provider\"\u003e\u003c/a\u003e [create\\_capacity\\_provider](#input\\_create\\_capacity\\_provider) | Creates a new Capacity Provider to use with the Autoscaling Group. | `bool` | `true` | no |\n| \u003ca name=\"input_create_s3_bucket_for_alb_logging\"\u003e\u003c/a\u003e [create\\_s3\\_bucket\\_for\\_alb\\_logging](#input\\_create\\_s3\\_bucket\\_for\\_alb\\_logging) | (Optional) Creates S3 bucket for storing ALB Access and Connection Logs. | `bool` | `true` | no |\n| \u003ca name=\"input_default_capacity_providers_strategies\"\u003e\u003c/a\u003e [default\\_capacity\\_providers\\_strategies](#input\\_default\\_capacity\\_providers\\_strategies) | (Optional) Set of capacity provider strategies to use by default for the cluster. | `any` | `[]` | no |\n| \u003ca name=\"input_load_balancer\"\u003e\u003c/a\u003e [load\\_balancer](#input\\_load\\_balancer) | Configuration for the Application Load Balancer. | \u003cpre\u003eobject({\u003cbr/\u003e    name                       = optional(string)\u003cbr/\u003e    internal                   = optional(bool, false)\u003cbr/\u003e    subnets_ids                = optional(list(string), [])\u003cbr/\u003e    security_groups_ids        = optional(list(string), [])\u003cbr/\u003e    preserve_host_header       = optional(bool)\u003cbr/\u003e    enable_deletion_protection = optional(bool, false)\u003cbr/\u003e    access_logs                = optional(any, null)\u003cbr/\u003e    connection_logs            = optional(any, null)\u003cbr/\u003e    target_groups              = optional(any, {})\u003cbr/\u003e    listeners                  = optional(any, {})\u003cbr/\u003e    listener_rules             = optional(any, {})\u003cbr/\u003e    tags                       = optional(map(string), {})\u003cbr/\u003e  })\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_s3_bucket_force_destroy\"\u003e\u003c/a\u003e [s3\\_bucket\\_force\\_destroy](#input\\_s3\\_bucket\\_force\\_destroy) | (Optional, Default:false) Boolean that indicates all objects (including any locked objects) should be deleted from the bucket when the bucket is destroyed so that the bucket can be destroyed without error. | `bool` | `false` | no |\n| \u003ca name=\"input_s3_bucket_name\"\u003e\u003c/a\u003e [s3\\_bucket\\_name](#input\\_s3\\_bucket\\_name) | (Optional, Forces new resource) Name of the bucket. | `string` | `null` | no |\n| \u003ca name=\"input_s3_bucket_policy_id_prefix\"\u003e\u003c/a\u003e [s3\\_bucket\\_policy\\_id\\_prefix](#input\\_s3\\_bucket\\_policy\\_id\\_prefix) | (Optional) - Prefix of the ID for the policy document. | `string` | `\"ecs-deployment-alb-\"` | no |\n| \u003ca name=\"input_s3_bucket_tags\"\u003e\u003c/a\u003e [s3\\_bucket\\_tags](#input\\_s3\\_bucket\\_tags) | (Optional) Map of tags to assign to the bucket. | `map(string)` | `{}` | no |\n| \u003ca name=\"input_s3_elb_service_account_arn\"\u003e\u003c/a\u003e [s3\\_elb\\_service\\_account\\_arn](#input\\_s3\\_elb\\_service\\_account\\_arn) | (Optional, Default:null) ARN of the ELB Service Account. | `string` | `null` | no |\n| \u003ca name=\"input_service\"\u003e\u003c/a\u003e [service](#input\\_service) | Configuration for ECS Service. | \u003cpre\u003eobject({\u003cbr/\u003e    name                               = string\u003cbr/\u003e    deployment_maximum_percent         = optional(number)\u003cbr/\u003e    deployment_minimum_healthy_percent = optional(number)\u003cbr/\u003e    desired_count                      = optional(number)\u003cbr/\u003e    enable_ecs_managed_tags            = optional(bool, true)\u003cbr/\u003e    enable_execute_command             = optional(bool)\u003cbr/\u003e    force_new_deployment               = optional(bool, true)\u003cbr/\u003e    health_check_grace_period_seconds  = optional(number)\u003cbr/\u003e    iam_role                           = optional(string)\u003cbr/\u003e    propagate_tags                     = optional(string)\u003cbr/\u003e    scheduling_strategy                = optional(string)\u003cbr/\u003e    triggers                           = optional(map(string))\u003cbr/\u003e    wait_for_steady_state              = optional(bool)\u003cbr/\u003e    load_balancer                      = optional(any, [])\u003cbr/\u003e    network_configuration              = optional(any, null)\u003cbr/\u003e    service_connect_configuration      = optional(any, null)\u003cbr/\u003e    volume_configuration               = optional(any, null)\u003cbr/\u003e    deployment_circuit_breaker         = optional(any, null)\u003cbr/\u003e    service_registries                 = optional(any, null)\u003cbr/\u003e    tags                               = optional(map(string), {})\u003cbr/\u003e  })\u003c/pre\u003e | n/a | yes |\n| \u003ca name=\"input_task_definition\"\u003e\u003c/a\u003e [task\\_definition](#input\\_task\\_definition) | ECS Task Definition to use for running tasks. | \u003cpre\u003eobject({\u003cbr/\u003e    container_definitions = any\u003cbr/\u003e    family                = string\u003cbr/\u003e    cpu                   = optional(string)\u003cbr/\u003e    execution_role_arn    = optional(string)\u003cbr/\u003e    ipc_mode              = optional(string)\u003cbr/\u003e    memory                = optional(string)\u003cbr/\u003e    network_mode          = optional(string, \"awsvpc\")\u003cbr/\u003e    pid_mode              = optional(string)\u003cbr/\u003e    skip_destroy          = optional(bool)\u003cbr/\u003e    task_role_arn         = optional(string)\u003cbr/\u003e    track_latest          = optional(bool)\u003cbr/\u003e    runtime_platform      = optional(any, null)\u003cbr/\u003e    volume                = optional(any, null)\u003cbr/\u003e    tags                  = optional(map(string), {})\u003cbr/\u003e  })\u003c/pre\u003e | n/a | yes |\n| \u003ca name=\"input_vpc_id\"\u003e\u003c/a\u003e [vpc\\_id](#input\\_vpc\\_id) | The ID of the VPC. | `string` | n/a | yes |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_acm_certificate_validation_id\"\u003e\u003c/a\u003e [acm\\_certificate\\_validation\\_id](#output\\_acm\\_certificate\\_validation\\_id) | Identifiers of the ACM certificates validation resources. |\n| \u003ca name=\"output_acm_certificates_arns\"\u003e\u003c/a\u003e [acm\\_certificates\\_arns](#output\\_acm\\_certificates\\_arns) | ARNs of the ACM certificates. |\n| \u003ca name=\"output_acm_certificates_ids\"\u003e\u003c/a\u003e [acm\\_certificates\\_ids](#output\\_acm\\_certificates\\_ids) | Identifiers of the ACM certificates. |\n| \u003ca name=\"output_acm_route53_records_ids\"\u003e\u003c/a\u003e [acm\\_route53\\_records\\_ids](#output\\_acm\\_route53\\_records\\_ids) | Identifiers of the Route53 Records for validation of the ACM certificates. |\n| \u003ca name=\"output_alb_arn\"\u003e\u003c/a\u003e [alb\\_arn](#output\\_alb\\_arn) | ARN of the load balancer. |\n| \u003ca name=\"output_alb_dns_name\"\u003e\u003c/a\u003e [alb\\_dns\\_name](#output\\_alb\\_dns\\_name) | DNS name of the load balancer. |\n| \u003ca name=\"output_alb_listener_rules_arns\"\u003e\u003c/a\u003e [alb\\_listener\\_rules\\_arns](#output\\_alb\\_listener\\_rules\\_arns) | ARNs of the Listener Rules. |\n| \u003ca name=\"output_alb_listener_rules_ids\"\u003e\u003c/a\u003e [alb\\_listener\\_rules\\_ids](#output\\_alb\\_listener\\_rules\\_ids) | Identifiers of the Listener Rules. |\n| \u003ca name=\"output_alb_listeners_arns\"\u003e\u003c/a\u003e [alb\\_listeners\\_arns](#output\\_alb\\_listeners\\_arns) | ARNs of the Listeners. |\n| \u003ca name=\"output_alb_listeners_ids\"\u003e\u003c/a\u003e [alb\\_listeners\\_ids](#output\\_alb\\_listeners\\_ids) | Identifiers of the Listeners. |\n| \u003ca name=\"output_alb_target_groups_arns\"\u003e\u003c/a\u003e [alb\\_target\\_groups\\_arns](#output\\_alb\\_target\\_groups\\_arns) | ARNs of the Target Groups. |\n| \u003ca name=\"output_alb_target_groups_ids\"\u003e\u003c/a\u003e [alb\\_target\\_groups\\_ids](#output\\_alb\\_target\\_groups\\_ids) | Identifiers of the Target Groups. |\n| \u003ca name=\"output_alb_zone_id\"\u003e\u003c/a\u003e [alb\\_zone\\_id](#output\\_alb\\_zone\\_id) | Canonical hosted zone ID of the Load Balancer. |\n| \u003ca name=\"output_capacity_provider_arns\"\u003e\u003c/a\u003e [capacity\\_provider\\_arns](#output\\_capacity\\_provider\\_arns) | ARNs for the ECS Capacity Providers. |\n| \u003ca name=\"output_capacity_provider_ecs_cluster_capacity_providers_id\"\u003e\u003c/a\u003e [capacity\\_provider\\_ecs\\_cluster\\_capacity\\_providers\\_id](#output\\_capacity\\_provider\\_ecs\\_cluster\\_capacity\\_providers\\_id) | Identifier for the ECS Cluster Capacity Providers. |\n| \u003ca name=\"output_capacity_provider_ids\"\u003e\u003c/a\u003e [capacity\\_provider\\_ids](#output\\_capacity\\_provider\\_ids) | Identifiers for the ECS Capacity Providers. |\n| \u003ca name=\"output_ecs_service_arn\"\u003e\u003c/a\u003e [ecs\\_service\\_arn](#output\\_ecs\\_service\\_arn) | ARN that identifies the service. |\n| \u003ca name=\"output_ecs_task_definition_arn\"\u003e\u003c/a\u003e [ecs\\_task\\_definition\\_arn](#output\\_ecs\\_task\\_definition\\_arn) | Full ARN of the Task Definition. |\n| \u003ca name=\"output_s3_bucket_arn\"\u003e\u003c/a\u003e [s3\\_bucket\\_arn](#output\\_s3\\_bucket\\_arn) | ARN of the bucket. |\n| \u003ca name=\"output_s3_bucket_id\"\u003e\u003c/a\u003e [s3\\_bucket\\_id](#output\\_s3\\_bucket\\_id) | Name of the bucket. |\n\u003c!-- END_TF_DOCS --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfraspecdev%2Fterraform-aws-ecs-deployment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finfraspecdev%2Fterraform-aws-ecs-deployment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfraspecdev%2Fterraform-aws-ecs-deployment/lists"}