Firehose Stream
Sync Type: Streaming
Overview
Receives data via Amazon Data Firehose HTTP endpoint delivery. This is a generic receiver that accepts any data sent through an Amazon Data Firehose stream configured with an HTTP endpoint destination. Unlike the CloudWatch Logs Stream input, this input is not limited to CloudWatch data — it can receive any vendor's data via Firehose.
The input automatically handles:
- Base64 decoding of records
- Optional gzip decompression
- JSON data pass-through
- Non-JSON data wrapping in an envelope with Firehose metadata
Requirements
- An AWS account with Amazon Data Firehose
- A Monad organization API key with
pipeline:data:writepermission - AWS permissions to create Amazon Data Firehose delivery stream
- Ability to configure Firehose to send data to an HTTP endpoint
Setup Instructions
Step 1: Create the Monad Pipeline
- In the Monad platform, create a new pipeline with the Firehose Stream input
- Note the Pipeline ID from the pipeline settings — you'll need this for the Firehose configuration
Step 2: Create a Monad API Key
- In the Monad platform, navigate to Settings > API Keys
- Click Create new API key
- Give it a descriptive name (e.g., "AWS Firehose Receiver")
- Ensure the API key has the
pipeline:data:writepermission (included in Contributor and System Administrator roles) - Copy and securely store the API key value — it won't be visible again
Step 3: Create an Amazon Data Firehose Delivery Stream
- Navigate to the Amazon Data Firehose console in AWS
- Click Create Firehose stream
- Configure the stream:
- Source: Select the source for your data (Direct PUT, Kinesis Data Stream, etc.)
- Destination: Select
HTTP Endpoint
- Configure the HTTP endpoint destination:
- HTTP endpoint URL:
https://app.monad.com/api/v2/http/send/{PIPELINE_ID} - Replace
{PIPELINE_ID}with your Monad pipeline ID - Access key: Enter your Monad API key (this is sent as the
X-Amz-Firehose-Access-Keyheader) - Content encoding: Select
GZIP(recommended for reduced bandwidth)
- HTTP endpoint URL:
- Configure buffering hints:
- Buffer size: 1-5 MiB (recommended: 1 MiB for lower latency)
- Buffer interval: 60-300 seconds (recommended: 60 seconds for near real-time)
- Configure backup settings as needed
- Create the delivery stream
Step 4: Start Sending Data
Configure your data source (whether Kinesis stream, application, or other source) to put records into the Firehose delivery stream. Records will be automatically forwarded to your Monad pipeline.
Configuration
This input requires no configuration in Monad beyond creating the pipeline. All configuration is done on the AWS side.
Settings
| Setting | Type | Required | Description |
|---|---|---|---|
| None | - | - | No settings required |
Secrets
| Secret | Type | Required | Description |
|---|---|---|---|
| None | - | - | No secrets required |
Authentication
Authentication is handled via the Monad API key that you configure in the Firehose HTTP endpoint destination. The API key is sent by Firehose in the X-Amz-Firehose-Access-Key header.
API Key Requirements:
- Must be an organization API key (not a personal API key)
- Must have the
pipeline:data:writepermission
Data Format
JSON Data
If a record contains valid JSON, it is passed through unchanged:
{
"event": "user_login",
"user_id": "12345",
"timestamp": 1706540800000
}
Non-JSON Data
If a record contains non-JSON data (plain text, binary, etc.), it is automatically wrapped in an envelope with Firehose metadata:
{
"data": "plain text log line",
"firehoseRequestId": "firehose-req-xyz789",
"firehoseTimestamp": 1706540799000
}
Fields
| Field | Type | Description |
|---|---|---|
data | string | The record data (for non-JSON records only) |
firehoseRequestId | string | Unique identifier for the Firehose request |
firehoseTimestamp | integer | Firehose delivery timestamp in Unix milliseconds |
Rate Limits
Amazon Data Firehose has the following service-level rate limits:
| Scope | Limit | Notes |
|---|---|---|
| Records per second | 5,000 records/sec | Per delivery stream |
| Data throughput | 5 MB/sec | Per delivery stream |
You can request limit increases through AWS Support. The limits apply per Firehose delivery stream, not per HTTP endpoint destination.
Source: AWS Kinesis Data Firehose Quotas and Limits
Troubleshooting
Common Issues
Issue: Data is not appearing in Monad
Possible Causes:
- Firehose delivery stream is not active
- API key is invalid or lacks permissions
- HTTP endpoint URL is incorrect
- Network connectivity issues
Solution:
- Check the Firehose stream monitoring metrics in the AWS console
- Verify the API key has
pipeline:data:writepermission - Confirm the endpoint URL matches
https://app.monad.com/api/v2/http/send/{PIPELINE_ID} - Check AWS VPC and security group configurations if using VPC endpoints
Issue: Firehose shows delivery failures
Possible Causes:
- Incorrect HTTP endpoint URL
- Invalid API key in the access key field
- Firehose cannot reach the Monad endpoint
Solution:
- Verify the endpoint URL is correct and accessible
- Regenerate and update the API key in the Firehose configuration
Issue: Records are being wrapped unexpectedly
If your records are being wrapped in the envelope format (with data, firehoseRequestId, and firehoseTimestamp fields), it means the input detected non-JSON data. Ensure your data is valid JSON if you want it to pass through unchanged.
Related Articles
- Amazon Data Firehose HTTP Endpoint Destinations
- Amazon Data Firehose API Reference
- Amazon Data Firehose Quotas and Limits
Sample Record
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": 1706540800000,
"event_type": "log",
"source": "application",
"data": {
"message": "Event processed",
"level": "INFO",
"correlation_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}