{ "name": "ecs-service", "version": "1.0.0", "kind": "l1", "type": "aws:ecs:task_definition", "description": "ECS Fargate service primitive (engine-agnostic stack types aws:ecs:task_definition + aws:ecs:service; the Terraform adapter translates to aws_ecs_task_definition/aws_ecs_service).", "inputs": { "image": { "type": "string", "description": "ECR image URL for the task container.", "required": true }, "port": { "type": "number", "description": "Container port the service listens on.", "required": true }, "cpu": { "type": "number", "description": "Task CPU units (Fargate).", "required": false, "default": 256 }, "memory": { "type": "number", "description": "Task memory (MiB, Fargate).", "required": false, "default": 512 }, "env": { "type": "string", "description": "Environment variables as a JSON map string (optional).", "required": false }, "cluster_arn": { "type": "arn", "description": "ECS cluster ARN (ref to ecs-cluster).", "required": true }, "subnets": { "type": "string", "description": "Comma-separated subnet ids (ref to vpc).", "required": true }, "security_group": { "type": "string", "description": "Security group id for the service ENIs.", "required": true }, "lb_target_group_arn": { "type": "arn", "description": "Optional ALB target group ARN (ref to alb).", "required": false }, "region": { "type": "string", "description": "AWS region the service is created in.", "required": true }, "kms_key_arn": { "type": "string", "description": "ARN of the CMK for CloudWatch log group encryption; if absent, uses managed key.", "required": false }, "desired_count": { "type": "number", "description": "Desired number of ECS task replicas (Fargate).", "required": false, "default": 1 }, "launch_type": { "type": "string", "description": "ECS launch type (FARGATE or EC2).", "required": false, "default": "FARGATE" }, "family": { "type": "string", "description": "ECS task definition family name.", "required": false, "default": "app" }, "enabled": { "type": "boolean", "default": true, "description": "Feature flag: enable/disable this module. Set to false to skip resource creation." } }, "outputs": { "service_arn": { "type": "arn", "description": "The ECS service ARN." }, "task_def_arn": { "type": "arn", "description": "The ECS task definition ARN." } }, "nfrs": { "encryption_enabled": { "type": "boolean", "description": "Enable CloudWatch log group encryption.", "default": true }, "deletion_protection": { "type": "boolean", "description": "Prevent resource destruction via Terraform lifecycle prevent_destroy", "default": true } }, "resources": [ { "type": "aws:ecs:task_definition", "description": "Fargate task definition; the adapter jsonencodes image/port/env into container_definitions.", "inputs": [ "image", "port", "cpu", "memory", "env", "family" ], "outputs": [ "task_def_arn" ] }, { "type": "aws:ecs:service", "description": "Fargate service running the task definition in the cluster + subnets.", "inputs": [ "cluster_arn", "subnets", "security_group", "lb_target_group_arn", "desired_count", "launch_type" ], "outputs": [ "service_arn" ] } ] }