
terraform-aws-arc-kinesis-firehose¶
Module:
sourcefuse/arc-kinesis-firehose/awsRegistry: https://registry.terraform.io/modules/sourcefuse/arc-kinesis-firehose/aws
Category: Streaming / Data Ingestion
Source: https://github.com/sourcefuse/terraform-aws-arc-kinesis-firehose
Overview¶
Creates Kinesis Data Firehose delivery streams with S3, Redshift, OpenSearch, or HTTP endpoint destinations, with optional transformation and encryption.
Architecture¶

What It Does¶
- Delivery to S3, Redshift, OpenSearch, Splunk, or HTTP endpoints
- Lambda-based record transformation
- Dynamic partitioning for S3
- KMS encryption for data at rest
- CloudWatch logging for delivery errors
- Data format conversion (JSON to Parquet/ORC)
- Buffering hints configuration
Quickstart¶
S3 with KMS Encryption¶
With Lambda Transformation¶
Redshift¶
OpenSearch¶
Dynamic Partitioning¶
Required Inputs¶
| Name | Type | Description |
|---|---|---|
name |
string |
Firehose delivery stream name |
destination |
string |
Destination type: extended_s3, redshift, opensearch, http_endpoint |
| ## Key Outputs |
| Name | Description |
|---|---|
stream_arn |
Firehose delivery stream ARN |
stream_name |
Firehose delivery stream name |
| ## Full Variable & Output Reference |
The complete inputs/outputs reference is auto-generated below.
Requirements¶
| Name | Version |
|---|---|
| terraform | >= 1.5.0 |
| aws | >= 5.0, < 7.0 |
Providers¶
| Name | Version |
|---|---|
| aws | 6.42.0 |
Modules¶
No modules.
Resources¶
| Name | Type |
|---|---|
| aws_cloudwatch_log_group.firehose | resource |
| aws_cloudwatch_log_stream.firehose | resource |
| aws_iam_role.firehose | resource |
| aws_iam_role_policy.firehose | resource |
| aws_kinesis_firehose_delivery_stream.this | resource |
| aws_caller_identity.current | data source |
| aws_iam_policy_document.firehose_assume_role | data source |
| aws_iam_policy_document.firehose_policy | data source |
| aws_partition.current | data source |
| aws_region.current | data source |
Inputs¶
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| additional_processors | Additional processing configuration blocks (e.g., MetadataExtraction, RecordDeAggregation). | list(object({ |
[] |
no |
| create_iam_role | Whether to create an IAM role for Firehose. Set false to provide an existing role via iam_role_arn. | bool |
true |
no |
| destination | Destination type. Valid values: extended_s3, redshift, opensearch, http_endpoint. | string |
n/a | yes |
| dynamic_partitioning_retry_duration | Retry duration in seconds for dynamic partitioning (0–7200). | number |
300 |
no |
| enable_dynamic_partitioning | Enable dynamic partitioning for extended_s3 destination. | bool |
false |
no |
| enable_format_conversion | Enable data format conversion (Parquet/ORC) via AWS Glue. | bool |
false |
no |
| enable_sse | Enable server-side encryption on the delivery stream. | bool |
true |
no |
| glue_database_name | Glue database name for schema. Required when enable_format_conversion is true. | string |
null |
no |
| glue_role_arn | IAM role ARN for Glue access. Defaults to the Firehose role. | string |
null |
no |
| glue_table_name | Glue table name for schema. Required when enable_format_conversion is true. | string |
null |
no |
| http_endpoint_configuration | Configuration block for HTTP endpoint destination. | object({ |
null |
no |
| iam_role_arn | ARN of an existing IAM role. Required when create_iam_role is false. | string |
null |
no |
| kinesis_data_stream | Kinesis Data Stream source configuration. | object({ |
null |
no |
| kms_key_arn | ARN of a KMS key for server-side encryption. If null, AWS-managed key is used. | string |
null |
no |
| lambda_arn | ARN of the Lambda function for data transformation. Enables transformation when set. | string |
null |
no |
| logging_config | CloudWatch logging configuration for the delivery stream. | object({ |
{} |
no |
| name | Name of the Kinesis Firehose delivery stream. | string |
n/a | yes |
| opensearch_configuration | Configuration block for OpenSearch destination. | object({ |
null |
no |
| opensearch_domain_arn | ARN of the OpenSearch domain. | string |
null |
no |
| output_format | Output format for format conversion. Valid values: PARQUET, ORC. | string |
"PARQUET" |
no |
| redshift_configuration | Configuration block for Redshift destination. | object({ |
null |
no |
| s3_backup_configuration | S3 backup configuration for extended_s3 destination. | object({ |
{} |
no |
| s3_configuration | S3 delivery/staging configuration. | object({ |
{} |
no |
| tags | Map of tags to assign to all resources. | map(string) |
{} |
no |
| vpc_config | VPC configuration for OpenSearch destination. | object({ |
null |
no |
Outputs¶
| Name | Description |
|---|---|
| iam_role_arn | ARN of the IAM role used by Firehose. |
| iam_role_name | Name of the IAM role created for Firehose (null if externally provided). |
| log_group_name | CloudWatch log group name. |
| log_stream_name | CloudWatch log stream name. |
| stream_arn | ARN of the Kinesis Firehose delivery stream. |
| stream_name | Name of the Kinesis Firehose delivery stream. |
Versioning¶
This project uses a .version file at the root of the repo which the pipeline reads from and does a git tag.
When you intend to commit to main, you will need to increment this version. Once the project is merged,
the pipeline will kick off and tag the latest git commit.
Development¶
Prerequisites¶
Configurations¶
- Configure pre-commit hooks
Versioning¶
while Contributing or doing git commit please specify the breaking change in your commit message whether its major,minor or patch
For Example
Tests¶
- Tests are available in
testdirectory - Configure the dependencies
- Now execute the test
Contributing¶
See CONTRIBUTING.md for commit conventions and development setup.
Authors¶
This project is authored by: - SourceFuse ARC Team