Chapter 28. AWS Kinesis Firehose Component Available as of Camel version 2.19 The Kinesis Firehose component supports sending messages to Amazon Kinesis Firehose service. Prerequisites You must have a valid Amazon Web Services developer account, and be signed up to use Amazon Kinesis Firehose. More information are available at AWS Kinesis Firehose 28.1. URI Format aws-kinesis-firehose://delivery-stream-name[?options] The stream needs to be created prior to it being used. You can append query options to the URI in the following format, ?options=value&option2=value&... 28.2. URI Options The AWS Kinesis Firehose component supports 5 options, which are listed below. Name Description Default Type configuration (advanced) The AWS Kinesis Firehose default configuration KinesisFirehose Configuration accessKey (producer) Amazon AWS Access Key String secretKey (producer) Amazon AWS Secret Key String region (producer) Amazon AWS Region String resolveProperty Placeholders (advanced) Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. true boolean The AWS Kinesis Firehose endpoint is configured using URI syntax: with the following path and query parameters: 28.2.1. Path Parameters (1 parameters): Name Description Default Type streamName Required Name of the stream String 28.2.2. Query Parameters (7 parameters): Name Description Default Type amazonKinesisFirehoseClient (producer) Amazon Kinesis Firehose client to use for all requests for this endpoint AmazonKinesisFirehose proxyHost (producer) To define a proxy host when instantiating the DDBStreams client String proxyPort (producer) To define a proxy port when instantiating the DDBStreams client Integer region (producer) The region in which Kinesis client needs to work String synchronous (advanced) Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). false boolean accessKey (security) Amazon AWS Access Key String secretKey (security) Amazon AWS Secret Key String 28.3. Spring Boot Auto-Configuration The component supports 12 options, which are listed below. Name Description Default Type camel.component.aws-kinesis-firehose.access-key Amazon AWS Access Key String camel.component.aws-kinesis-firehose.configuration.access-key Amazon AWS Access Key String camel.component.aws-kinesis-firehose.configuration.amazon-kinesis-firehose-client Amazon Kinesis Firehose client to use for all requests for this endpoint AmazonKinesisFirehose camel.component.aws-kinesis-firehose.configuration.proxy-host To define a proxy host when instantiating the DDBStreams client String camel.component.aws-kinesis-firehose.configuration.proxy-port To define a proxy port when instantiating the DDBStreams client Integer camel.component.aws-kinesis-firehose.configuration.region The region in which Kinesis client needs to work String camel.component.aws-kinesis-firehose.configuration.secret-key Amazon AWS Secret Key String camel.component.aws-kinesis-firehose.configuration.stream-name Name of the stream String camel.component.aws-kinesis-firehose.enabled Enable aws-kinesis-firehose component true Boolean camel.component.aws-kinesis-firehose.region Amazon AWS Region String camel.component.aws-kinesis-firehose.resolve-property-placeholders Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. true Boolean camel.component.aws-kinesis-firehose.secret-key Amazon AWS Secret Key String Required Kinesis Firehose component options You have to provide the amazonKinesisClient in the Registry with proxies and relevant credentials configured. 28.4. Usage 28.4.1. Amazon Kinesis Firehose configuration You will need to create an instance of AmazonKinesisClient and bind it to the registry ClientConfiguration clientConfiguration = new ClientConfiguration(); clientConfiguration.setProxyHost("http://myProxyHost"); clientConfiguration.setProxyPort(8080); Region region = Region.getRegion(Regions.fromName(region)); region.createClient(AmazonKinesisClient.class, null, clientConfiguration); // the 'null' here is the AWSCredentialsProvider which defaults to an instance of DefaultAWSCredentialsProviderChain registry.bind("kinesisFirehoseClient", client); You then have to reference the AmazonKinesisFirehoseClient in the amazonKinesisFirehoseClient URI option. from("aws-kinesis-firehose://mykinesisdeliverystream?amazonKinesisFirehoseClient=#kinesisClient") .to("log:out?showAll=true"); 28.4.2. Providing AWS Credentials It is recommended that the credentials are obtained by using the DefaultAWSCredentialsProviderChain that is the default when creating a new ClientConfiguration instance, however, a different AWSCredentialsProvider can be specified when calling createClient(... ). 28.4.3. Message headers set by the Kinesis producer on successful storage of a Record Header Type Description CamelAwsKinesisFirehoseRecordId String The record ID, as defined in Response Syntax 28.5. Dependencies Maven users will need to add the following dependency to their pom.xml. pom.xml <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-aws</artifactId> <version>USD{camel-version}</version> </dependency> where USD{camel-version } must be replaced by the actual version of Camel (2.19 or higher). 28.6. See Also Configuring Camel Component Endpoint Getting Started AWS Component

Commands:
aws-kinesis-firehose://delivery-stream-name[?options]
aws-kinesis-firehose:streamName
ClientConfiguration clientConfiguration = new ClientConfiguration(); clientConfiguration.setProxyHost("http://myProxyHost"); clientConfiguration.setProxyPort(8080); Region region = Region.getRegion(Regions.fromName(region)); region.createClient(AmazonKinesisClient.class, null, clientConfiguration); // the 'null' here is the AWSCredentialsProvider which defaults to an instance of DefaultAWSCredentialsProviderChain registry.bind("kinesisFirehoseClient", client);
from("aws-kinesis-firehose://mykinesisdeliverystream?amazonKinesisFirehoseClient=#kinesisClient") .to("log:out?showAll=true");
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-aws</artifactId> <version>USD{camel-version}</version> </dependency>