[
  {
    "name": "${service_name}",
    "image": "${docker_image}",
    "cpu": ${application_task_cpu},
    "memory": ${application_task_memory},
    "essential": true,
    "dependsOn": [
      {
        "containerName": "datadog-agent",
        "condition": "START"
      }
    ],
    "dockerLabels": {
      "Environment": "${environment}"
    },
    "mountPoints": ${jsonencode(mount_points)},
    "healthCheck": {
      "command": ${jsonencode("${health_check_command}")},
      "interval": ${health_check_interval},
      "retries": 3,
      "startPeriod": ${container_start_period_seconds},
      "timeout": ${health_check_timeout}
    },
    "portMappings": ${jsonencode("${port_mappings}")},
    "volumesFrom": [],
    "logConfiguration": {
      "logDriver": "awsfirelens",
      "options": {
        "Name": "datadog",
        "Host": "http-intake.logs.datadoghq.com",
        "TLS": "on",
        "dd_service": "${service_name}",
        "dd_source": "${environment}-${service_name}",
        "dd_tags": "env:${environment},environment:${environment},service_name:${service_name}",
        "dd_message_key": "log",
        "provider": "ecs"
      },
      "secretOptions": [{
        "name": "apikey",
        "valueFrom": "${datadog_api_key}"
      }]
    },
    "ulimits": [
      {
        "name": "nofile",
        "softLimit": ${ulimit_nofile_soft_limit},
        "hardLimit": ${ulimit_nofile_hard_limit}
      }
    ],
    "environment": [
      ${environment_variables}
    ],
    "secrets": [
      ${secrets}
    ],
    "systemControls": [],
    "versionConsistency": "${version_consistency}"
  },
  {
    "name": "datadog-agent",
    "image": "${datadog_image}",
    "cpu": ${datadog_task_cpu},
    "memory": ${datadog_task_memory},
    "essential": false,
    "dockerLabels": {
      "Environment": "${environment}"
    },
    "portMappings": [
      {
        "hostPort": 8126,
        "containerPort": 8126,
        "protocol": "tcp"
      }
    ],
    "mountPoints": [],
    "volumesFrom": [],
    "logConfiguration": {
      "logDriver": "awslogs",
      "options": {
        "awslogs-create-group": "true",
        "awslogs-group": "${environment}-${service_name}-datadog-agent",
        "awslogs-region": "${aws_region}",
        "awslogs-stream-prefix": "${environment}-${service_name}-datadog-agent"
      }
    },
    "environment": [
      {
        "name": "DD_SITE",
        "value": "datadoghq.com"
      },
      {
        "name": "ECS_FARGATE",
        "value": "true"
      },
      {
        "name": "DD_APM_ENABLED",
        "value": "true"
      },
      {
        "name": "DD_APM_IGNORE_RESOURCES",
        "value": "GET ${health_check_path}"
      }
    ],
    "secrets": [
      {
        "name": "DD_API_KEY",
        "valueFrom": "${datadog_api_key}"
      }
    ],
    "systemControls": [],
    "versionConsistency": "${version_consistency}"
  },
  {
    "name": "fluentbit-datadog",
    "image": "${fluentbit_image}",
    "cpu": ${fluentbit_task_cpu},
    "memory": ${fluentbit_task_memory},
    "essential": false,
    "dockerLabels": {
      "Environment": "${environment}"
    },
    "firelensConfiguration": {
      "type": "fluentbit",
      "options": {
        "enable-ecs-log-metadata": "true",
        "config-file-type": "file",
        "config-file-value": "/fluent-bit/configs/parse-json.conf"
      }
    },
    "portMappings": [],
    "mountPoints": [],
    "volumesFrom": [],
    "logConfiguration": {
      "logDriver": "awslogs",
      "options": {
        "awslogs-create-group": "true",
        "awslogs-group": "${environment}-${service_name}-fluentbit",
        "awslogs-region": "${aws_region}",
        "awslogs-stream-prefix": "${environment}-${service_name}-fluentbit"
      }
    },
    "user": "0",
    "environment": [],
    "systemControls": [],
    "versionConsistency": "${version_consistency}"
  },
  {
    "name": "swf-workflow-monitor",
    "image": "${account_id}.dkr.ecr.${aws_region}.amazonaws.com/swf-workflow-monitor:${environment}",
    "cpu": ${swf_monitor_task_cpu},
    "memory": ${swf_monitor_task_memory},
    "essential": false,
    "dockerLabels": {
      "Environment": "${environment}"
    },
    "mountPoints": [],
    "portMappings": [],
    "volumesFrom": [],
    "logConfiguration": {
      "logDriver": "awslogs",
      "options": {
        "awslogs-create-group": "true",
        "awslogs-group": "${environment}-${service_name}-swf-workflow-monitor",
        "awslogs-region": "${aws_region}",
        "awslogs-stream-prefix": "${environment}-${service_name}-swf-workflow-monitor"
      }
    },
    "environment": [
      {
        "name": "SWF_MONITOR_DOMAIN",
        "value": "${swf_monitor_domain}"
      },
      {
        "name": "SWF_MONITOR_WORKFLOW_NAME",
        "value": "${swf_monitor_workflow_name}"
      },
      {
        "name": "Environment",
        "value": "${environment}"
      }
    ],
    "secrets": [],
    "systemControls": [],
    "versionConsistency": "${version_consistency}"
  }
]
