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 2024/02/09 10:13:03 UTC

(camel) branch CAMEL-20281-redshift created (now 3b56c3f66f3)

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

acosentino pushed a change to branch CAMEL-20281-redshift
in repository https://gitbox.apache.org/repos/asf/camel.git


      at 3b56c3f66f3 CAMEL-20281 - Camel-AWS Components: Make it possible to use AwsSessionCredentials to support temporary credentials - AWS Redshift

This branch includes the following new commits:

     new 3b56c3f66f3 CAMEL-20281 - Camel-AWS Components: Make it possible to use AwsSessionCredentials to support temporary credentials - AWS Redshift

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(camel) 01/01: CAMEL-20281 - Camel-AWS Components: Make it possible to use AwsSessionCredentials to support temporary credentials - AWS Redshift

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch CAMEL-20281-redshift
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 3b56c3f66f3c64014b60e4014d6eff820d97a967
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Feb 9 11:12:33 2024 +0100

    CAMEL-20281 - Camel-AWS Components: Make it possible to use AwsSessionCredentials to support temporary credentials - AWS Redshift
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 .../catalog/components/aws2-redshift-data.json     |   8 +-
 .../data/RedshiftData2ComponentConfigurer.java     |  12 +++
 .../data/RedshiftData2EndpointConfigurer.java      |  12 +++
 .../data/RedshiftData2EndpointUriFactory.java      |   7 +-
 .../aws2/redshift/data/aws2-redshift-data.json     |   8 +-
 .../aws2/redshift/data/RedshiftData2Component.java |   1 +
 .../redshift/data/RedshiftData2Configuration.java  |  27 ++++++
 .../data/client/RedshiftData2ClientFactory.java    |  10 +-
 .../impl/RedshiftData2ClientSessionTokenImpl.java  | 106 +++++++++++++++++++++
 .../data/RedshiftData2ClientFactoryTest.java       |  10 ++
 10 files changed, 193 insertions(+), 8 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-redshift-data.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-redshift-data.json
