Skip to content

kuttleio/aws_ecs_fargate_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Requirements

No requirements.

Providers

Name Version
aws n/a

Modules

Name Source Version
main_container_definition cloudposse/ecs-container-definition/aws 0.58.1

Resources

Name Type
aws_cloudwatch_log_group.ecs_group resource
aws_cloudwatch_log_subscription_filter.lambda_logfilter resource
aws_ecs_service.main resource
aws_ecs_task_definition.main resource
aws_lb_listener.main resource
aws_lb_target_group.main resource
aws_service_discovery_service.main resource
aws_acm_certificate.main data source
aws_caller_identity.current data source
aws_region.current data source
aws_route53_zone.main data source

Inputs

Name Description Type Default Required
additional_containers Additional containers definition list [] no
aws_lb_arn n/a string "" no
aws_lb_certificate_arn Certificate ARN. Used only if public != true string "" no
cluster_name ECS Cluster name string "fargate" no
command Commands to run on launch list(string) null no
container_cpu Container vCPU. 256 = 0.25 vCPU | 1024 = 1.0 vCPU | 4096 = 4.0 vCPU (max) number 256 no
container_cpu_high_threshold n/a number 30 no
container_cpu_low_threshold n/a number 60 no
container_memory Container Memory (RAM). 512 = 512 Mb | 1024 = 1024 Mb = 1.0 Gb | 8192 = 8192 Mb = 8.0 Gb (max) number 512 no
desired_count n/a number 1 no
domain_name n/a any n/a yes
ecr_account_id n/a any n/a yes
ecr_region n/a any n/a yes
entrypoint n/a list(string) null no
environment List of Environment Variables
list(object({
name = any
value = any
}))
[] no
external_port You do not need to specify it number 443 no
health_check_grace_period_seconds Set 300 if your container needs to build / initialize something on launch number null no
health_check_path Health checks path string "/health" no
image_name n/a string "nginx" no
image_version n/a string "latest" no
launch_type n/a string "FARGATE" no
logdna_lambda_logs_arn n/a any n/a yes
max_capacity n/a number 1 no
min_capacity n/a number 1 no
mount_points Container mount points. This is a list of maps, where each map should contain a containerPath and sourceVolume
list(object({
containerPath = string
sourceVolume = string
readOnly = bool
}))
[] no
name_prefix n/a any n/a yes
public Set as true to use with public load balancer bool false no
retention_in_days Amount of days to store service logs number 7 no
run_on_spots Set true to run 100% on FARGATE_SPOT bool false no
secrets List of Secrets
list(object({
name = string
valueFrom = string
}))
[] no
security_groups n/a any n/a yes
service_discovery_id n/a string "" no
service_image Full ECR Url. Example: 000000000000.dkr.ecr.us-west-2.amazonaws.com/repo_name:image_version string null no
service_name ECS Service name. Better to use with prefix string "fargate" no
service_port Container port. It is fine to leave the default value number 8080 no
standard_tags Tags map(string) n/a yes
subnets n/a any n/a yes
task_cpu Task vCPU. 256 = 0.25 vCPU | 1024 = 1.0 vCPU | 4096 = 4.0 vCPU (max) number 256 no
task_memory Task Memory (RAM). 512 = 512 Mb | 1024 = 1024 Mb = 1.0 Gb | 8192 = 8192 Mb = 8.0 Gb (max) number 512 no
task_role_arn Task Role ARN string null no
volumes Task volume definitions as list of configuration objects
list(object({
name = string
efs_volume_configuration = list(object({
file_system_id = string
root_directory = string
}))
}))
[] no
vpc_id n/a any n/a yes
zenv n/a string "fargate" no

Outputs

Name Description
service_name n/a
service_port n/a

Requirements

No requirements.

Providers

Name Version
aws n/a
time n/a

Modules

Name Source Version
main_container_definition cloudposse/ecs-container-definition/aws 0.61.1

Resources

