// kafka-connector options: START
[[camel-aws-s3-kafka-connector-source]]
= camel-aws-s3-kafka-connector source configuration

When using camel-aws-s3-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel.kafkaconnector</groupId>
  <artifactId>camel-aws-s3-kafka-connector</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel Kafka connector version -->
</dependency>
----


The camel-aws-s3 source connector supports 54 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Priority
| *camel.source.path.bucketNameOr Arn* | Bucket name or ARN | null | ConfigDef.Importance.HIGH
| *camel.source.endpoint.amazonS3 Client* | Reference to a com.amazonaws.services.s3.AmazonS3 in the registry. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.auto CreateBucket* | Setting the autocreation of the bucket | true | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.path StyleAccess* | Whether or not the S3 client should use path style access | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.policy* | The policy for this queue to set in the com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.proxy Host* | To define a proxy host when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.proxy Port* | Specify a proxy port to be used inside the client definition. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.proxy Protocol* | To define a proxy protocol when instantiating the S3 client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.region* | The region in which S3 client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.useIAM Credentials* | Set whether the S3 client should expect to load credentials on an EC2 instance or to expect static credentials to be passed in. | false | ConfigDef.Importance.MEDIUM
| * camel.source.endpoint.encryption Materials* | The encryption materials to use in case of Symmetric/Asymmetric client usage | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.use Encryption* | Define if encryption must be used or not | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.bridge ErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.delete AfterRead* | Delete objects from S3 after they have been retrieved. The delete is only performed if the Exchange is committed. If a rollback occurs, the object is not deleted. If this option is false, then the same objects will be retrieve over and over again on the polls. Therefore you need to use the Idempotent Consumer EIP in the route to filter out duplicates. You can filter using the S3Constants#BUCKET_NAME and S3Constants#KEY headers, or only the S3Constants#KEY header. | true | ConfigDef.Importance.MEDIUM
| * camel.source.endpoint.delimiter* | The delimiter which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.fileName* | To get the object from the bucket with the given file name | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.include Body* | If it is true, the exchange body will be set to a stream to the contents of the file. If false, the headers will be set with the S3 object metadata, but the body will be null. This option is strongly related to autocloseBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically. | true | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.max Connections* | Set the maxConnections parameter in the S3 client configuration | 60 | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.max MessagesPerPoll* | Gets the maximum number of messages as a limit to poll at each polling. Gets the maximum number of messages as a limit to poll at each polling. The default value is 10. Use 0 or a negative number to set it as unlimited. | 10 | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.prefix* | The prefix which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.send EmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
| * camel.source.endpoint.autoclose Body* | If this option is true and includeBody is true, then the S3Object.close() method will be called on exchange completion. This option is strongly related to includeBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically. | true | ConfigDef.Importance.MEDIUM
| * camel.source.endpoint.exception Handler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.exchange Pattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.poll Strategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.basic PropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
| * camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
| * camel.source.endpoint.accelerate ModeEnabled* | Define if Accelerate Mode enabled is true or false | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.chunked EncodingDisabled* | Define if disabled Chunked Encoding is true or false | false | ConfigDef.Importance.MEDIUM
| * camel.source.endpoint.dualstack Enabled* | Define if Dualstack enabled is true or false | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.force GlobalBucketAccessEnabled* | Define if Force Global Bucket Access enabled is true or false | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.payload SigningEnabled* | Define if Payload Signing enabled is true or false | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.backoff ErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.backoff IdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.backoff Multiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.initial Delay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.repeat Count* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.run LoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
| * camel.source.endpoint.scheduled ExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
| * camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
| * camel.source.endpoint.scheduler Properties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.start Scheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.useFixed Delay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.access Key* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.secret Key* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
| *camel.component.aws-s3.access Key* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
| *camel.component.aws-s3.region* | The region where the bucket is located. This option is used in the com.amazonaws.services.s3.model.CreateBucketRequest. | null | ConfigDef.Importance.MEDIUM
| *camel.component.aws-s3.secret Key* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
| *camel.component.aws-s3.bridge ErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
| *camel.component.aws-s3.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
| * camel.component.aws-s3.configuration* | The AWS S3 default configuration | null | ConfigDef.Importance.MEDIUM
|===
// kafka-connector options: END

== Examples

Here is an example of configuration of the source connector

[source,bash]
--------------------------------------------------------------------------------
name=CamelAWSS3SourceConnector
connector.class=org.apache.camel.kafkaconnector.awss3.CamelAwss3SourceConnector
key.converter=org.apache.kafka.connect.storage.StringConverter
value.converter=org.apache.camel.kafkaconnector.awss3.converters.S3ObjectConverter

camel.source.maxPollDuration=10000

camel.source.kafka.topic=mytopic

camel.source.url=aws-s3://camel-kafka-connector?autocloseBody=false

camel.component.aws-s3.access-key=xxxx
camel.component.aws-s3.secret-key=yyyy
camel.component.aws-s3.region=EU_WEST_1
--------------------------------------------------------------------------------

In this example we are polling the bucket camel-kafka-connector as source.
