AWS Firehose
Official · maintained by Marmotmarmotdata/firehose Discover Amazon Data Firehose delivery streams from AWS accounts
The Firehose plugin discovers Amazon Data Firehose delivery streams across your AWS accounts. It captures each stream's configuration and destination settings, and links the stream to the Kinesis stream or Kafka topic it reads from and to the tables and buckets it writes to.
Firehose creates no assets for those systems. Every lineage edge points at an asset another Marmot plugin catalogs, so run the Kinesis, Kafka, S3, Glue, Redshift, OpenSearch, Snowflake or Iceberg plugin alongside this one to see the edges.
Required Permissions
AWS Configuration
See AWS Configuration for the supported AWS configuration options.
Keyless authentication
On Marmot Cloud or Marmot Enterprise the pipeline can present its own identity instead of access keys. Register your Marmot instance as an IAM OIDC identity provider (client id sts.amazonaws.com), create a role whose trust policy allows sts:AssumeRoleWithWebIdentity for that provider with <issuer host>:sub equal to the pipeline's subject, pipeline:<name> as reported by the pipeline API, and set credentials.role_arn and credentials.region. No key exists anywhere; Marmot mints a short-lived token for each run.
In the UI
Point-and-click, no config file needed.
- 1 Open Runs Create pipeline
- 2 Pick AWS Firehose from the plugin list.
- 3 Fill in the wizard, set a schedule, save.
With the CLI
Save a YAML config, then run marmot ingest.
name: my-firehose-pipeline
runs:
- firehose:
# No required fields — see the Configuration tab.$ marmot ingest -c ingest.yamlNot using plugins? Other ways to populate Marmot
Configuration
9 top-level fields. * marks required fields.
tags multiselect Tags to apply to discovered assets
external_links object[] External links to show on all assets
name string Display name for the link
icon string Icon identifier for the link
url string URL to the external resource
filter object Filter discovered assets by name (regex)
include multiselect Include patterns for resource names (regex)
exclude multiselect Exclude patterns for resource names (regex)
credentials object AWS credentials configuration
use_default bool Use AWS credentials from environment or default profile (recommended)
- default
- true
id string AWS access key ID
secret password AWS secret access key
token password AWS session token
profile string AWS profile to use from shared credentials file
role_arn string IAM role to assume with the Marmot identity token (AssumeRoleWithWebIdentity); its trust policy names the Marmot issuer as an OIDC provider. Setting it federates: no keys are needed, and region is required. role, if also set, is assumed on top of it
role string AWS IAM role ARN to assume with AssumeRole from the base credentials (static keys, a profile, the default chain, or role_arn)
role_external_id string External ID for cross-account role assumption
region string AWS region for services
endpoint string Custom endpoint URL for AWS services
tags_to_metadata bool Convert AWS tags to Marmot metadata
include_tags multiselect List of AWS tags to include as metadata. By default, all tags are included.
audience string Audience of the Marmot identity token. Derived from the credentials' federation settings; set it only when the cloud side expects another
discover_lineage bool Link each stream to the systems it reads from and writes to
- default
- true
include_destination_config bool Record the destination settings in metadata
- default
- true
Assets emitted
Metadata this plugin attaches to each discovered asset.
AWS Firehose
FirehoseFieldsThe metadata fields the Firehose plugin emits for a delivery stream asset.
arn stringARN of the delivery stream
status stringDelivery stream status (ACTIVE, CREATING, DELETING)
stream_type stringDelivery stream type (DirectPut, KinesisStreamAsSource, MSKAsSource, DatabaseAsSource)
version_id stringVersion of the delivery stream configuration
region stringAWS region the delivery stream lives in
created_at stringWhen the delivery stream was created
last_updated_at stringWhen the delivery stream was last updated
encryption_status stringServer-side encryption status
encryption_key_type stringServer-side encryption key type (AWS_OWNED_CMK, CUSTOMER_MANAGED_CMK)
source_type stringWhere records come from (direct_put, kinesis, msk, database)
source_kinesis_stream stringName of the Kinesis stream feeding the delivery stream
source_msk_cluster stringName of the MSK cluster feeding the delivery stream
source_msk_topic stringName of the MSK topic feeding the delivery stream
destination_type stringWhere records are written (s3, extended_s3, redshift, elasticsearch, opensearch, opensearch_serverless, splunk, http_endpoint, snowflake, iceberg)
destination_count intNumber of destinations configured on the delivery stream
destination objectDestination settings, with any value that could carry a credential redacted
tags objectAWS resource tags
Destination
FirehoseDestinationFieldsThe fields of the `destination` sub-map. Which of them are present depends on the destination type.
bucket stringS3 bucket name
prefix stringS3 key prefix records are written under
error_output_prefix stringS3 key prefix failed records are written under
compression_format stringS3 compression format
file_extension stringFile extension of the delivered S3 objects
s3_backup_mode stringWhether records are also backed up to S3
buffering_size_mb intBuffer size in MB before delivery
buffering_interval_seconds intBuffer interval in seconds before delivery
format_conversion_enabled boolWhether records are converted to a columnar format
input_format stringDeserializer for incoming records (HiveJsonSerDe, OpenXJsonSerDe)
output_format stringSerializer for delivered records (ParquetSerDe, OrcSerDe)
glue_catalog_id stringGlue catalog the conversion schema is read from
glue_database stringGlue database the conversion schema is read from
glue_table stringGlue table the conversion schema is read from
glue_region stringRegion of the Glue catalog
cluster_endpoint stringRedshift cluster host, or Elasticsearch and OpenSearch cluster endpoint
database stringRedshift or Snowflake database
schema stringSnowflake schema
table stringRedshift or Snowflake table
username stringRedshift user the copy command runs as
copy_options stringRedshift copy command options
copy_columns stringRedshift columns the copy command targets
domain_arn stringElasticsearch or OpenSearch domain ARN
index_name stringElasticsearch or OpenSearch index name
type_name stringElasticsearch or OpenSearch type name
index_rotation_period stringHow often the index name is rotated
collection_endpoint stringOpenSearch Serverless collection endpoint
hec_endpoint stringSplunk HTTP event collector endpoint
hec_endpoint_type stringSplunk HTTP event collector endpoint type
url stringHTTP endpoint URL
name stringHTTP endpoint name
account_url stringSnowflake account URL
user stringSnowflake user
catalog_arn stringIceberg catalog ARN
warehouse_location stringIceberg warehouse location
tables string[]Iceberg destination tables