DeliveryStream
The DeliveryStream resource allows you to create and configure AWS KinesisFirehose DeliveryStreams for streaming data to various destinations.
Minimal Example
Section titled “Minimal Example”Create a basic KinesisFirehose delivery stream with standard S3 destination configuration.
import AWS from "alchemy/aws/control";
const deliveryStream = await AWS.KinesisFirehose.DeliveryStream("basicDeliveryStream", { DeliveryStreamName: "myDataStream", DeliveryStreamType: "DirectPut", S3DestinationConfiguration: { BucketARN: "arn:aws:s3:::my-data-bucket", RoleARN: "arn:aws:iam::123456789012:role/firehose_delivery_role", Prefix: "data/", BufferingHints: { SizeInMBs: 5, IntervalInSeconds: 300 } }});
Advanced Configuration
Section titled “Advanced Configuration”Configure a delivery stream with a Redshift destination and additional settings for buffering and compression.
const advancedDeliveryStream = await AWS.KinesisFirehose.DeliveryStream("advancedDeliveryStream", { DeliveryStreamName: "myAdvancedDataStream", DeliveryStreamType: "Redshift", RedshiftDestinationConfiguration: { ClusterJDBCURL: "jdbc:redshift://redshift-cluster-1.abc123xyz456.us-west-2.redshift.amazonaws.com:5439/mydatabase", RoleARN: "arn:aws:iam::123456789012:role/firehose_delivery_role", Username: "myRedshiftUser", Password: alchemy.secret(process.env.REDSHIFT_PASSWORD!), Database: "mydatabase", Table: "my_table", CopyCommand: { DataFormat: "JSON", CopyOptions: "json 'auto'" }, BufferingHints: { SizeInMBs: 10, IntervalInSeconds: 600 } }});
Elasticsearch Destination
Section titled “Elasticsearch Destination”Create a delivery stream that sends data to an Amazon Elasticsearch Service (OpenSearch) destination with specific index settings.
const esDeliveryStream = await AWS.KinesisFirehose.DeliveryStream("esDeliveryStream", { DeliveryStreamName: "myESDataStream", DeliveryStreamType: "Elasticsearch", ElasticsearchDestinationConfiguration: { DomainARN: "arn:aws:es:us-west-2:123456789012:domain/my-elasticsearch-domain", RoleARN: "arn:aws:iam::123456789012:role/firehose_delivery_role", IndexName: "my-index", TypeName: "_doc", IndexRotationPeriod: "OneHour", BufferingHints: { SizeInMBs: 5, IntervalInSeconds: 300 }, RetryOptions: { DurationInSeconds: 300 } }});
Splunk Destination
Section titled “Splunk Destination”Configure a delivery stream to send data to a Splunk HTTP Event Collector endpoint.
const splunkDeliveryStream = await AWS.KinesisFirehose.DeliveryStream("splunkDeliveryStream", { DeliveryStreamName: "mySplunkDataStream", DeliveryStreamType: "Splunk", SplunkDestinationConfiguration: { HECEndpoint: "https://splunk-server:8088", HECToken: alchemy.secret(process.env.SPLUNK_HEC_TOKEN!), Index: "main", Source: "myApp", SourceType: "_json", S3BackupMode: "AllEvents", S3DestinationConfiguration: { BucketARN: "arn:aws:s3:::my-splunk-backup", RoleARN: "arn:aws:iam::123456789012:role/firehose_delivery_role", Prefix: "backup/", BufferingHints: { SizeInMBs: 5, IntervalInSeconds: 300 } } }});