index 132f26723d8..a217759017f 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-redshift-data.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-redshift-data.json
@@ -42,7 +42,9 @@
     "proxyPort": { "index": 16, "kind": "property", "displayName": "Proxy Port", "group": "proxy", "label": "proxy", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the RedshiftData client" },
     "proxyProtocol": { "index": 17, "kind": "property", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "object", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "To define a p [...]
     "accessKey": { "index": 18, "kind": "property", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
-    "secretKey": { "index": 19, "kind": "property", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" }
+    "secretKey": { "index": 19, "kind": "property", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
+    "sessionToken": { "index": 20, "kind": "property", "displayName": "Session Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume a IAM role" },
+    "useSessionCredentials": { "index": 21, "kind": "property", "displayName": "Use Session Credentials", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Set whether the Redshift client should expect to  [...]
   },
   "headers": {
     "CamelAwsRedshiftDataOperation": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation we want to perform", "constantName": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Constants#OPERATION" },
@@ -88,6 +90,8 @@
     "proxyPort": { "index": 13, "kind": "parameter", "displayName": "Proxy Port", "group": "proxy", "label": "proxy", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the RedshiftData client" },
     "proxyProtocol": { "index": 14, "kind": "parameter", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "object", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "To define a  [...]
     "accessKey": { "index": 15, "kind": "parameter", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
-    "secretKey": { "index": 16, "kind": "parameter", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" }
+    "secretKey": { "index": 16, "kind": "parameter", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
+    "sessionToken": { "index": 17, "kind": "parameter", "displayName": "Session Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume a IAM role" },
+    "useSessionCredentials": { "index": 18, "kind": "parameter", "displayName": "Use Session Credentials", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Set whether the Redshift client should expect to [...]
   }
 }
diff --git a/components/camel-aws/camel-aws2-redshift/src/generated/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2ComponentConfigurer.java b/components/camel-aws/camel-aws2-redshift/src/generated/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2ComponentConfigurer.java
index 76cc2228f87..3f86f66fb6f 100644
--- a/components/camel-aws/camel-aws2-redshift/src/generated/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2ComponentConfigurer.java
+++ b/components/camel-aws/camel-aws2-redshift/src/generated/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2ComponentConfigurer.java
@@ -57,6 +57,8 @@ public class RedshiftData2ComponentConfigurer extends PropertyConfigurerSupport
         case "region": getOrCreateConfiguration(target).setRegion(property(camelContext, java.lang.String.class, value)); return true;
         case "secretkey":
         case "secretKey": getOrCreateConfiguration(target).setSecretKey(property(camelContext, java.lang.String.class, value)); return true;
+        case "sessiontoken":
+        case "sessionToken": getOrCreateConfiguration(target).setSessionToken(property(camelContext, java.lang.String.class, value)); return true;
         case "trustallcertificates":
         case "trustAllCertificates": getOrCreateConfiguration(target).setTrustAllCertificates(property(camelContext, boolean.class, value)); return true;
         case "uriendpointoverride":
@@ -65,6 +67,8 @@ public class RedshiftData2ComponentConfigurer extends PropertyConfigurerSupport
         case "useDefaultCredentialsProvider": getOrCreateConfiguration(target).setUseDefaultCredentialsProvider(property(camelContext, boolean.class, value)); return true;
         case "useprofilecredentialsprovider":
         case "useProfileCredentialsProvider": getOrCreateConfiguration(target).setUseProfileCredentialsProvider(property(camelContext, boolean.class, value)); return true;
+        case "usesessioncredentials":
+        case "useSessionCredentials": getOrCreateConfiguration(target).setUseSessionCredentials(property(camelContext, boolean.class, value)); return true;
         default: return false;
         }
     }
@@ -106,6 +110,8 @@ public class RedshiftData2ComponentConfigurer extends PropertyConfigurerSupport
         case "region": return java.lang.String.class;
         case "secretkey":
         case "secretKey": return java.lang.String.class;
+        case "sessiontoken":
+        case "sessionToken": return java.lang.String.class;
         case "trustallcertificates":
         case "trustAllCertificates": return boolean.class;
         case "uriendpointoverride":
@@ -114,6 +120,8 @@ public class RedshiftData2ComponentConfigurer extends PropertyConfigurerSupport
         case "useDefaultCredentialsProvider": return boolean.class;
         case "useprofilecredentialsprovider":
         case "useProfileCredentialsProvider": return boolean.class;
+        case "usesessioncredentials":
+        case "useSessionCredentials": return boolean.class;
         default: return null;
         }
     }
@@ -151,6 +159,8 @@ public class RedshiftData2ComponentConfigurer extends PropertyConfigurerSupport
         case "region": return getOrCreateConfiguration(target).getRegion();
         case "secretkey":
         case "secretKey": return getOrCreateConfiguration(target).getSecretKey();
+        case "sessiontoken":
+        case "sessionToken": return getOrCreateConfiguration(target).getSessionToken();
         case "trustallcertificates":
         case "trustAllCertificates": return getOrCreateConfiguration(target).isTrustAllCertificates();
         case "uriendpointoverride":
@@ -159,6 +169,8 @@ public class RedshiftData2ComponentConfigurer extends PropertyConfigurerSupport
         case "useDefaultCredentialsProvider": return getOrCreateConfiguration(target).isUseDefaultCredentialsProvider();
         case "useprofilecredentialsprovider":
         case "useProfileCredentialsProvider": return getOrCreateConfiguration(target).isUseProfileCredentialsProvider();
+        case "usesessioncredentials":
+        case "useSessionCredentials": return getOrCreateConfiguration(target).isUseSessionCredentials();
         default: return null;
         }
     }
diff --git a/components/camel-aws/camel-aws2-redshift/src/generated/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2EndpointConfigurer.java b/components/camel-aws/camel-aws2-redshift/src/generated/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2EndpointConfigurer.java
index 0d41d0cc187..2f95657746d 100644
--- a/components/camel-aws/camel-aws2-redshift/src/generated/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2EndpointConfigurer.java
+++ b/components/camel-aws/camel-aws2-redshift/src/generated/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2EndpointConfigurer.java
@@ -43,6 +43,8 @@ public class RedshiftData2EndpointConfigurer extends PropertyConfigurerSupport i
         case "region": target.getConfiguration().setRegion(property(camelContext, java.lang.String.class, value)); return true;
         case "secretkey":
         case "secretKey": target.getConfiguration().setSecretKey(property(camelContext, java.lang.String.class, value)); return true;
+        case "sessiontoken":
+        case "sessionToken": target.getConfiguration().setSessionToken(property(camelContext, java.lang.String.class, value)); return true;
         case "trustallcertificates":
         case "trustAllCertificates": target.getConfiguration().setTrustAllCertificates(property(camelContext, boolean.class, value)); return true;
         case "uriendpointoverride":
@@ -51,6 +53,8 @@ public class RedshiftData2EndpointConfigurer extends PropertyConfigurerSupport i
         case "useDefaultCredentialsProvider": target.getConfiguration().setUseDefaultCredentialsProvider(property(camelContext, boolean.class, value)); return true;
         case "useprofilecredentialsprovider":
         case "useProfileCredentialsProvider": target.getConfiguration().setUseProfileCredentialsProvider(property(camelContext, boolean.class, value)); return true;
+        case "usesessioncredentials":
+        case "useSessionCredentials": target.getConfiguration().setUseSessionCredentials(property(camelContext, boolean.class, value)); return true;
         default: return false;
         }
     }
@@ -85,6 +89,8 @@ public class RedshiftData2EndpointConfigurer extends PropertyConfigurerSupport i
         case "region": return java.lang.String.class;
         case "secretkey":
         case "secretKey": return java.lang.String.class;
+        case "sessiontoken":
+        case "sessionToken": return java.lang.String.class;
         case "trustallcertificates":
         case "trustAllCertificates": return boolean.class;
         case "uriendpointoverride":
@@ -93,6 +99,8 @@ public class RedshiftData2EndpointConfigurer extends PropertyConfigurerSupport i
         case "useDefaultCredentialsProvider": return boolean.class;
         case "useprofilecredentialsprovider":
         case "useProfileCredentialsProvider": return boolean.class;
+        case "usesessioncredentials":
+        case "useSessionCredentials": return boolean.class;
         default: return null;
         }
     }
