from __future__ import annotations
from typing import Any, Dict, List
from aws_mcp_audit.checks.findings import Finding, new_finding
def check_unhealthy_targets(snapshot: Dict[str, Any]) -> List[Finding]:
out: List[Finding] = []
elb_by_region: Dict[str, Any] = snapshot.get("elbv2_by_region", {})
for region, blob in elb_by_region.items():
bad = [t for t in blob.get("target_health", []) if (t.get("health") not in (None, "healthy"))]
if bad:
out.append(
new_finding(
severity="HIGH",
title="Unhealthy targets in load balancer target groups",
region=region,
evidence={"count": len(bad), "examples": bad[:20]},
remediation_hint="Investigate failing targets (health checks, networking, app readiness). Ensure autoscaling/rollouts drain gracefully.",
)
)
return out