You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/02/17 06:24:42 UTC

[camel] 13/31: CAMEL-15964 create camel-google-storage component

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 813e65578de0f92ee45f31ee08ba92b47e06ee12
Author: Raffaele Marcello <ma...@gmail.com>
AuthorDate: Sat Feb 13 19:21:20 2021 +0100

    CAMEL-15964 create camel-google-storage component
---
 .../catalog/docs/google-storage-component.adoc     |  41 +++---
 .../GoogleCloudStorageComponentConfigurer.java     |   6 +
 .../GoogleCloudStorageEndpointConfigurer.java      |   6 +
 .../GoogleCloudStorageEndpointUriFactory.java      |   3 +-
 .../component/google/storage/google-storage.json   |  20 +--
 .../src/main/docs/google-storage-component.adoc    |  37 +++---
 .../GoogleCloudStorageComponentConfiguration.java  |  40 ++++--
 .../google/storage/GoogleCloudStorageEndpoint.java |   9 +-
 .../dsl/GoogleStorageComponentBuilderFactory.java  |  29 ++++-
 .../builder/endpoint/StaticEndpointBuilders.java   |   4 +-
 .../GoogleCloudStorageEndpointBuilderFactory.java  | 137 ++++++++++++++++++---
 .../ROOT/pages/google-storage-component.adoc       |  41 +++---
 12 files changed, 259 insertions(+), 114 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/google-storage-component.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/google-storage-component.adoc
index 7e9d166..8e5250c 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/google-storage-component.adoc
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/google-storage-component.adoc
@@ -47,16 +47,11 @@ String endpoint = "google-storage://myCamelBucket?serviceAccountKey=/home/user/D
 
 Or by providing the path to the GCP credentials file location:
 
-[source,text]
---------------------------------------------------------
-export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"
---------------------------------------------------------
-
-or for windows:
+Provide authentication credentials to your application code by setting the environment variable `GOOGLE_APPLICATION_CREDENTIALS` :
 
 [source,text]
 --------------------------------------------------------
-$Env:GOOGLE_APPLICATION_CREDENTIALS = "/home/user/Downloads/my-key.json"
+export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"
 --------------------------------------------------------
 
 
@@ -67,15 +62,15 @@ $Env:GOOGLE_APPLICATION_CREDENTIALS = "/home/user/Downloads/my-key.json"
 google-storage://bucketNameOrArn?[options]
 --------------------------------------------------------
 
-The bucket will be created if it don't already exists. +
- You can append query options to the URI in the following format,
+By default the bucket will be created if it don't already exists. +
+You can append query options to the URI in the following format,
 ?options=value&option2=value&...
 
-For example in order to read file `hello.txt` from bucket `helloBucket`, use the following snippet:
+For example in order to read file `hello.txt` from bucket `myCamelBucket`, use the following snippet:
 
 [source,java]
 --------------------------------------------------------------------------------
-from("google-storage://myCamelBucket?serviceAccountKey=/home/user/Downloads/my-key.json&prefix=hello.txt")
+from("google-storage://myCamelBucket?serviceAccountKey=/home/user/Downloads/my-key.json&objectName=hello.txt")
   .to("file:/var/downloaded");
 --------------------------------------------------------------------------------
 
