AWSAmazon S3Storage

aws_s3_bucket_notification cost estimation

An S3 bucket notification is free to configure. It routes bucket events to Lambda, SQS, or SNS, and cost lands on whichever destination processes the events.

An aws_s3_bucket_notification wires bucket events (object created, object removed, and similar) to a destination: a Lambda function, an SQS queue, or an SNS topic. The notification configuration itself is free. S3 does not charge for defining event routing or for emitting the events, and there is no per-notification meter on the bucket.

The cost lands on the destination that receives the events, and it scales with how many events fire. If events invoke a Lambda function, you pay per request and per GB-second for every object that triggers it, so a bucket taking heavy writes can drive real Lambda cost. If events go to SQS, you pay per request against the queue. If they go to SNS, you pay per publish and per delivery to each subscriber. A high-write bucket with a fan-out notification can generate far more downstream cost than the storage itself.

The optimization is to filter events tightly and batch where possible. Prefix and suffix filters keep low-value events from firing a destination, and routing to SQS lets a consumer pull events in batches rather than invoking Lambda once per object. c3x prices the Lambda, SQS, or SNS destination by its own meters and treats the notification configuration as the free wiring it is.

Terraform example

A minimal but realistic configuration that C3X can estimate.

resource "aws_s3_bucket_notification" "uploads" {
  bucket = aws_s3_bucket.uploads.id

  lambda_function {
    lambda_function_arn = aws_lambda_function.process.arn
    events              = ["s3:ObjectCreated:*"]
    filter_prefix       = "incoming/"
    filter_suffix       = ".json"
  }

  queue {
    queue_arn = aws_sqs_queue.events.arn
    events    = ["s3:ObjectRemoved:*"]
  }
}

Pricing dimensions

What you actually pay for when you provision aws_s3_bucket_notification.

DimensionUnitWhat's being charged
Notification configfreeDefining event routing and emitting the events has no charge on the bucket.
$0
Lambda destinationper 1M requests + GB-secondEach event that invokes a function is billed per request and by memory times duration.
$0.20 per 1M requests
SQS or SNS destinationper request / per deliveryEvents delivered to a queue are billed per request; to a topic, per publish and per subscriber delivery.
SQS: $0.40 per 1M requests

Optimization tips

Common ways to reduce aws_s3_bucket_notification cost without changing the workload.

Filter events by prefix and suffix

Cuts downstream invocations to relevant objects

Prefix and suffix filters stop low-value events from firing the destination, cutting Lambda invocations or queue requests on buckets that take heavy writes.

Route to SQS to batch processing

Sending events to a queue lets a consumer pull them in batches instead of invoking Lambda once per object, which reduces request count and improves throughput.

Scope events to what you actually handle

Subscribing to every event type multiplies downstream cost. Register only the event types your destination acts on so idle events never fire a billable target.

FAQ

Does an S3 bucket notification cost money?

No. Configuring event notifications and emitting the events is free. Cost lands on the destination: Lambda per request and GB-second, SQS per request, or SNS per publish and delivery.

What drives the cost of S3 event notifications?

The volume of events and the destination that processes them. A high-write bucket invoking Lambda once per object can cost more than the storage. Filtering events and batching through SQS keeps that in check.

How do I reduce cost from bucket notifications?

Use prefix and suffix filters so only relevant objects trigger the destination, route to SQS so consumers batch events, and subscribe only to the event types you actually handle.

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_s3_bucket_notification.