# CloudWatch Metric Stream -- Review Cost

> Metric streams bill $0.003 per 1,000 metric updates, and the only real lever is excluding namespaces you do not need downstream. AWS publishes no per-namespace update breakdown, so the droppable fraction is unmeasurable. ZopNight keeps this rule as a permanent abstain rather than invent one.

Source: https://zop.dev/integrations/aws/recommendations/cloudwatch-metric-stream-review-cost
Updated: 2026-08-19

---

## The lever is real; the measurement is not

A CloudWatch metric stream forwards every metric update in its configured namespaces to a
Firehose destination at [$0.003 per 1,000 updates](https://aws.amazon.com/cloudwatch/pricing/). Streams configured with broad includes,
or with no filter at all, routinely forward namespaces the downstream consumer never reads,
and tightening the filter genuinely cuts the bill. The saving would be the stream's monthly
cost multiplied by the fraction of updates in excludable namespaces. Half of that formula
is obtainable; the other half does not exist.

## Where the arithmetic dies

The total update volume per stream is cheap to get: the MetricStreams namespace publishes a
MetricUpdate counter dimensioned by stream name. But the numerator, updates attributable
to *excludable* namespaces, is unavailable three ways. The stream's configuration lists
which namespaces flow, with no volume per namespace. The MetricUpdate metric carries only
the stream-name dimension, so AWS never breaks a stream's volume down by namespace. And
"excludable" is a judgment about what the downstream consumer needs, which no API exposes.
Splitting the total evenly, or assuming all non-core namespaces are droppable, would be a
fabricated fraction wearing measurement's clothes, so the rule declines to emit, on every
stream, permanently under the current producers.

## What the abstain protects

A cost recommendation is a claim that a specific dollar amount is recoverable by a specific
action. Shipping this one with an invented split would put confident-looking numbers in
front of people who cannot check them. The catalogue keeps the entry so the reasoning is
inspectable, and so any future producer that does surface per-namespace volume has a
defined formula waiting.

## Do the review manually; it is genuinely worth doing

```bash
aws cloudwatch get-metric-statistics \
  --namespace AWS/CloudWatch/MetricStreams --metric-name MetricUpdate \
  --dimensions Name=MetricStreamName,Value=my-stream \
  --start-time "$(date -u -v-30d +%Y-%m-%dT%H:%M:%SZ)" \
  --end-time "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
  --period 86400 --statistics Sum
```

Multiply the monthly sum by $0.003 per thousand for the stream's real cost, then compare
`aws cloudwatch get-metric-stream --name my-stream` against what your observability vendor
actually ingests. Humans can make the excludability judgment the API cannot: trim the
include list to namespaces the dashboard queries, and the same arithmetic the rule refuses
to fake becomes your measured saving.