@@ -83,7 +78,7 @@ from("google-storage://myCamelBucket?serviceAccountKey=/home/user/Downloads/my-k
 == URI Options
 
 // component options: START
-The Google Storage component supports 15 options, which are listed below.
+The Google Storage component supports 16 options, which are listed below.
 
 
 
@@ -92,17 +87,18 @@ The Google Storage component supports 15 options, which are listed below.
 | Name | Description | Default | Type
 | *autoCreateBucket* (common) | Setting the autocreation of the bucket bucketName. | true | boolean
 | *configuration* (common) | The component configuration |  | GoogleCloudStorageComponentConfiguration
-| *serviceAccountKey* (common) | Service account key |  | String
-| *storageClient* (common) | Set strage client |  | Storage
+| *serviceAccountKey* (common) | Service account key to authenticate an application as a service account |  | String
+| *storageClass* (common) | The Cloud Storage class to use when creating the new buckets | STANDARD | StorageClass
+| *storageClient* (common) | The storage client |  | Storage
 | *storageLocation* (common) | The Cloud Storage location to use when creating the new buckets | US-EAST1 | String
 | *bridgeErrorHandler* (consumer) | 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 | boolean
 | *deleteAfterRead* (consumer) | Delete objects from the bucket 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. | true | boolean
 | *destinationBucket* (consumer) | Define the destination bucket where an object must be moved when moveAfterRead is set to true. |  | String
-| *includeBody* (consumer) | If it is true, the Object exchange will be consumed and put into the body and closed. If false the Object stream will be put raw into the body and the headers will be set with the object metadata. | true | boolean
+| *includeBody* (consumer) | If it is true, the Object exchange will be consumed and put into the body. If false the Object stream will be put raw into the body and the headers will be set with the object metadata. | true | boolean
 | *includeFolders* (consumer) | If it is true, the folders/directories will be consumed. If it is false, they will be ignored, and Exchanges will not be created for those | true | boolean
 | *moveAfterRead* (consumer) | Move objects from the origin bucket to a different bucket after they have been retrieved. To accomplish the operation the destinationBucket option must be set. The copy bucket operation is only performed if the Exchange is committed. If a rollback occurs, the object is not moved. | false | boolean
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *objectName* (producer) | Object name |  | String
+| *objectName* (producer) | The Object name inside the bucket |  | String
 | *operation* (producer) | Set the operation for the producer. There are 7 enums and the value can be one of: copyObject, listObjects, deleteObject, deleteBucket, listBuckets, getObject, createDownloadLink |  | GoogleCloudStorageComponentOperations
 | *autowiredEnabled* (advanced) | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
 |===
@@ -123,24 +119,25 @@ with the following path and query parameters:
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-| *bucketName* | *Required* Bucket name |  | String
+| *bucketName* | *Required* Bucket name or ARN |  | String
 |===
 
 
-=== Query Parameters (31 parameters):
+=== Query Parameters (32 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
 | *autoCreateBucket* (common) | Setting the autocreation of the bucket bucketName. | true | boolean
-| *serviceAccountKey* (common) | Service account key |  | String
-| *storageClient* (common) | Set strage client |  | Storage
+| *serviceAccountKey* (common) | Service account key to authenticate an application as a service account |  | String
+| *storageClass* (common) | The Cloud Storage class to use when creating the new buckets | STANDARD | StorageClass
+| *storageClient* (common) | The storage client |  | Storage
 | *storageLocation* (common) | The Cloud Storage location to use when creating the new buckets | US-EAST1 | String
 | *bridgeErrorHandler* (consumer) | 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 | boolean
 | *deleteAfterRead* (consumer) | Delete objects from the bucket 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. | true | boolean
 | *destinationBucket* (consumer) | Define the destination bucket where an object must be moved when moveAfterRead is set to true. |  | String
-| *includeBody* (consumer) | If it is true, the Object exchange will be consumed and put into the body and closed. If false the Object stream will be put raw into the body and the headers will be set with the object metadata. | true | boolean
+| *includeBody* (consumer) | If it is true, the Object exchange will be consumed and put into the body. If false the Object stream will be put raw into the body and the headers will be set with the object metadata. | true | boolean
 | *includeFolders* (consumer) | If it is true, the folders/directories will be consumed. If it is false, they will be ignored, and Exchanges will not be created for those | true | boolean
 | *moveAfterRead* (consumer) | Move objects from the origin bucket to a different bucket after they have been retrieved. To accomplish the operation the destinationBucket option must be set. The copy bucket operation is only performed if the Exchange is committed. If a rollback occurs, the object is not moved. | false | boolean
 | *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
@@ -148,7 +145,7 @@ with the following path and query parameters:
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. There are 3 enums and the value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
 | *pollStrategy* (consumer) | 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. |  | PollingConsumerPollStrategy
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *objectName* (producer) | Object name |  | String
+| *objectName* (producer) | The Object name inside the bucket |  | String
 | *operation* (producer) | Set the operation for the producer. There are 7 enums and the value can be one of: copyObject, listObjects, deleteObject, deleteBucket, listBuckets, getObject, createDownloadLink |  | GoogleCloudStorageComponentOperations
 | *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
 | *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
diff --git a/components/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfigurer.java b/components/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfigurer.java
index 649f85b..951b4cf 100644
--- a/components/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfigurer.java
+++ b/components/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfigurer.java
@@ -52,6 +52,8 @@ public class GoogleCloudStorageComponentConfigurer extends PropertyConfigurerSup
         case "operation": getOrCreateConfiguration(target).setOperation(property(camelContext, org.apache.camel.component.google.storage.GoogleCloudStorageComponentOperations.class, value)); return true;
         case "serviceaccountkey":
         case "serviceAccountKey": getOrCreateConfiguration(target).setServiceAccountKey(property(camelContext, java.lang.String.class, value)); return true;
+        case "storageclass":
+        case "storageClass": getOrCreateConfiguration(target).setStorageClass(property(camelContext, com.google.cloud.storage.StorageClass.class, value)); return true;
         case "storageclient":
         case "storageClient": getOrCreateConfiguration(target).setStorageClient(property(camelContext, com.google.cloud.storage.Storage.class, value)); return true;
         case "storagelocation":
@@ -87,6 +89,8 @@ public class GoogleCloudStorageComponentConfigurer extends PropertyConfigurerSup
         case "operation": return org.apache.camel.component.google.storage.GoogleCloudStorageComponentOperations.class;
         case "serviceaccountkey":
         case "serviceAccountKey": return java.lang.String.class;
+        case "storageclass":
+        case "storageClass": return com.google.cloud.storage.StorageClass.class;
         case "storageclient":
         case "storageClient": return com.google.cloud.storage.Storage.class;
         case "storagelocation":
@@ -123,6 +127,8 @@ public class GoogleCloudStorageComponentConfigurer extends PropertyConfigurerSup
         case "operation": return getOrCreateConfiguration(target).getOperation();
         case "serviceaccountkey":
         case "serviceAccountKey": return getOrCreateConfiguration(target).getServiceAccountKey();
+        case "storageclass":
+        case "storageClass": return getOrCreateConfiguration(target).getStorageClass();
         case "storageclient":
         case "storageClient": return getOrCreateConfiguration(target).getStorageClient();
         case "storagelocation":
diff --git a/components/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointConfigurer.java b/components/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointConfigurer.java
index edb8a63..105ba9a 100644
--- a/components/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointConfigurer.java
+++ b/components/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointConfigurer.java
@@ -71,6 +71,8 @@ public class GoogleCloudStorageEndpointConfigurer extends PropertyConfigurerSupp
         case "serviceAccountKey": target.getConfiguration().setServiceAccountKey(property(camelContext, java.lang.String.class, value)); return true;
         case "startscheduler":
         case "startScheduler": target.setStartScheduler(property(camelContext, boolean.class, value)); return true;
+        case "storageclass":
+        case "storageClass": target.getConfiguration().setStorageClass(property(camelContext, com.google.cloud.storage.StorageClass.class, value)); return true;
         case "storageclient":
         case "storageClient": target.getConfiguration().setStorageClient(property(camelContext, com.google.cloud.storage.Storage.class, value)); return true;
         case "storagelocation":
@@ -136,6 +138,8 @@ public class GoogleCloudStorageEndpointConfigurer extends PropertyConfigurerSupp
         case "serviceAccountKey": return java.lang.String.class;
         case "startscheduler":
         case "startScheduler": return boolean.class;
+        case "storageclass":
+        case "storageClass": return com.google.cloud.storage.StorageClass.class;
         case "storageclient":
         case "storageClient": return com.google.cloud.storage.Storage.class;
         case "storagelocation":
@@ -202,6 +206,8 @@ public class GoogleCloudStorageEndpointConfigurer extends PropertyConfigurerSupp
         case "serviceAccountKey": return target.getConfiguration().getServiceAccountKey();
         case "startscheduler":
         case "startScheduler": return target.isStartScheduler();
+        case "storageclass":
+        case "storageClass": return target.getConfiguration().getStorageClass();
         case "storageclient":
         case "storageClient": return target.getConfiguration().getStorageClient();
         case "storagelocation":
diff --git a/components/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointUriFactory.java b/components/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointUriFactory.java
index a243bfb..31332e9 100644
--- a/components/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointUriFactory.java
+++ b/components/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointUriFactory.java
@@ -20,13 +20,14 @@ public class GoogleCloudStorageEndpointUriFactory extends org.apache.camel.suppo
     private static final Set<String> PROPERTY_NAMES;
     private static final Set<String> SECRET_PROPERTY_NAMES;
     static {
-        Set<String> props = new HashSet<>(32);
+        Set<String> props = new HashSet<>(33);
         props.add("backoffMultiplier");
         props.add("bucketName");
         props.add("destinationBucket");
         props.add("storageLocation");
         props.add("initialDelay");
         props.add("scheduler");
+        props.add("storageClass");
         props.add("bridgeErrorHandler");
         props.add("useFixedDelay");
         props.add("runLoggingLevel");
diff --git a/components/camel-google-storage/src/generated/resources/org/apache/camel/component/google/storage/google-storage.json b/components/camel-google-storage/src/generated/resources/org/apache/camel/component/google/storage/google-storage.json
index f8578d8..9f6761f 100644
--- a/components/camel-google-storage/src/generated/resources/org/apache/camel/component/google/storage/google-storage.json
+++ b/components/camel-google-storage/src/generated/resources/org/apache/camel/component/google/storage/google-storage.json
@@ -24,30 +24,32 @@
   "componentProperties": {
     "autoCreateBucket": { "kind": "property", "displayName": "Auto Create Bucket", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Setting the autocreation of the bucket bucketName." },
     "configuration": { "kind": "property", "displayName": "Configuration", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "The component configuration" },
-    "serviceAccountKey": { "kind": "property", "displayName": "Service Account Key", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Service account key" },
-    "storageClient": { "kind": "property", "displayName": "Storage Client", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.google.cloud.storage.Storage", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Set strage client" },
+    "serviceAccountKey": { "kind": "property", "displayName": "Service Account Key", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Service account key to authenticate an application as a service account" },
+    "storageClass": { "kind": "property", "displayName": "Storage Class", "group": "common", "label": "common", "required": false, "type": "object", "javaType": "com.google.cloud.storage.StorageClass", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "STANDARD", "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "The Cloud Storage class to use when creat [...]
+    "storageClient": { "kind": "property", "displayName": "Storage Client", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.google.cloud.storage.Storage", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "The storage client" },
     "storageLocation": { "kind": "property", "displayName": "Storage Location", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "US-EAST1", "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "The Cloud Storage location to use when creating the new  [...]
     "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "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 me [...]
     "deleteAfterRead": { "kind": "property", "displayName": "Delete After Read", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Delete objects from the bucket after they have been retrieved. Th [...]
     "destinationBucket": { "kind": "property", "displayName": "Destination Bucket", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Define the destination bucket where an object must be moved when moveAfterRe [...]
-    "includeBody": { "kind": "property", "displayName": "Include Body", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "If it is true, the Object exchange will be consumed and put into the body  [...]
+    "includeBody": { "kind": "property", "displayName": "Include Body", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "If it is true, the Object exchange will be consumed and put into the body. [...]
     "includeFolders": { "kind": "property", "displayName": "Include Folders", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "If it is true, the folders\/directories will be consumed. If it is f [...]
     "moveAfterRead": { "kind": "property", "displayName": "Move After Read", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Move objects from the origin bucket to a different bucket after they [...]
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during star [...]
-    "objectName": { "kind": "property", "displayName": "Object Name", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Object name" },
+    "objectName": { "kind": "property", "displayName": "Object Name", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "The Object name inside the bucket" },
     "operation": { "kind": "property", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentOperations", "enum": [ "copyObject", "listObjects", "deleteObject", "deleteBucket", "listBuckets", "getObject", "createDownloadLink" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.Googl [...]
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...]
   },
   "properties": {
-    "bucketName": { "kind": "path", "displayName": "Bucket Name", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Bucket name" },
+    "bucketName": { "kind": "path", "displayName": "Bucket Name", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Bucket name or ARN" },
     "autoCreateBucket": { "kind": "parameter", "displayName": "Auto Create Bucket", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Setting the autocreation of the bucket bucketName." },
-    "serviceAccountKey": { "kind": "parameter", "displayName": "Service Account Key", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Service account key" },
-    "storageClient": { "kind": "parameter", "displayName": "Storage Client", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.google.cloud.storage.Storage", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Set strage client" },
+    "serviceAccountKey": { "kind": "parameter", "displayName": "Service Account Key", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Service account key to authenticate an application as a service account" },
+    "storageClass": { "kind": "parameter", "displayName": "Storage Class", "group": "common", "label": "common", "required": false, "type": "object", "javaType": "com.google.cloud.storage.StorageClass", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "STANDARD", "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "The Cloud Storage class to use when crea [...]
+    "storageClient": { "kind": "parameter", "displayName": "Storage Client", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.google.cloud.storage.Storage", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "The storage client" },
     "storageLocation": { "kind": "parameter", "displayName": "Storage Location", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "US-EAST1", "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "The Cloud Storage location to use when creating the new [...]
     "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "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 m [...]
     "deleteAfterRead": { "kind": "parameter", "displayName": "Delete After Read", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Delete objects from the bucket after they have been retrieved. T [...]
     "destinationBucket": { "kind": "parameter", "displayName": "Destination Bucket", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Define the destination bucket where an object must be moved when moveAfterR [...]
-    "includeBody": { "kind": "parameter", "displayName": "Include Body", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "If it is true, the Object exchange will be consumed and put into the body [...]
+    "includeBody": { "kind": "parameter", "displayName": "Include Body", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "If it is true, the Object exchange will be consumed and put into the body [...]
     "includeFolders": { "kind": "parameter", "displayName": "Include Folders", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "If it is true, the folders\/directories will be consumed. If it is  [...]
     "moveAfterRead": { "kind": "parameter", "displayName": "Move After Read", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Move objects from the origin bucket to a different bucket after the [...]
     "sendEmptyMessageWhenIdle": { "kind": "parameter", "displayName": "Send Empty Message When Idle", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead." },
@@ -55,7 +57,7 @@
     "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
     "pollStrategy": { "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation  [...]
     "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during sta [...]
-    "objectName": { "kind": "parameter", "displayName": "Object Name", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "Object name" },
+    "objectName": { "kind": "parameter", "displayName": "Object Name", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration", "configurationField": "configuration", "description": "The Object name inside the bucket" },
     "operation": { "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.storage.GoogleCloudStorageComponentOperations", "enum": [ "copyObject", "listObjects", "deleteObject", "deleteBucket", "listBuckets", "getObject", "createDownloadLink" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.storage.Goog [...]
     "backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." },
     "backoffIdleThreshold": { "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." },
diff --git a/components/camel-google-storage/src/main/docs/google-storage-component.adoc b/components/camel-google-storage/src/main/docs/google-storage-component.adoc
index b40cd70..8e5250c 100644
--- a/components/camel-google-storage/src/main/docs/google-storage-component.adoc
+++ b/components/camel-google-storage/src/main/docs/google-storage-component.adoc
@@ -47,16 +47,11 @@ String endpoint = "google-storage://myCamelBucket?serviceAccountKey=/home/user/D
 
 Or by providing the path to the GCP credentials file location:
 
-[source,text]
---------------------------------------------------------
-export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"
---------------------------------------------------------
-
-or for windows:
+Provide authentication credentials to your application code by setting the environment variable `GOOGLE_APPLICATION_CREDENTIALS` :
 
 [source,text]
 --------------------------------------------------------
-$Env:GOOGLE_APPLICATION_CREDENTIALS = "/home/user/Downloads/my-key.json"
+export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"
 --------------------------------------------------------
 
 
@@ -67,8 +62,8 @@ $Env:GOOGLE_APPLICATION_CREDENTIALS = "/home/user/Downloads/my-key.json"
 google-storage://bucketNameOrArn?[options]
 --------------------------------------------------------
 
-The bucket will be created if it don't already exists. +
- You can append query options to the URI in the following format,
+By default the bucket will be created if it don't already exists. +
+You can append query options to the URI in the following format,
 ?options=value&option2=value&...
 
 For example in order to read file `hello.txt` from bucket `myCamelBucket`, use the following snippet:
@@ -83,7 +78,7 @@ from("google-storage://myCamelBucket?serviceAccountKey=/home/user/Downloads/my-k
 == URI Options
 
 // component options: START
-The Google Storage component supports 15 options, which are listed below.
+The Google Storage component supports 16 options, which are listed below.
 
 
 
@@ -92,17 +87,18 @@ The Google Storage component supports 15 options, which are listed below.
 | Name | Description | Default | Type
 | *autoCreateBucket* (common) | Setting the autocreation of the bucket bucketName. | true | boolean
 | *configuration* (common) | The component configuration |  | GoogleCloudStorageComponentConfiguration
-| *serviceAccountKey* (common) | Service account key |  | String
-| *storageClient* (common) | Set strage client |  | Storage
+| *serviceAccountKey* (common) | Service account key to authenticate an application as a service account |  | String
+| *storageClass* (common) | The Cloud Storage class to use when creating the new buckets | STANDARD | StorageClass
+| *storageClient* (common) | The storage client |  | Storage
 | *storageLocation* (common) | The Cloud Storage location to use when creating the new buckets | US-EAST1 | String
 | *bridgeErrorHandler* (consumer) | 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 | boolean
 | *deleteAfterRead* (consumer) | Delete objects from the bucket 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. | true | boolean
 | *destinationBucket* (consumer) | Define the destination bucket where an object must be moved when moveAfterRead is set to true. |  | String
-| *includeBody* (consumer) | If it is true, the Object exchange will be consumed and put into the body and closed. If false the Object stream will be put raw into the body and the headers will be set with the object metadata. | true | boolean
+| *includeBody* (consumer) | If it is true, the Object exchange will be consumed and put into the body. If false the Object stream will be put raw into the body and the headers will be set with the object metadata. | true | boolean
 | *includeFolders* (consumer) | If it is true, the folders/directories will be consumed. If it is false, they will be ignored, and Exchanges will not be created for those | true | boolean
 | *moveAfterRead* (consumer) | Move objects from the origin bucket to a different bucket after they have been retrieved. To accomplish the operation the destinationBucket option must be set. The copy bucket operation is only performed if the Exchange is committed. If a rollback occurs, the object is not moved. | false | boolean
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *objectName* (producer) | Object name |  | String
+| *objectName* (producer) | The Object name inside the bucket |  | String
 | *operation* (producer) | Set the operation for the producer. There are 7 enums and the value can be one of: copyObject, listObjects, deleteObject, deleteBucket, listBuckets, getObject, createDownloadLink |  | GoogleCloudStorageComponentOperations
 | *autowiredEnabled* (advanced) | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
 |===
@@ -123,24 +119,25 @@ with the following path and query parameters:
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-| *bucketName* | *Required* Bucket name |  | String
+| *bucketName* | *Required* Bucket name or ARN |  | String
 |===
 
 
-=== Query Parameters (31 parameters):
+=== Query Parameters (32 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
 | *autoCreateBucket* (common) | Setting the autocreation of the bucket bucketName. | true | boolean
-| *serviceAccountKey* (common) | Service account key |  | String
-| *storageClient* (common) | Set strage client |  | Storage
+| *serviceAccountKey* (common) | Service account key to authenticate an application as a service account |  | String
+| *storageClass* (common) | The Cloud Storage class to use when creating the new buckets | STANDARD | StorageClass
+| *storageClient* (common) | The storage client |  | Storage
 | *storageLocation* (common) | The Cloud Storage location to use when creating the new buckets | US-EAST1 | String
 | *bridgeErrorHandler* (consumer) | 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 | boolean
 | *deleteAfterRead* (consumer) | Delete objects from the bucket 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. | true | boolean
 | *destinationBucket* (consumer) | Define the destination bucket where an object must be moved when moveAfterRead is set to true. |  | String
-| *includeBody* (consumer) | If it is true, the Object exchange will be consumed and put into the body and closed. If false the Object stream will be put raw into the body and the headers will be set with the object metadata. | true | boolean
+| *includeBody* (consumer) | If it is true, the Object exchange will be consumed and put into the body. If false the Object stream will be put raw into the body and the headers will be set with the object metadata. | true | boolean
 | *includeFolders* (consumer) | If it is true, the folders/directories will be consumed. If it is false, they will be ignored, and Exchanges will not be created for those | true | boolean
 | *moveAfterRead* (consumer) | Move objects from the origin bucket to a different bucket after they have been retrieved. To accomplish the operation the destinationBucket option must be set. The copy bucket operation is only performed if the Exchange is committed. If a rollback occurs, the object is not moved. | false | boolean
 | *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
@@ -148,7 +145,7 @@ with the following path and query parameters:
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. There are 3 enums and the value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
 | *pollStrategy* (consumer) | 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. |  | PollingConsumerPollStrategy
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *objectName* (producer) | Object name |  | String
+| *objectName* (producer) | The Object name inside the bucket |  | String
 | *operation* (producer) | Set the operation for the producer. There are 7 enums and the value can be one of: copyObject, listObjects, deleteObject, deleteBucket, listBuckets, getObject, createDownloadLink |  | GoogleCloudStorageComponentOperations
 | *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
 | *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
diff --git a/components/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfiguration.java b/components/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfiguration.java
index e058a5a..737aeab 100644
--- a/components/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfiguration.java
+++ b/components/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfiguration.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.google.storage;
 
 import com.google.cloud.storage.Storage;
+import com.google.cloud.storage.StorageClass;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriParam;
@@ -26,24 +27,28 @@ import org.apache.camel.spi.UriPath;
 @UriParams
 public class GoogleCloudStorageComponentConfiguration implements Cloneable {
 
-    @UriPath(label = "common", description = "Bucket name")
+    @UriPath(label = "common", description = "Bucket name or ARN")
     @Metadata(required = true)
     private String bucketName;
 
-    @UriParam(label = "common", description = "Service account key")
+    @UriParam(label = "common", description = "Service account key to authenticate an application as a service account")
     private String serviceAccountKey;
 
     @UriParam(label = "producer",
               enums = "copyObject,listObjects,deleteObject,deleteBucket,listBuckets,getObject,createDownloadLink")
     private GoogleCloudStorageComponentOperations operation;
 
-    @UriParam(label = "producer", description = "Object name")
+    @UriParam(label = "producer", description = "The Object name inside the bucket")
     private String objectName;
 
     @UriParam(label = "common", defaultValue = "US-EAST1",
               description = "The Cloud Storage location to use when creating the new buckets")
     private String storageLocation;
 
+    @UriParam(label = "common", defaultValue = "STANDARD",
+              description = "The Cloud Storage class to use when creating the new buckets")
+    private StorageClass storageClass = StorageClass.STANDARD;
+
     @UriParam(label = "common", defaultValue = "true")
     private boolean autoCreateBucket = true;
 
@@ -94,16 +99,12 @@ public class GoogleCloudStorageComponentConfiguration implements Cloneable {
     }
 
     /**
-     * The bjectName (the file insisde the bucket)
+     * The ObjectName (the file insisde the bucket)
      */
     public void setObjectName(String objectName) {
         this.objectName = objectName;
     }
 
-    public Storage getStorageClient() {
-        return storageClient;
-    }
-
     public String getStorageLocation() {
         return storageLocation;
     }
@@ -116,8 +117,25 @@ public class GoogleCloudStorageComponentConfiguration implements Cloneable {
         this.storageLocation = storageLocation;
     }
 
+    public StorageClass getStorageClass() {
+        return storageClass;
+    }
+
+    /**
+     * The Cloud Storage class to use when creating the new buckets
+     * 
+     * @param storageClass
+     */
+    public void setStorageClass(StorageClass storageClass) {
+        this.storageClass = storageClass;
+    }
+
+    public Storage getStorageClient() {
+        return storageClient;
+    }
+
     /**
-     * Set strage client
+     * The storage client
      * 
      * @param storageClient
      */
@@ -200,8 +218,8 @@ public class GoogleCloudStorageComponentConfiguration implements Cloneable {
     }
 
     /**
-     * If it is true, the Object exchange will be consumed and put into the body and closed. If false the Object stream
-     * will be put raw into the body and the headers will be set with the object metadata.
+     * If it is true, the Object exchange will be consumed and put into the body. If false the Object stream will be put
+     * raw into the body and the headers will be set with the object metadata.
      */
     public void setIncludeBody(boolean includeBody) {
         this.includeBody = includeBody;
diff --git a/components/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpoint.java b/components/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpoint.java
index 011430d..677cd75 100644
--- a/components/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpoint.java
+++ b/components/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpoint.java
@@ -53,9 +53,6 @@ public class GoogleCloudStorageEndpoint extends ScheduledPollEndpoint {
 
     private static final Logger LOG = LoggerFactory.getLogger(GoogleCloudStorageEndpoint.class);
 
-    private static final String DEFAULT_LOCATION = "US-EAST1";
-    private static final StorageClass DEFAULT_STORAGE_CLASS = StorageClass.STANDARD;
-
     @UriParam
     private GoogleCloudStorageComponentConfiguration configuration;
 
@@ -98,11 +95,11 @@ public class GoogleCloudStorageEndpoint extends ScheduledPollEndpoint {
                     return;
                 } else {
                     // creates the new bucket because it doesn't exist yet
-                    final String location = configuration.getStorageLocation() != null
-                            ? configuration.getStorageLocation() : DEFAULT_LOCATION;
+                    final String location = configuration.getStorageLocation();
+                    final StorageClass storageClass = configuration.getStorageClass();
 
                     Builder bucketBuilder = BucketInfo.newBuilder(configuration.getBucketName())
-                            .setStorageClass(DEFAULT_STORAGE_CLASS)
+                            .setStorageClass(storageClass)
                             .setLocation(location);
                     BucketInfo bucketInfo = bucketBuilder.build();
                     bucket = storageClient.create(bucketInfo);
diff --git a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleStorageComponentBuilderFactory.java b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleStorageComponentBuilderFactory.java
index 51b4ad9..afcec5a 100644
--- a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleStorageComponentBuilderFactory.java
+++ b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleStorageComponentBuilderFactory.java
@@ -85,7 +85,8 @@ public interface GoogleStorageComponentBuilderFactory {
             return this;
         }
         /**
-         * Service account key.
+         * Service account key to authenticate an application as a service
+         * account.
          * 
          * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
@@ -100,7 +101,24 @@ public interface GoogleStorageComponentBuilderFactory {
             return this;
         }
         /**
-         * Set strage client.
+         * The Cloud Storage class to use when creating the new buckets.
+         * 
+         * The option is a:
+         * &lt;code&gt;com.google.cloud.storage.StorageClass&lt;/code&gt; type.
+         * 
+         * Default: STANDARD
+         * Group: common
+         * 
+         * @param storageClass the value to set
+         * @return the dsl builder
+         */
+        default GoogleStorageComponentBuilder storageClass(
+                com.google.cloud.storage.StorageClass storageClass) {
+            doSetProperty("storageClass", storageClass);
+            return this;
+        }
+        /**
+         * The storage client.
          * 
          * The option is a:
          * &lt;code&gt;com.google.cloud.storage.Storage&lt;/code&gt; type.
@@ -190,8 +208,8 @@ public interface GoogleStorageComponentBuilderFactory {
         }
         /**
          * If it is true, the Object exchange will be consumed and put into the
-         * body and closed. If false the Object stream will be put raw into the
-         * body and the headers will be set with the object metadata.
+         * body. If false the Object stream will be put raw into the body and
+         * the headers will be set with the object metadata.
          * 
          * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
@@ -268,7 +286,7 @@ public interface GoogleStorageComponentBuilderFactory {
             return this;
         }
         /**
-         * Object name.
+         * The Object name inside the bucket.
          * 
          * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
@@ -346,6 +364,7 @@ public interface GoogleStorageComponentBuilderFactory {
             case "autoCreateBucket": getOrCreateConfiguration((GoogleCloudStorageComponent) component).setAutoCreateBucket((boolean) value); return true;
             case "configuration": ((GoogleCloudStorageComponent) component).setConfiguration((org.apache.camel.component.google.storage.GoogleCloudStorageComponentConfiguration) value); return true;
             case "serviceAccountKey": getOrCreateConfiguration((GoogleCloudStorageComponent) component).setServiceAccountKey((java.lang.String) value); return true;
+            case "storageClass": getOrCreateConfiguration((GoogleCloudStorageComponent) component).setStorageClass((com.google.cloud.storage.StorageClass) value); return true;
             case "storageClient": getOrCreateConfiguration((GoogleCloudStorageComponent) component).setStorageClient((com.google.cloud.storage.Storage) value); return true;
             case "storageLocation": getOrCreateConfiguration((GoogleCloudStorageComponent) component).setStorageLocation((java.lang.String) value); return true;
             case "bridgeErrorHandler": ((GoogleCloudStorageComponent) component).setBridgeErrorHandler((boolean) value); return true;
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index 24f0a94..72fbb64 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -6707,7 +6707,7 @@ public class StaticEndpointBuilders {
      * Syntax: <code>google-storage:bucketName</code>
      * 
      * Path parameter: bucketName (required)
-     * Bucket name
+     * Bucket name or ARN
      * 
      * @param path bucketName
      * @return the dsl builder
@@ -6728,7 +6728,7 @@ public class StaticEndpointBuilders {
      * Syntax: <code>google-storage:bucketName</code>
      * 
      * Path parameter: bucketName (required)
-     * Bucket name
+     * Bucket name or ARN
      * 
      * @param componentName to use a custom component name for the endpoint
      * instead of the default name
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleCloudStorageEndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleCloudStorageEndpointBuilderFactory.java
index 104f697..f1eac32 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleCloudStorageEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleCloudStorageEndpointBuilderFactory.java
@@ -81,7 +81,8 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
             return this;
         }
         /**
-         * Service account key.
+         * Service account key to authenticate an application as a service
+         * account.
          * 
          * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
@@ -96,7 +97,41 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
             return this;
         }
         /**
-         * Set strage client.
+         * The Cloud Storage class to use when creating the new buckets.
+         * 
+         * The option is a:
+         * &lt;code&gt;com.google.cloud.storage.StorageClass&lt;/code&gt; type.
+         * 
+         * Default: STANDARD
+         * Group: common
+         * 
+         * @param storageClass the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointConsumerBuilder storageClass(
+                Object storageClass) {
+            doSetProperty("storageClass", storageClass);
+            return this;
+        }
+        /**
+         * The Cloud Storage class to use when creating the new buckets.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;com.google.cloud.storage.StorageClass&lt;/code&gt; type.
+         * 
+         * Default: STANDARD
+         * Group: common
+         * 
+         * @param storageClass the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointConsumerBuilder storageClass(
+                String storageClass) {
+            doSetProperty("storageClass", storageClass);
+            return this;
+        }
+        /**
+         * The storage client.
          * 
          * The option is a:
          * &lt;code&gt;com.google.cloud.storage.Storage&lt;/code&gt; type.
@@ -112,7 +147,7 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
             return this;
         }
         /**
-         * Set strage client.
+         * The storage client.
          * 
          * The option will be converted to a
          * &lt;code&gt;com.google.cloud.storage.Storage&lt;/code&gt; type.
@@ -245,8 +280,8 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
         }
         /**
          * If it is true, the Object exchange will be consumed and put into the
-         * body and closed. If false the Object stream will be put raw into the
-         * body and the headers will be set with the object metadata.
+         * body. If false the Object stream will be put raw into the body and
+         * the headers will be set with the object metadata.
          * 
          * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
@@ -263,8 +298,8 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
         }
         /**
          * If it is true, the Object exchange will be consumed and put into the
-         * body and closed. If false the Object stream will be put raw into the
-         * body and the headers will be set with the object metadata.
+         * body. If false the Object stream will be put raw into the body and
+         * the headers will be set with the object metadata.
          * 
          * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
          * type.
@@ -1043,7 +1078,8 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
             return this;
         }
         /**
-         * Service account key.
+         * Service account key to authenticate an application as a service
+         * account.
          * 
          * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
@@ -1058,7 +1094,41 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
             return this;
         }
         /**
-         * Set strage client.
+         * The Cloud Storage class to use when creating the new buckets.
+         * 
+         * The option is a:
+         * &lt;code&gt;com.google.cloud.storage.StorageClass&lt;/code&gt; type.
+         * 
+         * Default: STANDARD
+         * Group: common
+         * 
+         * @param storageClass the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointProducerBuilder storageClass(
+                Object storageClass) {
+            doSetProperty("storageClass", storageClass);
+            return this;
+        }
+        /**
+         * The Cloud Storage class to use when creating the new buckets.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;com.google.cloud.storage.StorageClass&lt;/code&gt; type.
+         * 
+         * Default: STANDARD
+         * Group: common
+         * 
+         * @param storageClass the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointProducerBuilder storageClass(
+                String storageClass) {
+            doSetProperty("storageClass", storageClass);
+            return this;
+        }
+        /**
+         * The storage client.
          * 
          * The option is a:
          * &lt;code&gt;com.google.cloud.storage.Storage&lt;/code&gt; type.
@@ -1074,7 +1144,7 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
             return this;
         }
         /**
-         * Set strage client.
+         * The storage client.
          * 
          * The option will be converted to a
          * &lt;code&gt;com.google.cloud.storage.Storage&lt;/code&gt; type.
@@ -1155,7 +1225,7 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
             return this;
         }
         /**
-         * Object name.
+         * The Object name inside the bucket.
          * 
          * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
@@ -1258,7 +1328,8 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
             return this;
         }
         /**
-         * Service account key.
+         * Service account key to authenticate an application as a service
+         * account.
          * 
          * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
@@ -1273,7 +1344,41 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
             return this;
         }
         /**
-         * Set strage client.
+         * The Cloud Storage class to use when creating the new buckets.
+         * 
+         * The option is a:
+         * &lt;code&gt;com.google.cloud.storage.StorageClass&lt;/code&gt; type.
+         * 
+         * Default: STANDARD
+         * Group: common
+         * 
+         * @param storageClass the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointBuilder storageClass(
+                Object storageClass) {
+            doSetProperty("storageClass", storageClass);
+            return this;
+        }
+        /**
+         * The Cloud Storage class to use when creating the new buckets.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;com.google.cloud.storage.StorageClass&lt;/code&gt; type.
+         * 
+         * Default: STANDARD
+         * Group: common
+         * 
+         * @param storageClass the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointBuilder storageClass(
+                String storageClass) {
+            doSetProperty("storageClass", storageClass);
+            return this;
+        }
+        /**
+         * The storage client.
          * 
          * The option is a:
          * &lt;code&gt;com.google.cloud.storage.Storage&lt;/code&gt; type.
@@ -1289,7 +1394,7 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
             return this;
         }
         /**
-         * Set strage client.
+         * The storage client.
          * 
          * The option will be converted to a
          * &lt;code&gt;com.google.cloud.storage.Storage&lt;/code&gt; type.
@@ -1361,7 +1466,7 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
          * Syntax: <code>google-storage:bucketName</code>
          * 
          * Path parameter: bucketName (required)
-         * Bucket name
+         * Bucket name or ARN
          * 
          * @param path bucketName
          * @return the dsl builder
@@ -1381,7 +1486,7 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
          * Syntax: <code>google-storage:bucketName</code>
          * 
          * Path parameter: bucketName (required)
-         * Bucket name
+         * Bucket name or ARN
          * 
          * @param componentName to use a custom component name for the endpoint
          * instead of the default name
diff --git a/docs/components/modules/ROOT/pages/google-storage-component.adoc b/docs/components/modules/ROOT/pages/google-storage-component.adoc
index bcc8d78..9b83c19 100644
--- a/docs/components/modules/ROOT/pages/google-storage-component.adoc
+++ b/docs/components/modules/ROOT/pages/google-storage-component.adoc
@@ -49,16 +49,11 @@ String endpoint = "google-storage://myCamelBucket?serviceAccountKey=/home/user/D
 
 Or by providing the path to the GCP credentials file location:
 
-[source,text]
---------------------------------------------------------
-export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"
---------------------------------------------------------
-
-or for windows:
+Provide authentication credentials to your application code by setting the environment variable `GOOGLE_APPLICATION_CREDENTIALS` :
 
 [source,text]
 --------------------------------------------------------
-$Env:GOOGLE_APPLICATION_CREDENTIALS = "/home/user/Downloads/my-key.json"
+export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"
 --------------------------------------------------------
 
 
@@ -69,15 +64,15 @@ $Env:GOOGLE_APPLICATION_CREDENTIALS = "/home/user/Downloads/my-key.json"
 google-storage://bucketNameOrArn?[options]
 --------------------------------------------------------
 
-The bucket will be created if it don't already exists. +
- You can append query options to the URI in the following format,
+By default the bucket will be created if it don't already exists. +
+You can append query options to the URI in the following format,
 ?options=value&option2=value&...
 
-For example in order to read file `hello.txt` from bucket `helloBucket`, use the following snippet:
+For example in order to read file `hello.txt` from bucket `myCamelBucket`, use the following snippet:
 
 [source,java]
 --------------------------------------------------------------------------------
-from("google-storage://myCamelBucket?serviceAccountKey=/home/user/Downloads/my-key.json&prefix=hello.txt")
+from("google-storage://myCamelBucket?serviceAccountKey=/home/user/Downloads/my-key.json&objectName=hello.txt")
   .to("file:/var/downloaded");
 --------------------------------------------------------------------------------
 
@@ -85,7 +80,7 @@ from("google-storage://myCamelBucket?serviceAccountKey=/home/user/Downloads/my-k
 == URI Options
 
 // component options: START
-The Google Storage component supports 15 options, which are listed below.
+The Google Storage component supports 16 options, which are listed below.
 
 
 
@@ -94,17 +89,18 @@ The Google Storage component supports 15 options, which are listed below.
 | Name | Description | Default | Type
 | *autoCreateBucket* (common) | Setting the autocreation of the bucket bucketName. | true | boolean
 | *configuration* (common) | The component configuration |  | GoogleCloudStorageComponentConfiguration
-| *serviceAccountKey* (common) | Service account key |  | String
-| *storageClient* (common) | Set strage client |  | Storage
+| *serviceAccountKey* (common) | Service account key to authenticate an application as a service account |  | String
+| *storageClass* (common) | The Cloud Storage class to use when creating the new buckets | STANDARD | StorageClass
+| *storageClient* (common) | The storage client |  | Storage
 | *storageLocation* (common) | The Cloud Storage location to use when creating the new buckets | US-EAST1 | String
 | *bridgeErrorHandler* (consumer) | 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 | boolean
 | *deleteAfterRead* (consumer) | Delete objects from the bucket 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. | true | boolean
 | *destinationBucket* (consumer) | Define the destination bucket where an object must be moved when moveAfterRead is set to true. |  | String
-| *includeBody* (consumer) | If it is true, the Object exchange will be consumed and put into the body and closed. If false the Object stream will be put raw into the body and the headers will be set with the object metadata. | true | boolean
+| *includeBody* (consumer) | If it is true, the Object exchange will be consumed and put into the body. If false the Object stream will be put raw into the body and the headers will be set with the object metadata. | true | boolean
 | *includeFolders* (consumer) | If it is true, the folders/directories will be consumed. If it is false, they will be ignored, and Exchanges will not be created for those | true | boolean
 | *moveAfterRead* (consumer) | Move objects from the origin bucket to a different bucket after they have been retrieved. To accomplish the operation the destinationBucket option must be set. The copy bucket operation is only performed if the Exchange is committed. If a rollback occurs, the object is not moved. | false | boolean
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *objectName* (producer) | Object name |  | String
+| *objectName* (producer) | The Object name inside the bucket |  | String
 | *operation* (producer) | Set the operation for the producer. There are 7 enums and the value can be one of: copyObject, listObjects, deleteObject, deleteBucket, listBuckets, getObject, createDownloadLink |  | GoogleCloudStorageComponentOperations
 | *autowiredEnabled* (advanced) | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
 |===
@@ -125,24 +121,25 @@ with the following path and query parameters:
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-| *bucketName* | *Required* Bucket name |  | String
+| *bucketName* | *Required* Bucket name or ARN |  | String
 |===
 
 
-=== Query Parameters (31 parameters):
+=== Query Parameters (32 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
 | *autoCreateBucket* (common) | Setting the autocreation of the bucket bucketName. | true | boolean
-| *serviceAccountKey* (common) | Service account key |  | String
-| *storageClient* (common) | Set strage client |  | Storage
+| *serviceAccountKey* (common) | Service account key to authenticate an application as a service account |  | String
+| *storageClass* (common) | The Cloud Storage class to use when creating the new buckets | STANDARD | StorageClass
+| *storageClient* (common) | The storage client |  | Storage
 | *storageLocation* (common) | The Cloud Storage location to use when creating the new buckets | US-EAST1 | String
 | *bridgeErrorHandler* (consumer) | 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 | boolean
 | *deleteAfterRead* (consumer) | Delete objects from the bucket 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. | true | boolean
 | *destinationBucket* (consumer) | Define the destination bucket where an object must be moved when moveAfterRead is set to true. |  | String
-| *includeBody* (consumer) | If it is true, the Object exchange will be consumed and put into the body and closed. If false the Object stream will be put raw into the body and the headers will be set with the object metadata. | true | boolean
+| *includeBody* (consumer) | If it is true, the Object exchange will be consumed and put into the body. If false the Object stream will be put raw into the body and the headers will be set with the object metadata. | true | boolean
 | *includeFolders* (consumer) | If it is true, the folders/directories will be consumed. If it is false, they will be ignored, and Exchanges will not be created for those | true | boolean
 | *moveAfterRead* (consumer) | Move objects from the origin bucket to a different bucket after they have been retrieved. To accomplish the operation the destinationBucket option must be set. The copy bucket operation is only performed if the Exchange is committed. If a rollback occurs, the object is not moved. | false | boolean
 | *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
@@ -150,7 +147,7 @@ with the following path and query parameters:
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. There are 3 enums and the value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
 | *pollStrategy* (consumer) | 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. |  | PollingConsumerPollStrategy
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *objectName* (producer) | Object name |  | String
+| *objectName* (producer) | The Object name inside the bucket |  | String
 | *operation* (producer) | Set the operation for the producer. There are 7 enums and the value can be one of: copyObject, listObjects, deleteObject, deleteBucket, listBuckets, getObject, createDownloadLink |  | GoogleCloudStorageComponentOperations
 | *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
 | *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int