@@ -123,6 +131,8 @@ public class RedshiftData2EndpointConfigurer extends PropertyConfigurerSupport i
         case "region": return target.getConfiguration().getRegion();
         case "secretkey":
         case "secretKey": return target.getConfiguration().getSecretKey();
+        case "sessiontoken":
+        case "sessionToken": return target.getConfiguration().getSessionToken();
         case "trustallcertificates":
         case "trustAllCertificates": return target.getConfiguration().isTrustAllCertificates();
         case "uriendpointoverride":
@@ -131,6 +141,8 @@ public class RedshiftData2EndpointConfigurer extends PropertyConfigurerSupport i
         case "useDefaultCredentialsProvider": return target.getConfiguration().isUseDefaultCredentialsProvider();
         case "useprofilecredentialsprovider":
         case "useProfileCredentialsProvider": return target.getConfiguration().isUseProfileCredentialsProvider();
+        case "usesessioncredentials":
+        case "useSessionCredentials": return target.getConfiguration().isUseSessionCredentials();
         default: return null;
         }
     }
diff --git a/components/camel-aws/camel-aws2-redshift/src/generated/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2EndpointUriFactory.java b/components/camel-aws/camel-aws2-redshift/src/generated/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2EndpointUriFactory.java
index d1aac2237c6..86a269ef7cd 100644
--- a/components/camel-aws/camel-aws2-redshift/src/generated/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2EndpointUriFactory.java
+++ b/components/camel-aws/camel-aws2-redshift/src/generated/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2EndpointUriFactory.java
@@ -21,7 +21,7 @@ public class RedshiftData2EndpointUriFactory extends org.apache.camel.support.co
     private static final Set<String> SECRET_PROPERTY_NAMES;
     private static final Set<String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(17);
+        Set<String> props = new HashSet<>(19);
         props.add("accessKey");
         props.add("awsRedshiftDataClient");
         props.add("label");
@@ -35,14 +35,17 @@ public class RedshiftData2EndpointUriFactory extends org.apache.camel.support.co
         props.add("proxyProtocol");
         props.add("region");
         props.add("secretKey");
+        props.add("sessionToken");
         props.add("trustAllCertificates");
         props.add("uriEndpointOverride");
         props.add("useDefaultCredentialsProvider");
         props.add("useProfileCredentialsProvider");
+        props.add("useSessionCredentials");
         PROPERTY_NAMES = Collections.unmodifiableSet(props);
-        Set<String> secretProps = new HashSet<>(2);
+        Set<String> secretProps = new HashSet<>(3);
         secretProps.add("accessKey");
         secretProps.add("secretKey");
+        secretProps.add("sessionToken");
         SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps);
         MULTI_VALUE_PREFIXES = Collections.emptySet();
     }
