lptech-io / terraform-aws-ecs-application-fargate

Terraform module to create an entire service on ECS fargate, complete of target group and autoscaling

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Requirements

Name Version
aws >= 4.0

Providers

Name Version
aws >= 4.0

Modules

Name Source Version
ecs_service lptech-io/ecs-service-fargate/aws n/a
repository lptech-io/ecr-repository/aws n/a
target_group ./modules/target-group n/a

Resources

Name Type
aws_ecs_cluster.cluster resource
aws_lb_listener_rule.public_url_on_443 resource
aws_security_group_rule.ingress_from_load_balancer resource
aws_ssm_parameter.image_arn data source

Inputs

Name Description Type Default Required
autoscaling_configuration Autoscaling configuration for ECS service
object({
max_connections_per_container = optional(number, 500)
max_capacity = number
min_capacity = number
})
n/a yes
cluster_arn The ARN of an already existing ECS cluster. Required if no cluster_properties has been given string null no
cluster_properties Cluster configuration block
object({
id = optional(string)
metrics_enabled = optional(bool, true)
name = optional(string)
})
null no
container_definitions Container definitions for the ECS service
list(object({
command = optional(list(string))
cpu = optional(number)
entryPoint = optional(list(string))
environment = optional(list(object({
name = string
value = string
})))
essential = optional(bool)
firelensConfiguration = optional(object({
type = string
options = object({
config-file-type = string
enable-ecs-log-metadata = bool
config-file-value = string
})
}))
image = optional(string)
logConfiguration = optional(object({
logDriver = string
options = optional(map(string))
}))
memory = optional(number)
name = string
portMappings = optional(list(object({
hostPort = optional(number)
containerPort = number
protocol = string
})))
secrets = optional(list(object({
name = string
valueFrom = string
})))
}))
n/a yes
execution_role_policies AWS IAM policies that ECS might need
list(object({
name = string
statement = list(object({
Action = list(string)
Effect = string
Resource = list(string)
}))
}))
[] no
listener_rule_configuration Listener rule configuration block
object({
arn = string
host_header = optional(list(string))
paths = optional(list(string))
query_string = optional(list(string))
headers = optional(list(object({
name = string
values = list(string)
})))
})
n/a yes
load_balancer_arn The ARN of an already existing load balancer. Required if no lb_configuration has been given string null no
load_balancer_security_group_id Security group ID if lb_arn variable is defined string null no
repository_mutability (optional) describe your variable string null no
repository_prefix ECR repository prefix string n/a yes
service_configuration The ECS service configuration block
object({
cpu = optional(number, 1024)
entrypoint_container_name = string
entrypoint_container_port = number
health_check_grace_period_in_seconds = optional(number, 60)
memory = optional(number, 2048)
name = string
subnets = list(string)
})
n/a yes
ssm_parameter_name Name of SSM parameter where store container tag image string "" no
target_group_health_check Target group health check configuration block
object({
enabled = optional(bool, true)
healthy_threshold = optional(number, 2)
interval = optional(number, 30)
matcher = optional(string, "200")
path = optional(string, "/healthy")
port = optional(number, 80)
protocol = optional(string, "HTTP")
timeout = optional(number, 5)
unhealthy_threshold = optional(number, 5)
})
n/a yes
target_group_name Target group name string n/a yes
task_role_policies AWS IAM policies that the application might need
list(object({
name = string
statement = list(object({
Action = list(string)
Effect = string
Resource = list(string)
}))
}))
[] no
vpc_id VPC id string n/a yes

Outputs

Name Description
cluster_arn n/a
service_arn n/a
service_security_group_id n/a

About

Terraform module to create an entire service on ECS fargate, complete of target group and autoscaling

License:GNU General Public License v3.0


Languages

Language:HCL 100.0%