A Delivery Stream whose Errors Are Separable
Without error_output_prefix, records Firehose could not process are written into the same prefix as the ones it could, wrapped in an error envelope that whatever reads the prefix treats as data. Nothing reports it.
Verification
Static-verifiedPassed: validated and lint-clean (provider-schema-validated for AWS/Azure/GCP; Terraform-language lint elsewhere).
Conformance
- Static validation (fmt · validate · tflint)
- Security scan clean (Checkov)
- Plan tests (mocked: validation rules · outputs)
Provenance
- SHA-256 checksum
- Signature (pending)
Functional
- Live test pending (no cloud run yet)
Last verified 2026-09-12 · how we verify
Use it from the registry
terraform · opentofumodule "kinesis_firehose" {
source = "www.iac-bazaar.com/iac-bazaar/aws-kinesis-firehose/aws"
version = "1.0.0"
}Needs a registry token from /account/tokens. The module itself is free; the account is what identifies you. Full setup: registry docs.
Inputs & outputs
Create a free account to read this module's contract
The declared contract - every input name, type, default and description, plus every output - is shown to signed-in accounts, not to anonymous visitors.
A free account sees the contract of every module in the catalogue. There is no subscription and nothing to buy - the modules are free to download, and they run under Vizier.
Documentation
aws-kinesis-firehose
A Kinesis Data Firehose delivery stream into S3, with the error handling that
decides whether the destination prefix can be trusted. Works with Terraform
and OpenTofu (>= 1.6), AWS provider >= 6.0, < 7.0.
Without error_output_prefix, failed records land in the same prefix as good
ones. Firehose does not drop what it could not process - a record that failed
a transform, or that Firehose could not convert, is written anyway, wrapped in
an error envelope, into the destination prefix. Whatever reads that prefix then
reads failures as data, and nothing anywhere reports it. Giving errors their own
prefix is one line, and it is the difference between a quiet corruption and a
directory you can count. This module defaults it on and refuses null unless
you say you meant it.
CloudWatch logging is off by default. A stream that cannot assume its role,
cannot write to the bucket, or whose Lambda transform is throwing fails silently
and retries until the retry window expires. The log group is the only place any
of that appears, so log_group_name is likewise refused as null unless stated.
Compression is off by default too, and both Firehose and S3 bill by the byte. GZIP on log-shaped JSON is usually a 5-10x difference for no work, so the default here is GZIP.
Two more things the module handles:
s3_backup_modeis on whenever a Lambda transform is configured, so the raw record is kept. Without it, the only copy of what arrived is the one the transform could not handleserver_side_encryptionis set for DirectPut streams and omitted for Kinesis-sourced ones, which inherit the source stream's encryption and reject it here
The outputs errors_are_separated, failures_are_visible and
raw_records_are_kept exist to be asserted on in a policy test rather than read
by a person.
Verification
Static validation runs tofu fmt, init, validate, tflint and checkov.
This module has not yet had a live test, so it is published as statically
validated with its live test pending and does not carry the live-tested mark.
Usage code & full reference need an account
The complete copy-paste usage, the full input/output reference, and operational notes are free with an account - shown here and bundled in the download. Sign in and this section fills in.
- Usage
Related modules
aws-eventbridge
A custom EventBridge event bus, a pattern-filtered rule, and a target wired end-to-end - encryption at rest always on, least-privilege log delivery, and a 24h retry policy with optional DLQ.
aws-kinesis
A Kinesis Data Stream with KMS encryption at rest on by default and ON_DEMAND capacity (no shard math), plus optional enhanced fan-out consumers and IAM-only access.
aws-msk
An MSK Serverless Apache Kafka cluster with no brokers to size - SASL/IAM authentication only, encryption in transit and at rest always on, multi-AZ placement, and a locked-down security group.
aws-ses
An SES v2 sending stack - a configuration set with an optional domain/email identity (Easy DKIM) - with TLS required, bounce/complaint suppression, and reputation metrics to CloudWatch.
aws-sns
SNS standard/FIFO topic with encryption, delivery policies, and SQS/Lambda/email subscriptions.
aws-sqs
SQS standard/FIFO queue with dead-letter queue, redrive policy, SSE, and least-privilege queue policy.