# ecs-cluster — ECS Fargate cluster

> **Module kind:** primitive  |  **Version:** 1.0.0

An ECS Fargate cluster. The simplest ECS module — one resource, two
inputs, two outputs. The cluster is the container orchestration
boundary that `ecs-service` references for task placement.

## Resources

| Resource | Type | Purpose |
|----------|------|---------|
| cluster | `aws_ecs_cluster` | The ECS Fargate cluster |

## Inputs

| Name | Type | Required | Default | Description |
|------|------|----------|---------|-------------|
| `name` | string | yes | — | The ECS cluster name |
| `region` | string | yes | — | AWS region the cluster is created in |

## Outputs

| Name | Type | Description |
|------|------|-------------|
| `cluster_arn` | arn | The ECS cluster ARN |
| `cluster_id` | string | The ECS cluster id (name) |

## Usage

```json
{
  "id": "cluster",
  "type": "aws:ecs:cluster",
  "module": "ecs-cluster@1.0.0",
  "inputs": {
    "name": "acdl-microservice",
    "region": "us-east-1"
  }
}
```

The `cluster_arn` output is referenced by `ecs-service` as its
`cluster_arn` input.

## Compliance extension points

- **Container Insights** — add `configuration { container_insights = "enabled" }` for observability (SOC2 CC7.3, DORA ICT risk monitoring).
- **CloudWatch Logs** — add a log group with retention policy for cluster-level audit logs (SOX, SOC2 CC7.2.
- **Encryption** — add `settings { name = "containerInsights", value = "enabled" }` and KMS-based encryption for container data (GDPR Art.32).

## Examples

Validated example contracts are in [`examples/`](examples/). The platform-test
pipeline validates them against `schemas/contract.schema.json`.

### Simple

A minimal deployment:

[`examples/simple.yml`](examples/simple.yml)
```yaml
environment: dev
id: clus
infrastructure:
  ecs-cluster:
    inputs:
      name: my-cluster
      region: us-east-1
    version: 1.0.0
name: ecs-cluster
```

### Complex

A production deployment with optional inputs:

[`examples/complex.yml`](examples/complex.yml)
```yaml
environment: dev
id: clus
infrastructure:
  ecs-cluster:
    inputs:
      name: my-production-cluster
      region: us-east-1
    version: 1.0.0
name: ecs-cluster
```

## Versioning

`1.0.0` — interface MAJOR, behavior MINOR, lifecycle PATCH. MAJOR bumps
require a new registry entry (immutable publication); old entries enter
a 12-month deprecation window.