Overcast is alpha — behaviour and APIs may change between releases. Pin your version and read the changelog before upgrading.

overcast

Firehose — Amazon Data Firehose

Delivery streams as control-plane records. Records are accepted and acknowledged with real record ids, then discarded — nothing is delivered to S3 or any other destination.

Delivery streams exist as records and accept writes, but there is no delivery: every record is acknowledged and discarded.

Status: ⚠️ Partial

Quick start

export AWS_ENDPOINT_URL=http://localhost:4566

aws firehose create-delivery-stream --delivery-stream-name events
aws firehose put-record \
  --delivery-stream-name events \
  --record Data="$(printf 'hello' | base64)"
# → { "RecordId": "…", "Encrypted": false }

Any credentials work; with none configured, run eval "$(overcast env)" first — see Using AWS SDKs and CLI.

What works

AreaBehaviour
Delivery streamsCreate, describe, list and delete; ACTIVE the moment they are created
Stream typeDeliveryStreamType is honoured, defaulting to DirectPut
WritesPutRecord and PutRecordBatch return a record id per record and FailedPutCount: 0
TagsInline Tags at creation, plus TagDeliveryStream, UntagDeliveryStream and ListTagsForDeliveryStream
LimitsStream names, the 1,000 KiB record cap and PutRecordBatch’s 1–500 records / 4 MiB per call are enforced
ErrorsA repeated stream name is ResourceInUseException; every exception is HTTP 400, as AWS documents

Differences from AWS

AreaOn AWSOvercast
DeliveryRecords reach S3, Redshift, OpenSearch or an HTTP endpointRecords are discarded — a bucket wired as a destination stays empty
Destination configurationStored and returnedS3DestinationConfiguration and its siblings are ignored, and DescribeDeliveryStream always reports an empty Destinations list
TransformationLambda processors, dynamic partitioning, format conversion and compressionNone of it is applied
BufferingA buffer interval and size govern the flushThere is no buffer interval or size, so nothing is ever flushed
UpdateDestinationChanges a live stream’s destinationNot implemented

Gotchas

Warning

A test that writes to Firehose and then asserts on objects in the destination bucket will never pass here. Write to S3 directly, or use Kinesis, whose records are really stored and readable.

Operations

All 9 listed operations are implemented. Per-operation status, notes and AWS API links: Firehose operations.