Name Type
aws_cloudwatch_log_group.ecs_group resource
aws_cloudwatch_log_subscription_filter.lambda_logfilter resource
aws_ecs_service.main resource
aws_ecs_task_definition.main resource
aws_lb_listener.main resource
aws_lb_target_group.main resource
aws_service_discovery_service.main resource
time_sleep.wait_30_seconds resource
aws_acm_certificate.main data source
aws_caller_identity.current data source
aws_region.current data source
aws_route53_zone.main data source

Inputs

Name Description Type Default Required
additional_containers Additional containers definition list(string) [] no
aws_lb_arn Load Balancer ARN (if $public = true) string "" no
aws_lb_certificate_arn Certificate ARN (if $public != true) string "" no
cluster_name ECS Cluster name string "fargate" no
command Commands to run on launch list(string) null no
container_cpu Container vCPU. 256 = 0.25 vCPU | 1024 = 1.0 vCPU | 4096 = 4.0 vCPU (max) number 256 no
container_cpu_high_threshold Autoscaling: High CPU Threshold number 30 no
container_cpu_low_threshold Autoscaling: Low CPU Threshold number 60 no
container_memory Container Memory (RAM). 512 = 512 Mb | 1024 = 1024 Mb = 1.0 Gb | 8192 = 8192 Mb = 8.0 Gb (max) number 512 no
desired_count Desired task count number 1 no
disk_size_in_gib ECS Task ephemeral storage (in Gigs) number 21 no
domain_name n/a any n/a yes
ecr_account_id n/a any n/a yes
ecr_region n/a any n/a yes
entrypoint Just entrypoint list(string) null no
environment List of Environment Variables
list(object({
name = any
value = any
}))
[] no
external_port No need to set it up. Used for public services (if $public = true) number 443 no
health_check_grace_period_seconds Set 300 if your container needs to be initialized on launch number null no
health_check_path Health checks path. Best to use the default one string "/health" no
image_name Image name string "nginx" no
image_version Image version string "latest" no
launch_type Launch type. Just leave as FARGATE string "FARGATE" no
logs_destination_arn ARN where you want to push the logs string "" no
max_capacity Autoscaling: Max capacity number 1 no
min_capacity Autoscaling: Min capacity number 1 no
mount_points Container mount points. This is a list of maps, where each map should contain a containerPath and sourceVolume
list(object({
containerPath = string
sourceVolume = string
readOnly = bool
}))
[] no
name_prefix n/a any n/a yes
public Set as true to use with public load balancer bool false no
retention_in_days How many days you want to store your logs. Mind costs. number 7 no
run_on_spots Set true to run 100% on FARGATE_SPOT bool true no
secrets List of Secrets
list(object({
name = string
valueFrom = string
}))
[] no
security_groups n/a any n/a yes
service_discovery_id Service discovery ID string "" no
service_image Full ECR Url. Example: 000000000000.dkr.ecr.us-west-2.amazonaws.com/repo_name:image_version string null no
service_name ECS Service name. Use with prefix like: $account-$region-$name string "fargate" no
service_port Container port. OK to use the default value number 8080 no
standard_tags Tags map(string) n/a yes
subnets n/a any n/a yes
task_cpu Task vCPU. 256 = 0.25 vCPU | 1024 = 1.0 vCPU | 4096 = 4.0 vCPU (max) number 256 no
task_memory Task Memory (RAM). 512 = 512 Mb | 1024 = 1024 Mb = 1.0 Gb | 8192 = 8192 Mb = 8.0 Gb (max) number 512 no
task_role_arn Task Role ARN string null no
volumes Task volume definitions as list of configuration objects
list(object({
name = string
efs_volume_configuration = list(object({
file_system_id = string
root_directory = string
}))
}))
[] no
vpc_id n/a any n/a yes
zenv Environment name (stack) string "fargate" no

Outputs

Name Description
service_name Service name
service_port Service port

About

TF Module that creates AWS service (app) on ECS Fargate Spots

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages