AWSAmazon CloudWatchMonitoring

aws_cloudwatch_log_stream cost estimation

A log stream is free. It is a named sequence of log events inside a log group, and cost comes from the bytes ingested and stored in the group, not the stream.

An aws_cloudwatch_log_stream creates a named stream inside a log group, typically one per source (an instance, a container, a function invocation). The stream itself is free: there is no charge for creating a stream or for the number of streams in a group. It is just an organizational bucket for ordered log events.

The cost lives on the parent log group and is driven by the log data, not the stream count. CloudWatch Logs bills for ingestion at about $0.50/GB and for archival storage at about $0.03/GB-month after ingestion. Those charges are the same whether your events land in one stream or ten thousand; the meter is bytes, not streams. Where stream design matters is operationally: too many tiny streams make queries slower and harder, but they do not change the bill.

The optimization is on the data flowing into the group: reduce log volume, set a retention policy so old data is deleted instead of stored forever, and avoid logging noisy debug output in production. c3x prices the log group's ingestion and storage and treats the log stream as the free container it is.

Terraform example

A minimal but realistic configuration that C3X can estimate.

resource "aws_cloudwatch_log_group" "app" {
  name              = "/app/prod"
  retention_in_days = 30
}

resource "aws_cloudwatch_log_stream" "worker" {
  name           = "worker-01"
  log_group_name = aws_cloudwatch_log_group.app.name
}

Pricing dimensions

What you actually pay for when you provision aws_cloudwatch_log_stream.

DimensionUnitWhat's being charged
Log streamfreeCreating a stream and the number of streams in a group have no charge.
$0
Log ingestionper GBThe bytes of log events written into the group are billed on ingestion, regardless of stream count.
~$0.50/GB ingested
Log storageper GB-monthIngested data retained in the group is billed for archival storage until deleted by retention.
~$0.03/GB-month

Optimization tips

Common ways to reduce aws_cloudwatch_log_stream cost without changing the workload.

Set retention on the group, not per stream

Stops unbounded storage growth

Streams inherit the group's retention. A retention policy of 30 or 90 days deletes old data instead of storing it forever, and it applies across every stream at once.

Cut log volume, not stream count

Directly reduces ingestion charges

The bill is bytes ingested, so trimming noisy debug logging in production lowers cost. Splitting the same volume across more streams does nothing for the bill.

Avoid one stream per short-lived task

Creating a stream per ephemeral job bloats the group operationally without saving money. Group related sources into fewer streams for faster queries.

FAQ

Does a CloudWatch log stream cost money?

No. Creating a log stream and the number of streams in a group are free. You pay for the log group's ingestion (about $0.50/GB) and storage (about $0.03/GB-month), which depend on bytes, not stream count.

Does having more log streams increase my bill?

No. CloudWatch bills the volume of log data, not how many streams it lands in. The same bytes cost the same in one stream or ten thousand. Reduce log volume and set retention to cut cost.

How do I reduce CloudWatch Logs cost?

Set a retention policy on the log group so old data is deleted, cut noisy debug logging in production to lower ingestion, and export data you must keep long term to cheaper S3 storage.

Related resources

Estimate this resource in your own Terraform

Free, open source, no API key. C3X parses your Terraform and shows line-item cost for every resource, including aws_cloudwatch_log_stream.