diff --git a/components/camel-aws/camel-aws2-redshift/src/generated/resources/org/apache/camel/component/aws2/redshift/data/aws2-redshift-data.json b/components/camel-aws/camel-aws2-redshift/src/generated/resources/org/apache/camel/component/aws2/redshift/data/aws2-redshift-data.json
index 132f26723d8..a217759017f 100644
--- a/components/camel-aws/camel-aws2-redshift/src/generated/resources/org/apache/camel/component/aws2/redshift/data/aws2-redshift-data.json
+++ b/components/camel-aws/camel-aws2-redshift/src/generated/resources/org/apache/camel/component/aws2/redshift/data/aws2-redshift-data.json
@@ -42,7 +42,9 @@
     "proxyPort": { "index": 16, "kind": "property", "displayName": "Proxy Port", "group": "proxy", "label": "proxy", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the RedshiftData client" },
     "proxyProtocol": { "index": 17, "kind": "property", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "object", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "To define a p [...]
     "accessKey": { "index": 18, "kind": "property", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
-    "secretKey": { "index": 19, "kind": "property", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" }
+    "secretKey": { "index": 19, "kind": "property", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
+    "sessionToken": { "index": 20, "kind": "property", "displayName": "Session Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume a IAM role" },
+    "useSessionCredentials": { "index": 21, "kind": "property", "displayName": "Use Session Credentials", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Set whether the Redshift client should expect to  [...]
   },
   "headers": {
     "CamelAwsRedshiftDataOperation": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation we want to perform", "constantName": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Constants#OPERATION" },
@@ -88,6 +90,8 @@
     "proxyPort": { "index": 13, "kind": "parameter", "displayName": "Proxy Port", "group": "proxy", "label": "proxy", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the RedshiftData client" },
     "proxyProtocol": { "index": 14, "kind": "parameter", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "object", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "To define a  [...]
     "accessKey": { "index": 15, "kind": "parameter", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
-    "secretKey": { "index": 16, "kind": "parameter", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" }
+    "secretKey": { "index": 16, "kind": "parameter", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
+    "sessionToken": { "index": 17, "kind": "parameter", "displayName": "Session Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume a IAM role" },
+    "useSessionCredentials": { "index": 18, "kind": "parameter", "displayName": "Use Session Credentials", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration", "configurationField": "configuration", "description": "Set whether the Redshift client should expect to [...]
   }
 }
diff --git a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Component.java b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Component.java
index 795ef89a926..aaff041fae7 100644
--- a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Component.java
+++ b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Component.java
@@ -46,6 +46,7 @@ public class RedshiftData2Component extends HealthCheckComponent {
         setProperties(endpoint, parameters);
         if (Boolean.FALSE.equals(configuration.isUseDefaultCredentialsProvider())
                 && Boolean.FALSE.equals(configuration.isUseProfileCredentialsProvider())
+                && Boolean.FALSE.equals(configuration.isUseSessionCredentials())
                 && configuration.getAwsRedshiftDataClient() == null
                 && (configuration.getAccessKey() == null || configuration.getSecretKey() == null)) {
             throw new IllegalArgumentException(
diff --git a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Configuration.java b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Configuration.java
index 256d230e904..ac00b3e935c 100644
--- a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Configuration.java
+++ b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Configuration.java
@@ -37,6 +37,8 @@ public class RedshiftData2Configuration implements Cloneable {
     private String accessKey;
     @UriParam(label = "security", secret = true)
     private String secretKey;
+    @UriParam(label = "security", secret = true)
+    private String sessionToken;
     @UriParam(enums = "ap-south-2,ap-south-1,eu-south-1,eu-south-2,us-gov-east-1,me-central-1,il-central-1,ca-central-1,eu-central-1,us-iso-west-1,eu-central-2,us-west-1,us-west-2,af-south-1,eu-north-1,eu-west-3,eu-west-2,eu-west-1,ap-northeast-3,ap-northeast-2,ap-northeast-1,me-south-1,sa-east-1,ap-east-1,cn-north-1,us-gov-west-1,ap-southeast-1,ap-southeast-2,us-iso-east-1,ap-southeast-3,ap-southeast-4,us-east-1,us-east-2,cn-northwest-1,us-isob-east-1,aws-global,aws-cn-global,aws-us-gov [...]
     private String region;
     @UriParam(label = "proxy", enums = "HTTP,HTTPS", defaultValue = "HTTPS")
@@ -60,6 +62,8 @@ public class RedshiftData2Configuration implements Cloneable {
     private boolean useDefaultCredentialsProvider;
     @UriParam(defaultValue = "false")
     private boolean useProfileCredentialsProvider;
+    @UriParam(label = "security")
+    private boolean useSessionCredentials;
     @UriParam
     private String profileCredentialsName;
 
@@ -96,6 +100,17 @@ public class RedshiftData2Configuration implements Cloneable {
         this.secretKey = secretKey;
     }
 
+    public String getSessionToken() {
+        return sessionToken;
+    }
+
+    /**
+     * Amazon AWS Session Token used when the user needs to assume a IAM role
+     */
+    public void setSessionToken(String sessionToken) {
+        this.sessionToken = sessionToken;
+    }
+
     public String getRegion() {
         return region;
     }
@@ -221,6 +236,18 @@ public class RedshiftData2Configuration implements Cloneable {
         this.useProfileCredentialsProvider = useProfileCredentialsProvider;
     }
 
+    public boolean isUseSessionCredentials() {
+        return useSessionCredentials;
+    }
+
+    /**
+     * Set whether the Redshift client should expect to use Session Credentials. This is useful in situation in which
+     * the user needs to assume a IAM role for doing operations in Redshift.
+     */
+    public void setUseSessionCredentials(boolean useSessionCredentials) {
+        this.useSessionCredentials = useSessionCredentials;
+    }
+
     public String getProfileCredentialsName() {
         return profileCredentialsName;
     }
diff --git a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/RedshiftData2ClientFactory.java b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/RedshiftData2ClientFactory.java
index 8b2df544a85..9b53ead1abb 100644
--- a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/RedshiftData2ClientFactory.java
+++ b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/RedshiftData2ClientFactory.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.aws2.redshift.data.client;
 
 import org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration;
 import org.apache.camel.component.aws2.redshift.data.client.impl.RedshiftData2ClientIAMOptimizedImpl;
+import org.apache.camel.component.aws2.redshift.data.client.impl.RedshiftData2ClientSessionTokenImpl;
 import org.apache.camel.component.aws2.redshift.data.client.impl.RedshiftData2ClientStandardImpl;
 
 /**
@@ -35,7 +36,12 @@ public final class RedshiftData2ClientFactory {
      * @return               RedshiftDataClient
      */
     public static RedshiftData2InternalClient getRedshiftDataClient(RedshiftData2Configuration configuration) {
-        return Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())
-                ? new RedshiftData2ClientIAMOptimizedImpl(configuration) : new RedshiftData2ClientStandardImpl(configuration);
+        if (Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())) {
+            return new RedshiftData2ClientIAMOptimizedImpl(configuration);
+        } else if (Boolean.TRUE.equals(configuration.isUseSessionCredentials())) {
+            return new RedshiftData2ClientSessionTokenImpl(configuration);
+        } else {
+            return new RedshiftData2ClientStandardImpl(configuration);
+        }
     }
 }
diff --git a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/impl/RedshiftData2ClientSessionTokenImpl.java b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/impl/RedshiftData2ClientSessionTokenImpl.java
new file mode 100644
index 00000000000..5b1407e9407
--- /dev/null
+++ b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/impl/RedshiftData2ClientSessionTokenImpl.java
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.redshift.data.client.impl;
+
+import java.net.URI;
+
+import org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration;
+import org.apache.camel.component.aws2.redshift.data.client.RedshiftData2InternalClient;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.auth.credentials.AwsSessionCredentials;
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
+import software.amazon.awssdk.http.SdkHttpClient;
+import software.amazon.awssdk.http.SdkHttpConfigurationOption;
+import software.amazon.awssdk.http.apache.ApacheHttpClient;
+import software.amazon.awssdk.http.apache.ProxyConfiguration;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.redshiftdata.RedshiftDataClient;
+import software.amazon.awssdk.services.redshiftdata.RedshiftDataClientBuilder;
+import software.amazon.awssdk.utils.AttributeMap;
+
+/**
+ * Manage an AWS RedshiftData client for all users to use. This implementation is for local instances to use a static
+ * and solid credential set.
+ */
+public class RedshiftData2ClientSessionTokenImpl implements RedshiftData2InternalClient {
+    private static final Logger LOG = LoggerFactory.getLogger(RedshiftData2ClientStandardImpl.class);
+    private RedshiftData2Configuration configuration;
+
+    /**
+     * Constructor that uses the config file.
+     */
+    public RedshiftData2ClientSessionTokenImpl(RedshiftData2Configuration configuration) {
+        LOG.trace("Creating an AWS RedshiftData manager using static credentials.");
+        this.configuration = configuration;
+    }
+
+    /**
+     * Getting the RedshiftData AWS client that is used.
+     *
+     * @return Amazon RedshiftData Client.
+     */
+    @Override
+    public RedshiftDataClient getRedshiftDataClient() {
+        RedshiftDataClient client = null;
+        RedshiftDataClientBuilder clientBuilder = RedshiftDataClient.builder();
+        ProxyConfiguration.Builder proxyConfig = null;
+        ApacheHttpClient.Builder httpClientBuilder = null;
+        boolean isClientConfigFound = false;
+        if (ObjectHelper.isNotEmpty(configuration.getProxyHost()) && ObjectHelper.isNotEmpty(configuration.getProxyPort())) {
+            proxyConfig = ProxyConfiguration.builder();
+            URI proxyEndpoint = URI.create(configuration.getProxyProtocol() + "://" + configuration.getProxyHost() + ":"
+                                           + configuration.getProxyPort());
+            proxyConfig.endpoint(proxyEndpoint);
+            httpClientBuilder = ApacheHttpClient.builder().proxyConfiguration(proxyConfig.build());
+            isClientConfigFound = true;
+        }
+        if (configuration.getAccessKey() != null && configuration.getSecretKey() != null
+                && configuration.getSessionToken() != null) {
+            AwsSessionCredentials cred = AwsSessionCredentials.create(configuration.getAccessKey(),
+                    configuration.getSecretKey(), configuration.getSessionToken());
+            if (isClientConfigFound) {
+                clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder)
+                        .credentialsProvider(StaticCredentialsProvider.create(cred));
+            } else {
+                clientBuilder = clientBuilder.credentialsProvider(StaticCredentialsProvider.create(cred));
+            }
+        } else {
+            if (!isClientConfigFound) {
+                clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
+            }
+        }
+        if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
+            clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
+        }
+        if (configuration.isOverrideEndpoint()) {
+            clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
+        }
+        if (configuration.isTrustAllCertificates()) {
+            SdkHttpClient ahc = ApacheHttpClient.builder().buildWithDefaults(AttributeMap
+                    .builder()
+                    .put(
+                            SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
+                            Boolean.TRUE)
+                    .build());
+            clientBuilder.httpClient(ahc);
+        }
+        client = clientBuilder.build();
+        return client;
+    }
+}
diff --git a/components/camel-aws/camel-aws2-redshift/src/test/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2ClientFactoryTest.java b/components/camel-aws/camel-aws2-redshift/src/test/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2ClientFactoryTest.java
index c8dcdd017b9..40c24cac239 100644
--- a/components/camel-aws/camel-aws2-redshift/src/test/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2ClientFactoryTest.java
+++ b/components/camel-aws/camel-aws2-redshift/src/test/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2ClientFactoryTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.aws2.redshift.data;
 import org.apache.camel.component.aws2.redshift.data.client.RedshiftData2ClientFactory;
 import org.apache.camel.component.aws2.redshift.data.client.RedshiftData2InternalClient;
 import org.apache.camel.component.aws2.redshift.data.client.impl.RedshiftData2ClientIAMOptimizedImpl;
+import org.apache.camel.component.aws2.redshift.data.client.impl.RedshiftData2ClientSessionTokenImpl;
 import org.apache.camel.component.aws2.redshift.data.client.impl.RedshiftData2ClientStandardImpl;
 import org.junit.jupiter.api.Test;
 
@@ -51,4 +52,13 @@ public class RedshiftData2ClientFactoryTest {
                 = RedshiftData2ClientFactory.getRedshiftDataClient(redshiftData2Configuration);
         assertTrue(redshiftDataClient instanceof RedshiftData2ClientIAMOptimizedImpl);
     }
+
+    @Test
+    public void getSessionTokenRedshiftDataClient() {
+        RedshiftData2Configuration redshiftData2Configuration = new RedshiftData2Configuration();
+        redshiftData2Configuration.setUseSessionCredentials(true);
+        RedshiftData2InternalClient redshiftDataClient
+                = RedshiftData2ClientFactory.getRedshiftDataClient(redshiftData2Configuration);
+        assertTrue(redshiftDataClient instanceof RedshiftData2ClientSessionTokenImpl);
+    }
 }