Skip to main content
Version: Preview

Firehose

Experimental
Creates:
AssetsLineage

Configure in the UI

This plugin can be configured directly in the Marmot UI with a step-by-step wizard.

View Guide

The Firehose plugin discovers Amazon Data Firehose delivery streams across your AWS accounts. Each delivery stream becomes a DeliveryStream asset named after the stream, carrying its status, type, encryption, source and destination settings.

Lineage

A delivery stream sits between a producer and a destination, so the plugin links it to both:

  • The Kinesis stream or Kafka topic feeding it, as a FEEDS edge into the delivery stream.
  • Each system it writes to, as a PRODUCES edge out of the delivery stream: S3 buckets, Redshift, Elasticsearch, OpenSearch, Snowflake and Iceberg tables, plus the Glue table an extended S3 destination converts its records against.

Splunk and HTTP endpoint destinations get no edge because Marmot has no asset for them; their endpoint is recorded in metadata instead.

The plugin creates none of those assets, it only points at them. Run the plugin that owns each system alongside this one, otherwise the edge has nothing to attach to and is dropped.

Required Permissions

AWS Configuration

See AWS Configuration for the supported AWS configuration options.

Example Configuration


credentials:
region: "us-east-1"
profile: "production"
discover_lineage: true
include_destination_config: true
tags_to_metadata: true
tags:
- "aws"
- "firehose"

Configuration

The following configuration options are available:

PropertyTypeRequiredDescription
credentialsAWSCredentialsfalseAWS credentials configuration
discover_lineageboolfalseLink each stream to the systems it reads from and writes to
external_links[]ExternalLinkfalseExternal links to show on all assets
filterFilterfalseFilter discovered assets by name (regex)
include_destination_configboolfalseRecord the destination settings in metadata
include_tags[]stringfalseList of AWS tags to include as metadata. By default, all tags are included.
tagsTagsConfigfalseTags to apply to discovered assets
tags_to_metadataboolfalseConvert AWS tags to Marmot metadata

Available Metadata

The following metadata fields are available:

FieldTypeDescription
arnstringARN of the delivery stream
created_atstringWhen the delivery stream was created
destinationmap[string]anyDestination settings, with any value that could carry a credential redacted
destination_countintNumber of destinations configured on the delivery stream
destination_typestringWhere records are written (s3, extended_s3, redshift, elasticsearch, opensearch, opensearch_serverless, splunk, http_endpoint, snowflake, iceberg)
encryption_key_typestringServer-side encryption key type (AWS_OWNED_CMK, CUSTOMER_MANAGED_CMK)
encryption_statusstringServer-side encryption status
last_updated_atstringWhen the delivery stream was last updated
regionstringAWS region the delivery stream lives in
source_kinesis_streamstringName of the Kinesis stream feeding the delivery stream
source_msk_clusterstringName of the MSK cluster feeding the delivery stream
source_msk_topicstringName of the MSK topic feeding the delivery stream
source_typestringWhere records come from (direct_put, kinesis, msk, database)
statusstringDelivery stream status (ACTIVE, CREATING, DELETING)
stream_typestringDelivery stream type (DirectPut, KinesisStreamAsSource, MSKAsSource, DatabaseAsSource)
tagsmap[string]stringAWS resource tags
version_idstringVersion of the delivery stream configuration

Destination Settings

The destination field is a sub-map. Which of these fields are present depends on the destination type.

FieldTypeDescription
account_urlstringSnowflake account URL
bucketstringS3 bucket name
buffering_interval_secondsintBuffer interval in seconds before delivery
buffering_size_mbintBuffer size in MB before delivery
catalog_arnstringIceberg catalog ARN
cluster_endpointstringRedshift cluster host, or Elasticsearch and OpenSearch cluster endpoint
collection_endpointstringOpenSearch Serverless collection endpoint
compression_formatstringS3 compression format
copy_columnsstringRedshift columns the copy command targets
copy_optionsstringRedshift copy command options
databasestringRedshift or Snowflake database
domain_arnstringElasticsearch or OpenSearch domain ARN
error_output_prefixstringS3 key prefix failed records are written under
file_extensionstringFile extension of the delivered S3 objects
format_conversion_enabledboolWhether records are converted to a columnar format
glue_catalog_idstringGlue catalog the conversion schema is read from
glue_databasestringGlue database the conversion schema is read from
glue_regionstringRegion of the Glue catalog
glue_tablestringGlue table the conversion schema is read from
hec_endpointstringSplunk HTTP event collector endpoint
hec_endpoint_typestringSplunk HTTP event collector endpoint type
index_namestringElasticsearch or OpenSearch index name
index_rotation_periodstringHow often the index name is rotated
namestringHTTP endpoint name
prefixstringS3 key prefix records are written under
s3_backup_modestringWhether records are also backed up to S3
schemastringSnowflake schema
tablestringRedshift or Snowflake table
tables[]stringIceberg destination tables
type_namestringElasticsearch or OpenSearch type name
urlstringHTTP endpoint URL
userstringSnowflake user
usernamestringRedshift user the copy command runs as
warehouse_locationstringIceberg warehouse location