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 2025/12/17 13:36:07 UTC
(camel) 01/01: CAMEL-22786 - Camel-AWS: Extract common logic for clients instantiation in a separated module - Last components
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch CAMEL-22786-final
in repository https://gitbox.apache.org/repos/asf/camel.git
commit d1086e88bf73f90ccb70cdd245e4839edfea0454
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Dec 17 14:34:52 2025 +0100
CAMEL-22786 - Camel-AWS: Extract common logic for clients instantiation in a separated module - Last components
Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
.../catalog/components/aws-secrets-manager.json | 4 +-
.../camel/catalog/components/aws2-athena.json | 102 ++++++-------
.../camel/catalog/components/aws2-timestream.json | 8 +-
.../camel/catalog/components/aws2-transcribe.json | 4 +-
components/camel-aws/camel-aws-bedrock/pom.xml | 4 +
.../bedrock/agent/BedrockAgentConfiguration.java | 5 +-
.../aws2/bedrock/agent/BedrockAgentEndpoint.java | 2 +-
.../agent/client/BedrockAgentClientFactory.java | 29 ++--
.../agent/client/BedrockAgentInternalClient.java | 32 -----
.../impl/BedrockAgentClientIAMOptimizedImpl.java | 94 ------------
.../BedrockAgentClientIAMProfileOptimizedImpl.java | 99 -------------
.../impl/BedrockAgentClientSessionTokenImpl.java | 111 ---------------
.../impl/BedrockAgentClientStandardImpl.java | 109 --------------
.../BedrockAgentRuntimeConfiguration.java | 5 +-
.../agentruntime/BedrockAgentRuntimeEndpoint.java | 2 +-
.../client/BedrockAgentRuntimeClientFactory.java | 29 ++--
.../client/BedrockAgentRuntimeInternalClient.java | 32 -----
.../BedrockAgentRuntimeClientIAMOptimizedImpl.java | 94 ------------
...kAgentRuntimeClientIAMProfileOptimizedImpl.java | 99 -------------
.../BedrockAgentRuntimeClientSessionTokenImpl.java | 111 ---------------
.../BedrockAgentRuntimeClientStandardImpl.java | 109 --------------
.../aws2/bedrock/runtime/BedrockConfiguration.java | 5 +-
.../aws2/bedrock/runtime/BedrockEndpoint.java | 4 +-
.../runtime/client/BedrockClientFactory.java | 41 +++---
.../client/BedrockRuntimeInternalClient.java | 40 ------
.../impl/BedrockRuntimeClientIAMOptimizedImpl.java | 112 ---------------
...edrockRuntimeClientIAMProfileOptimizedImpl.java | 121 ----------------
.../impl/BedrockRuntimeClientSessionTokenImpl.java | 135 ------------------
.../impl/BedrockRuntimeClientStandardImpl.java | 136 ------------------
.../agent/BedrockAgentClientFactoryTest.java | 74 ----------
.../BedrockAgentRuntimeClientFactoryTest.java | 74 ----------
.../runtime/BedrockRuntimeClientFactoryTest.java | 69 ---------
components/camel-aws/camel-aws-cloudtrail/pom.xml | 4 +
.../aws/cloudtrail/CloudtrailConfiguration.java | 3 +-
.../aws/cloudtrail/CloudtrailEndpoint.java | 2 +-
.../cloudtrail/client/CloudtrailClientFactory.java | 28 ++--
.../client/CloudtrailInternalClient.java | 32 -----
.../impl/CloudtrailClientIAMOptimizedImpl.java | 94 ------------
.../CloudtrailClientIAMProfileOptimizedImpl.java | 99 -------------
.../impl/CloudtrailClientSessionTokenImpl.java | 110 --------------
.../client/impl/CloudtrailClientStandardImpl.java | 109 --------------
.../cloudtrail/CloudtrailClientFactoryTest.java | 60 --------
components/camel-aws/camel-aws-config/pom.xml | 4 +
.../aws/config/AWSConfigConfiguration.java | 7 +-
.../component/aws/config/AWSConfigEndpoint.java | 2 +-
.../aws/config/client/AWSConfigClientFactory.java | 28 ++--
.../aws/config/client/AWSConfigInternalClient.java | 32 -----
.../impl/AWSConfigClientIAMOptimizedImpl.java | 93 ------------
.../AWSConfigClientIAMProfileOptimizedImpl.java | 98 -------------
.../impl/AWSConfigClientSessionTokenImpl.java | 111 ---------------
.../client/impl/AWSConfigClientStandardImpl.java | 109 --------------
.../aws/config/AWSConfigClientFactoryTest.java | 60 --------
.../camel-aws/camel-aws-secrets-manager/pom.xml | 4 +
.../aws/secretsmanager/aws-secrets-manager.json | 4 +-
.../SecretsManagerConfiguration.java | 11 +-
.../aws/secretsmanager/SecretsManagerEndpoint.java | 2 +-
.../client/SecretsManagerClientFactory.java | 28 ++--
.../client/SecretsManagerInternalClient.java | 30 ----
.../impl/SecretsManagerClientIAMOptimized.java | 94 ------------
.../SecretsManagerClientIAMProfileOptimized.java | 99 -------------
.../impl/SecretsManagerClientSessionTokenImpl.java | 111 ---------------
.../impl/SecretsManagerClientStandardImpl.java | 109 --------------
.../SecretsManagerClientFactoryTest.java | 64 ---------
components/camel-aws/camel-aws2-athena/pom.xml | 4 +
.../aws2/athena/Athena2ComponentConfigurer.java | 18 +++
.../aws2/athena/Athena2EndpointConfigurer.java | 18 +++
.../aws2/athena/Athena2EndpointUriFactory.java | 5 +-
.../camel/component/aws2/athena/aws2-athena.json | 102 ++++++-------
.../aws2/athena/Athena2Configuration.java | 46 +++++-
.../component/aws2/athena/Athena2Endpoint.java | 2 +-
.../aws2/athena/client/Athena2ClientFactory.java | 28 ++--
.../aws2/athena/client/Athena2InternalClient.java | 32 -----
.../client/impl/Athena2ClientIAMOptimizedImpl.java | 73 ----------
.../impl/Athena2ClientIAMProfileOptimizedImpl.java | 74 ----------
.../client/impl/Athena2ClientSessionTokenImpl.java | 91 ------------
.../client/impl/Athena2ClientStandardImpl.java | 89 ------------
.../aws2/athena/AthenaClientFactoryTest.java | 60 --------
components/camel-aws/camel-aws2-cw/pom.xml | 4 +
.../camel/component/aws2/cw/Cw2Configuration.java | 5 +-
.../camel/component/aws2/cw/Cw2Endpoint.java | 2 +-
.../component/aws2/cw/client/Cw2ClientFactory.java | 28 ++--
.../aws2/cw/client/Cw2InternalClient.java | 32 -----
.../cw/client/impl/Cw2ClientIAMOptimizedImpl.java | 93 ------------
.../impl/Cw2ClientIAMProfileOptimizedImpl.java | 98 -------------
.../cw/client/impl/Cw2ClientSessionTokenImpl.java | 111 ---------------
.../aws2/cw/client/impl/Cw2ClientStandardImpl.java | 109 --------------
.../component/aws2/cw/Cw2ClientFactoryTest.java | 60 --------
.../camel-aws/camel-aws2-eventbridge/pom.xml | 4 +
.../aws2/eventbridge/EventbridgeConfiguration.java | 5 +-
.../aws2/eventbridge/EventbridgeEndpoint.java | 2 +-
.../client/EventbridgeClientFactory.java | 28 ++--
.../client/EventbridgeInternalClient.java | 32 -----
.../impl/EventbridgeClientIAMOptimizedImpl.java | 93 ------------
.../EventbridgeClientIAMProfileOptimizedImpl.java | 98 -------------
.../impl/EventbridgeClientSessionTokenImpl.java | 111 ---------------
.../client/impl/EventbridgeClientStandardImpl.java | 109 --------------
.../eventbridge/EventbridgeClientFactoryTest.java | 60 --------
components/camel-aws/camel-aws2-redshift/pom.xml | 4 +
.../redshift/data/RedshiftData2Configuration.java | 5 +-
.../aws2/redshift/data/RedshiftData2Endpoint.java | 2 +-
.../data/client/RedshiftData2ClientFactory.java | 25 ++--
.../data/client/RedshiftData2InternalClient.java | 32 -----
.../impl/RedshiftData2ClientIAMOptimizedImpl.java | 89 ------------
.../impl/RedshiftData2ClientSessionTokenImpl.java | 106 --------------
.../impl/RedshiftData2ClientStandardImpl.java | 104 --------------
.../data/RedshiftData2ClientFactoryTest.java | 64 ---------
components/camel-aws/camel-aws2-s3-vectors/pom.xml | 4 +
.../aws2/s3vectors/AWS2S3VectorsConfiguration.java | 3 +-
.../aws2/s3vectors/AWS2S3VectorsEndpoint.java | 2 +-
.../client/AWS2CamelS3VectorsInternalClient.java | 32 -----
.../client/AWS2S3VectorsClientFactory.java | 28 ++--
.../impl/AWS2S3VectorsClientIAMOptimizedImpl.java | 93 ------------
...AWS2S3VectorsClientIAMProfileOptimizedImpl.java | 110 --------------
.../impl/AWS2S3VectorsClientSessionTokenImpl.java | 110 --------------
.../impl/AWS2S3VectorsClientStandardImpl.java | 109 --------------
.../camel-aws/camel-aws2-step-functions/pom.xml | 4 +
.../stepfunctions/StepFunctions2Configuration.java | 5 +-
.../aws2/stepfunctions/StepFunctions2Endpoint.java | 2 +-
.../client/StepFunctions2ClientFactory.java | 28 ++--
.../client/StepFunctions2InternalClient.java | 32 -----
.../impl/StepFunctions2ClientIAMOptimizedImpl.java | 94 ------------
...tepFunctions2ClientIAMProfileOptimizedImpl.java | 89 ------------
.../impl/StepFunctions2ClientSessionTokenImpl.java | 106 --------------
.../impl/StepFunctions2ClientStandardImpl.java | 104 --------------
.../StepFunctions2ClientFactoryTest.java | 69 ---------
components/camel-aws/camel-aws2-textract/pom.xml | 4 +
.../aws2/textract/Textract2Configuration.java | 3 +-
.../component/aws2/textract/Textract2Endpoint.java | 2 +-
.../textract/client/Textract2ClientFactory.java | 28 ++--
.../textract/client/Textract2InternalClient.java | 30 ----
.../client/impl/Textract2ClientIAMOptimized.java | 94 ------------
.../impl/Textract2ClientIAMProfileOptimized.java | 99 -------------
.../impl/Textract2ClientSessionTokenImpl.java | 111 ---------------
.../client/impl/Textract2ClientStandardImpl.java | 109 --------------
.../aws2/textract/Textract2ClientFactoryTest.java | 60 --------
components/camel-aws/camel-aws2-timestream/pom.xml | 4 +
.../Timestream2AbstractEndpointConfigurer.java | 12 ++
.../timestream/Timestream2ComponentConfigurer.java | 12 ++
.../timestream/Timestream2EndpointUriFactory.java | 7 +-
.../component/aws2/timestream/aws2-timestream.json | 8 +-
.../aws2/timestream/Timestream2Configuration.java | 32 ++++-
.../client/Timestream2ClientFactory.java | 31 ++--
.../client/Timestream2InternalClient.java | 41 ------
.../impl/Timestream2ClientIAMOptimizedImpl.java | 129 -----------------
.../client/impl/Timestream2ClientStandardImpl.java | 158 ---------------------
.../timestream/query/Timestream2QueryEndpoint.java | 2 +-
.../timestream/write/Timestream2WriteEndpoint.java | 2 +-
.../timestream/Timestream2ClientFactoryTest.java | 52 -------
components/camel-aws/camel-aws2-transcribe/pom.xml | 4 +
.../transcribe/Transcribe2ComponentConfigurer.java | 4 +-
.../transcribe/Transcribe2EndpointConfigurer.java | 4 +-
.../component/aws2/transcribe/aws2-transcribe.json | 4 +-
.../aws2/transcribe/Transcribe2ClientFactory.java | 58 ++------
.../aws2/transcribe/Transcribe2Configuration.java | 11 +-
.../client/Transcribe2InternalClient.java | 24 ----
.../impl/Transcribe2ClientIAMOptimizedImpl.java | 72 ----------
.../Transcribe2ClientIAMProfileOptimizedImpl.java | 77 ----------
.../impl/Transcribe2ClientSessionTokenImpl.java | 78 ----------
.../client/impl/Transcribe2ClientStandardImpl.java | 76 ----------
.../transcribe/Transcribe2ClientFactoryTest.java | 94 ------------
components/camel-aws/camel-aws2-translate/pom.xml | 4 +
.../aws2/translate/Translate2Configuration.java | 5 +-
.../aws2/translate/Translate2Endpoint.java | 2 +-
.../translate/client/Translate2ClientFactory.java | 28 ++--
.../translate/client/Translate2InternalClient.java | 30 ----
.../client/impl/Translate2ClientIAMOptimized.java | 94 ------------
.../impl/Translate2ClientIAMProfileOptimized.java | 99 -------------
.../impl/Translate2ClientSessionTokenImpl.java | 111 ---------------
.../client/impl/Translate2ClientStandardImpl.java | 109 --------------
.../translate/Translate2ClientFactoryTest.java | 60 --------
.../dsl/Aws2AthenaComponentBuilderFactory.java | 55 +++++++
.../dsl/Aws2TimestreamComponentBuilderFactory.java | 37 +++++
.../dsl/Aws2TranscribeComponentBuilderFactory.java | 7 +-
.../AwsSecretsManagerComponentBuilderFactory.java | 6 +-
.../dsl/Athena2EndpointBuilderFactory.java | 79 +++++++++++
.../dsl/SecretsManagerEndpointBuilderFactory.java | 12 +-
.../dsl/Timestream2EndpointBuilderFactory.java | 49 +++++++
.../dsl/Transcribe2EndpointBuilderFactory.java | 19 ++-
178 files changed, 833 insertions(+), 8226 deletions(-)
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-secrets-manager.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-secrets-manager.json
index d752f6b813c6..27c10d35f695 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-secrets-manager.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-secrets-manager.json
@@ -46,7 +46,7 @@
"secretKey": { "index": 18, "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
"sessionToken": { "index": 19, "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
"trustAllCertificates": { "index": 20, "kind": "property", "displayName": "Trust All Certificates", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of ov [...]
- "useDefaultCredentialsProvider": { "index": 21, "kind": "property", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set whether the Translate clien [...]
+ "useDefaultCredentialsProvider": { "index": 21, "kind": "property", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set whether the Secrets Manager [...]
"useSessionCredentials": { "index": 22, "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set whether the Secrets Manager client should ex [...]
},
"headers": {
@@ -81,7 +81,7 @@
"secretKey": { "index": 15, "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
"sessionToken": { "index": 16, "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
"trustAllCertificates": { "index": 17, "kind": "parameter", "displayName": "Trust All Certificates", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of o [...]
- "useDefaultCredentialsProvider": { "index": 18, "kind": "parameter", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set whether the Translate clie [...]
+ "useDefaultCredentialsProvider": { "index": 18, "kind": "parameter", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set whether the Secrets Manage [...]
"useSessionCredentials": { "index": 19, "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set whether the Secrets Manager client should e [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-athena.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-athena.json
index 57a23cfb9985..ae22a1de72be 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-athena.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-athena.json
@@ -35,31 +35,34 @@
"operation": { "index": 8, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.aws2.athena.Athena2Operations", "enum": [ "getQueryExecution", "getQueryResults", "listQueryExecutions", "startQueryExecution" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "startQueryExecution", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configur [...]
"outputLocation": { "index": 9, "kind": "property", "displayName": "Output Location", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The location in Amazon S3 where query results are stored, such as s3:\/\/path\/to\/query\/bucket\/. E [...]
"outputType": { "index": 10, "kind": "property", "displayName": "Output Type", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.aws2.athena.Athena2OutputType", "enum": [ "StreamList", "SelectList", "S3Pointer" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "StreamList", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "de [...]
- "queryExecutionId": { "index": 11, "kind": "property", "displayName": "Query Execution Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The unique ID identifying the query execution." },
- "queryString": { "index": 12, "kind": "property", "displayName": "Query String", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The SQL query to run. Except for simple queries, prefer setting this as the body of the Exchange or as a h [...]
- "region": { "index": 13, "kind": "property", "displayName": "Region", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "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", "eu-isoe-west-1", "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-nort [...]
- "resetWaitTimeoutOnRetry": { "index": 14, "kind": "property", "displayName": "Reset Wait Timeout On Retry", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Reset the waitTimeout countdown in the event of a query r [...]
- "retry": { "index": 15, "kind": "property", "displayName": "Retry", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "never", "always", "retryable", "exhausted", "generic" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "never", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional comma separ [...]
- "waitTimeout": { "index": 16, "kind": "property", "displayName": "Wait Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional max wait time in millis to wait for a successful query completion. See the section Waitin [...]
- "workGroup": { "index": 17, "kind": "property", "displayName": "Work Group", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The workgroup to use for running the query." },
- "amazonAthenaClient": { "index": 18, "kind": "property", "displayName": "Amazon Athena Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.athena.AthenaClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The AmazonAthena instance [...]
- "autowiredEnabled": { "index": 19, "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 [...]
- "clientRequestToken": { "index": 20, "kind": "property", "displayName": "Client Request Token", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "A unique string to ensure issues queries are idempotent. It is unlikely you will ne [...]
- "includeTrace": { "index": 21, "kind": "property", "displayName": "Include Trace", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Include useful trace information at the beginning of queries as an SQL comment (p [...]
- "healthCheckConsumerEnabled": { "index": 22, "kind": "property", "displayName": "Health Check Consumer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all consumer based health checks from this component" },
- "healthCheckProducerEnabled": { "index": 23, "kind": "property", "displayName": "Health Check Producer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all producer based health checks from this component. Notice: Camel has by default disabled all producer based health-checks. You can turn on produce [...]
- "proxyHost": { "index": 24, "kind": "property", "displayName": "Proxy Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Athena client." },
- "proxyPort": { "index": 25, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Athena client." },
- "proxyProtocol": { "index": 26, "kind": "property", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol w [...]
- "accessKey": { "index": 27, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key." },
- "encryptionOption": { "index": 28, "kind": "property", "displayName": "Encryption Option", "group": "security", "label": "security", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.services.athena.model.EncryptionOption", "enum": [ "SSE_S3", "SSE_KMS", "CSE_KMS", "null" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "descript [...]
- "kmsKey": { "index": 29, "kind": "property", "displayName": "Kms Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "For SSE-KMS and CSE-KMS, this is the KMS key ARN or ID." },
- "profileCredentialsName": { "index": 30, "kind": "property", "displayName": "Profile Credentials Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set the profil [...]
- "secretKey": { "index": 31, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key." },
- "sessionToken": { "index": 32, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
- "useDefaultCredentialsProvider": { "index": 33, "kind": "property", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect t [...]
- "useProfileCredentialsProvider": { "index": 34, "kind": "property", "displayName": "Use Profile Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect t [...]
- "useSessionCredentials": { "index": 35, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect to use Session Cre [...]
+ "overrideEndpoint": { "index": 11, "kind": "property", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be used in combina [...]
+ "queryExecutionId": { "index": 12, "kind": "property", "displayName": "Query Execution Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The unique ID identifying the query execution." },
+ "queryString": { "index": 13, "kind": "property", "displayName": "Query String", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The SQL query to run. Except for simple queries, prefer setting this as the body of the Exchange or as a h [...]
+ "region": { "index": 14, "kind": "property", "displayName": "Region", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "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", "eu-isoe-west-1", "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-nort [...]
+ "resetWaitTimeoutOnRetry": { "index": 15, "kind": "property", "displayName": "Reset Wait Timeout On Retry", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Reset the waitTimeout countdown in the event of a query r [...]
+ "retry": { "index": 16, "kind": "property", "displayName": "Retry", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "never", "always", "retryable", "exhausted", "generic" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "never", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional comma separ [...]
+ "uriEndpointOverride": { "index": 17, "kind": "property", "displayName": "Uri Endpoint Override", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set the overriding uri endpoint. This option needs to be used in combination with overrid [...]
+ "waitTimeout": { "index": 18, "kind": "property", "displayName": "Wait Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional max wait time in millis to wait for a successful query completion. See the section Waitin [...]
+ "workGroup": { "index": 19, "kind": "property", "displayName": "Work Group", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The workgroup to use for running the query." },
+ "amazonAthenaClient": { "index": 20, "kind": "property", "displayName": "Amazon Athena Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.athena.AthenaClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The AmazonAthena instance [...]
+ "autowiredEnabled": { "index": 21, "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 [...]
+ "clientRequestToken": { "index": 22, "kind": "property", "displayName": "Client Request Token", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "A unique string to ensure issues queries are idempotent. It is unlikely you will ne [...]
+ "includeTrace": { "index": 23, "kind": "property", "displayName": "Include Trace", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Include useful trace information at the beginning of queries as an SQL comment (p [...]
+ "healthCheckConsumerEnabled": { "index": 24, "kind": "property", "displayName": "Health Check Consumer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all consumer based health checks from this component" },
+ "healthCheckProducerEnabled": { "index": 25, "kind": "property", "displayName": "Health Check Producer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all producer based health checks from this component. Notice: Camel has by default disabled all producer based health-checks. You can turn on produce [...]
+ "proxyHost": { "index": 26, "kind": "property", "displayName": "Proxy Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Athena client." },
+ "proxyPort": { "index": 27, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Athena client." },
+ "proxyProtocol": { "index": 28, "kind": "property", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol w [...]
+ "accessKey": { "index": 29, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key." },
+ "encryptionOption": { "index": 30, "kind": "property", "displayName": "Encryption Option", "group": "security", "label": "security", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.services.athena.model.EncryptionOption", "enum": [ "SSE_S3", "SSE_KMS", "CSE_KMS", "null" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "descript [...]
+ "kmsKey": { "index": 31, "kind": "property", "displayName": "Kms Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "For SSE-KMS and CSE-KMS, this is the KMS key ARN or ID." },
+ "profileCredentialsName": { "index": 32, "kind": "property", "displayName": "Profile Credentials Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set the profil [...]
+ "secretKey": { "index": 33, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key." },
+ "sessionToken": { "index": 34, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
+ "trustAllCertificates": { "index": 35, "kind": "property", "displayName": "Trust All Certificates", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of overriding the e [...]
+ "useDefaultCredentialsProvider": { "index": 36, "kind": "property", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect t [...]
+ "useProfileCredentialsProvider": { "index": 37, "kind": "property", "displayName": "Use Profile Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect t [...]
+ "useSessionCredentials": { "index": 38, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect to use Session Cre [...]
},
"headers": {
"CamelAwsAthenaOperation": { "index": 0, "kind": "header", "displayName": "", "group": "all", "label": "all", "required": false, "javaType": "org.apache.camel.component.aws2.athena.Athena2Operations", "enum": [ "getQueryExecution", "getQueryResults", "listQueryExecutions", "startQueryExecution" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "startQueryExecution", "description": "The operation to perform. Permitted values are getQue [...]
@@ -96,28 +99,31 @@
"operation": { "index": 7, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.aws2.athena.Athena2Operations", "enum": [ "getQueryExecution", "getQueryResults", "listQueryExecutions", "startQueryExecution" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "startQueryExecution", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configu [...]
"outputLocation": { "index": 8, "kind": "parameter", "displayName": "Output Location", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The location in Amazon S3 where query results are stored, such as s3:\/\/path\/to\/query\/bucket\/. [...]
"outputType": { "index": 9, "kind": "parameter", "displayName": "Output Type", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.aws2.athena.Athena2OutputType", "enum": [ "StreamList", "SelectList", "S3Pointer" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "StreamList", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "de [...]
- "queryExecutionId": { "index": 10, "kind": "parameter", "displayName": "Query Execution Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The unique ID identifying the query execution." },
- "queryString": { "index": 11, "kind": "parameter", "displayName": "Query String", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The SQL query to run. Except for simple queries, prefer setting this as the body of the Exchange or as a [...]
- "region": { "index": 12, "kind": "parameter", "displayName": "Region", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "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", "eu-isoe-west-1", "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-nor [...]
- "resetWaitTimeoutOnRetry": { "index": 13, "kind": "parameter", "displayName": "Reset Wait Timeout On Retry", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Reset the waitTimeout countdown in the event of a query [...]
- "retry": { "index": 14, "kind": "parameter", "displayName": "Retry", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "never", "always", "retryable", "exhausted", "generic" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "never", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional comma sepa [...]
- "waitTimeout": { "index": 15, "kind": "parameter", "displayName": "Wait Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional max wait time in millis to wait for a successful query completion. See the section Waiti [...]
- "workGroup": { "index": 16, "kind": "parameter", "displayName": "Work Group", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The workgroup to use for running the query." },
- "lazyStartProducer": { "index": 17, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "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 produ [...]
- "amazonAthenaClient": { "index": 18, "kind": "parameter", "displayName": "Amazon Athena Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.athena.AthenaClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The AmazonAthena instance [...]
- "clientRequestToken": { "index": 19, "kind": "parameter", "displayName": "Client Request Token", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "A unique string to ensure issues queries are idempotent. It is unlikely you will n [...]
- "includeTrace": { "index": 20, "kind": "parameter", "displayName": "Include Trace", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Include useful trace information at the beginning of queries as an SQL comment ( [...]
- "proxyHost": { "index": 21, "kind": "parameter", "displayName": "Proxy Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Athena client." },
- "proxyPort": { "index": 22, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Athena client." },
- "proxyProtocol": { "index": 23, "kind": "parameter", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol [...]
- "accessKey": { "index": 24, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key." },
- "encryptionOption": { "index": 25, "kind": "parameter", "displayName": "Encryption Option", "group": "security", "label": "security", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.services.athena.model.EncryptionOption", "enum": [ "SSE_S3", "SSE_KMS", "CSE_KMS", "null" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "descrip [...]
- "kmsKey": { "index": 26, "kind": "parameter", "displayName": "Kms Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "For SSE-KMS and CSE-KMS, this is the KMS key ARN or ID." },
- "profileCredentialsName": { "index": 27, "kind": "parameter", "displayName": "Profile Credentials Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set the profi [...]
- "secretKey": { "index": 28, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key." },
- "sessionToken": { "index": 29, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
- "useDefaultCredentialsProvider": { "index": 30, "kind": "parameter", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect [...]
- "useProfileCredentialsProvider": { "index": 31, "kind": "parameter", "displayName": "Use Profile Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect [...]
- "useSessionCredentials": { "index": 32, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect to use Session Cr [...]
+ "overrideEndpoint": { "index": 10, "kind": "parameter", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be used in combin [...]
+ "queryExecutionId": { "index": 11, "kind": "parameter", "displayName": "Query Execution Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The unique ID identifying the query execution." },
+ "queryString": { "index": 12, "kind": "parameter", "displayName": "Query String", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The SQL query to run. Except for simple queries, prefer setting this as the body of the Exchange or as a [...]
+ "region": { "index": 13, "kind": "parameter", "displayName": "Region", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "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", "eu-isoe-west-1", "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-nor [...]
+ "resetWaitTimeoutOnRetry": { "index": 14, "kind": "parameter", "displayName": "Reset Wait Timeout On Retry", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Reset the waitTimeout countdown in the event of a query [...]
+ "retry": { "index": 15, "kind": "parameter", "displayName": "Retry", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "never", "always", "retryable", "exhausted", "generic" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "never", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional comma sepa [...]
+ "uriEndpointOverride": { "index": 16, "kind": "parameter", "displayName": "Uri Endpoint Override", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set the overriding uri endpoint. This option needs to be used in combination with overri [...]
+ "waitTimeout": { "index": 17, "kind": "parameter", "displayName": "Wait Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional max wait time in millis to wait for a successful query completion. See the section Waiti [...]
+ "workGroup": { "index": 18, "kind": "parameter", "displayName": "Work Group", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The workgroup to use for running the query." },
+ "lazyStartProducer": { "index": 19, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "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 produ [...]
+ "amazonAthenaClient": { "index": 20, "kind": "parameter", "displayName": "Amazon Athena Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.athena.AthenaClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The AmazonAthena instance [...]
+ "clientRequestToken": { "index": 21, "kind": "parameter", "displayName": "Client Request Token", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "A unique string to ensure issues queries are idempotent. It is unlikely you will n [...]
+ "includeTrace": { "index": 22, "kind": "parameter", "displayName": "Include Trace", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Include useful trace information at the beginning of queries as an SQL comment ( [...]
+ "proxyHost": { "index": 23, "kind": "parameter", "displayName": "Proxy Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Athena client." },
+ "proxyPort": { "index": 24, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Athena client." },
+ "proxyProtocol": { "index": 25, "kind": "parameter", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol [...]
+ "accessKey": { "index": 26, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key." },
+ "encryptionOption": { "index": 27, "kind": "parameter", "displayName": "Encryption Option", "group": "security", "label": "security", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.services.athena.model.EncryptionOption", "enum": [ "SSE_S3", "SSE_KMS", "CSE_KMS", "null" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "descrip [...]
+ "kmsKey": { "index": 28, "kind": "parameter", "displayName": "Kms Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "For SSE-KMS and CSE-KMS, this is the KMS key ARN or ID." },
+ "profileCredentialsName": { "index": 29, "kind": "parameter", "displayName": "Profile Credentials Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set the profi [...]
+ "secretKey": { "index": 30, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key." },
+ "sessionToken": { "index": 31, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
+ "trustAllCertificates": { "index": 32, "kind": "parameter", "displayName": "Trust All Certificates", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of overriding the [...]
+ "useDefaultCredentialsProvider": { "index": 33, "kind": "parameter", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect [...]
+ "useProfileCredentialsProvider": { "index": 34, "kind": "parameter", "displayName": "Use Profile Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect [...]
+ "useSessionCredentials": { "index": 35, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect to use Session Cr [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-timestream.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-timestream.json
index f723b0f3097a..cc9f02cf6500 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-timestream.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-timestream.json
@@ -44,7 +44,9 @@
"proxyPort": { "index": 17, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Timestream client" },
"proxyProtocol": { "index": 18, "kind": "property", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "To define a proxy pr [...]
"accessKey": { "index": 19, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
- "secretKey": { "index": 20, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" }
+ "secretKey": { "index": 20, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
+ "sessionToken": { "index": 21, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
+ "useSessionCredentials": { "index": 22, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Set whether the Timestream client should expect to use [...]
},
"headers": {
"CamelAwsTimestreamOperation": { "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.timestream.Timestream2Constants#OPERATION" },
@@ -105,6 +107,8 @@
"proxyPort": { "index": 15, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Timestream client" },
"proxyProtocol": { "index": 16, "kind": "parameter", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "To define a proxy p [...]
"accessKey": { "index": 17, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
- "secretKey": { "index": 18, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" }
+ "secretKey": { "index": 18, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
+ "sessionToken": { "index": 19, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
+ "useSessionCredentials": { "index": 20, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Set whether the Timestream client should expect to us [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-transcribe.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-transcribe.json
index a8b1088ede3b..9da016371f30 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-transcribe.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-transcribe.json
@@ -33,7 +33,7 @@
"protocol": { "index": 6, "kind": "property", "displayName": "Protocol", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol when in [...]
"proxyHost": { "index": 7, "kind": "property", "displayName": "Proxy Host", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Transcribe client" },
"proxyPort": { "index": 8, "kind": "property", "displayName": "Proxy Port", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Transcribe client" },
- "proxyProtocol": { "index": 9, "kind": "property", "displayName": "Proxy Protocol", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol when instantiating the Transcribe client" },
+ "proxyProtocol": { "index": 9, "kind": "property", "displayName": "Proxy Protocol", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy proto [...]
"region": { "index": 10, "kind": "property", "displayName": "Region", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "The region in which Transcribe client needs to work. When using this parameter, the configuration will expect [...]
"transcribeClient": { "index": 11, "kind": "property", "displayName": "Transcribe Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.transcribe.TranscribeClient", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To use a existing configured AWS Transcribe a [...]
"trustAllCertificates": { "index": 12, "kind": "property", "displayName": "Trust All Certificates", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of overriding the en [...]
@@ -73,7 +73,7 @@
"protocol": { "index": 5, "kind": "parameter", "displayName": "Protocol", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol when i [...]
"proxyHost": { "index": 6, "kind": "parameter", "displayName": "Proxy Host", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Transcribe client" },
"proxyPort": { "index": 7, "kind": "parameter", "displayName": "Proxy Port", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Transcribe client" },
- "proxyProtocol": { "index": 8, "kind": "parameter", "displayName": "Proxy Protocol", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol when instantiating the Transcribe client" },
+ "proxyProtocol": { "index": 8, "kind": "parameter", "displayName": "Proxy Protocol", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy prot [...]
"region": { "index": 9, "kind": "parameter", "displayName": "Region", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "The region in which Transcribe client needs to work. When using this parameter, the configuration will expect [...]
"transcribeClient": { "index": 10, "kind": "parameter", "displayName": "Transcribe Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.transcribe.TranscribeClient", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To use a existing configured AWS Transcribe [...]
"trustAllCertificates": { "index": 11, "kind": "parameter", "displayName": "Trust All Certificates", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of overriding the e [...]
diff --git a/components/camel-aws/camel-aws-bedrock/pom.xml b/components/camel-aws/camel-aws-bedrock/pom.xml
index 9418097e2f65..b4a1ae80d908 100644
--- a/components/camel-aws/camel-aws-bedrock/pom.xml
+++ b/components/camel-aws/camel-aws-bedrock/pom.xml
@@ -40,6 +40,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-aws-common</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jackson</artifactId>
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentConfiguration.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentConfiguration.java
index 3d2f459e79e2..77cedc9b85b1 100644
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentConfiguration.java
+++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentConfiguration.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.aws2.bedrock.agent;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -25,7 +26,7 @@ import software.amazon.awssdk.core.Protocol;
import software.amazon.awssdk.services.bedrockagent.BedrockAgentClient;
@UriParams
-public class BedrockAgentConfiguration implements Cloneable {
+public class BedrockAgentConfiguration implements Cloneable, AwsCommonConfiguration {
@UriPath(description = "Logical name")
@Metadata(required = true)
@@ -232,7 +233,7 @@ public class BedrockAgentConfiguration implements Cloneable {
this.useDefaultCredentialsProvider = useDefaultCredentialsProvider;
}
- public Boolean isUseDefaultCredentialsProvider() {
+ public boolean isUseDefaultCredentialsProvider() {
return useDefaultCredentialsProvider;
}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentEndpoint.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentEndpoint.java
index e2f9e611d1d2..316942ea3b9f 100644
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentEndpoint.java
+++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentEndpoint.java
@@ -74,7 +74,7 @@ public class BedrockAgentEndpoint extends ScheduledPollEndpoint implements Endpo
bedrockAgentClient = configuration.getBedrockAgentClient() != null
? configuration.getBedrockAgentClient()
- : BedrockAgentClientFactory.getBedrockAgentClient(configuration).getBedrockAgentClient();
+ : BedrockAgentClientFactory.getBedrockAgentClient(configuration);
}
@Override
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/BedrockAgentClientFactory.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/BedrockAgentClientFactory.java
index a2156edc1074..3c1edeaeecf1 100644
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/BedrockAgentClientFactory.java
+++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/BedrockAgentClientFactory.java
@@ -16,14 +16,12 @@
*/
package org.apache.camel.component.aws2.bedrock.agent.client;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
import org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration;
-import org.apache.camel.component.aws2.bedrock.agent.client.impl.BedrockAgentClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.bedrock.agent.client.impl.BedrockAgentClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws2.bedrock.agent.client.impl.BedrockAgentClientSessionTokenImpl;
-import org.apache.camel.component.aws2.bedrock.agent.client.impl.BedrockAgentClientStandardImpl;
+import software.amazon.awssdk.services.bedrockagent.BedrockAgentClient;
/**
- * Factory class to return the correct type of AWS Bedrock runtime client.
+ * Factory class to create AWS Bedrock Agent clients using common configuration.
*/
public final class BedrockAgentClientFactory {
@@ -31,21 +29,14 @@ public final class BedrockAgentClientFactory {
}
/**
- * Return the correct AWS Bedrock Agent client (based on remote vs local).
+ * Create a BedrockAgentClient based on configuration.
*
- * @param configuration configuration
- * @return BedrockAgentInternalClient
+ * @param configuration The Bedrock Agent configuration
+ * @return Configured BedrockAgentClient
*/
- public static BedrockAgentInternalClient getBedrockAgentClient(
- BedrockAgentConfiguration configuration) {
- if (Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())) {
- return new BedrockAgentClientIAMOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseProfileCredentialsProvider())) {
- return new BedrockAgentClientIAMProfileOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseSessionCredentials())) {
- return new BedrockAgentClientSessionTokenImpl(configuration);
- } else {
- return new BedrockAgentClientStandardImpl(configuration);
- }
+ public static BedrockAgentClient getBedrockAgentClient(BedrockAgentConfiguration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ BedrockAgentClient::builder);
}
}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/BedrockAgentInternalClient.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/BedrockAgentInternalClient.java
deleted file mode 100644
index cf1253f24373..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/BedrockAgentInternalClient.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.bedrock.agent.client;
-
-import software.amazon.awssdk.services.bedrockagent.BedrockAgentClient;
-
-/**
- * Manage the required actions of an Bedrock Agent client for either local or remote.
- */
-public interface BedrockAgentInternalClient {
-
- /**
- * Returns an Bedrock Agent client after a factory method determines which one to return.
- *
- * @return BedrockAgentClient BedrockAgentClient
- */
- BedrockAgentClient getBedrockAgentClient();
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/impl/BedrockAgentClientIAMOptimizedImpl.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/impl/BedrockAgentClientIAMOptimizedImpl.java
deleted file mode 100644
index a75266bed056..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/impl/BedrockAgentClientIAMOptimizedImpl.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * 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.bedrock.agent.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration;
-import org.apache.camel.component.aws2.bedrock.agent.client.BedrockAgentInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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.bedrockagent.BedrockAgentClient;
-import software.amazon.awssdk.services.bedrockagent.BedrockAgentClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Bedrock Agent client for all users to use (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class BedrockAgentClientIAMOptimizedImpl implements BedrockAgentInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(BedrockAgentClientIAMOptimizedImpl.class);
- private BedrockAgentConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public BedrockAgentClientIAMOptimizedImpl(BedrockAgentConfiguration configuration) {
- LOG.trace(
- "Creating an AWS Bedrock Agent client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Bedrock Agent aws client that is used.
- *
- * @return BedrockAgentClient Client.
- */
- @Override
- public BedrockAgentClient getBedrockAgentClient() {
- BedrockAgentClient client = null;
- BedrockAgentClientBuilder clientBuilder = BedrockAgentClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/impl/BedrockAgentClientIAMProfileOptimizedImpl.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/impl/BedrockAgentClientIAMProfileOptimizedImpl.java
deleted file mode 100644
index f1b814ad2122..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/impl/BedrockAgentClientIAMProfileOptimizedImpl.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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.bedrock.agent.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration;
-import org.apache.camel.component.aws2.bedrock.agent.client.BedrockAgentInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
-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.bedrockagent.BedrockAgentClient;
-import software.amazon.awssdk.services.bedrockagent.BedrockAgentClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Bedrock Agent Runtime client for all users to use (enabling temporary creds). This implementation is
- * for remote instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class BedrockAgentClientIAMProfileOptimizedImpl implements BedrockAgentInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(BedrockAgentClientIAMProfileOptimizedImpl.class);
- private BedrockAgentConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public BedrockAgentClientIAMProfileOptimizedImpl(BedrockAgentConfiguration configuration) {
- LOG.trace(
- "Creating an AWS Bedrock Agent client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Bedrock Agent aws client that is used.
- *
- * @return Bedrock Agent Client.
- */
- @Override
- public BedrockAgentClient getBedrockAgentClient() {
- BedrockAgentClient client = null;
- BedrockAgentClientBuilder clientBuilder = BedrockAgentClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
- }
- if (configuration.getProfileCredentialsName() != null) {
- clientBuilder = clientBuilder
- .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.isOverrideEndpoint()) {
- clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
- }
- if (configuration.isTrustAllCertificates()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/impl/BedrockAgentClientSessionTokenImpl.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/impl/BedrockAgentClientSessionTokenImpl.java
deleted file mode 100644
index e415e650662e..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/impl/BedrockAgentClientSessionTokenImpl.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * 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.bedrock.agent.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration;
-import org.apache.camel.component.aws2.bedrock.agent.client.BedrockAgentInternalClient;
-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.bedrockagent.BedrockAgentClient;
-import software.amazon.awssdk.services.bedrockagent.BedrockAgentClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Bedrock Agent client for all users to use. This implementation is for local instances to use a static
- * and solid credential set.
- */
-public class BedrockAgentClientSessionTokenImpl implements BedrockAgentInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(BedrockAgentClientSessionTokenImpl.class);
- private BedrockAgentConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public BedrockAgentClientSessionTokenImpl(BedrockAgentConfiguration configuration) {
- LOG.trace("Creating an AWS Bedrock Agent manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Bedrock Agent AWS client that is used.
- *
- * @return BedrockAgentClient Client.
- */
- @Override
- public BedrockAgentClient getBedrockAgentClient() {
- BedrockAgentClient client = null;
- BedrockAgentClientBuilder clientBuilder = BedrockAgentClient.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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/impl/BedrockAgentClientStandardImpl.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/impl/BedrockAgentClientStandardImpl.java
deleted file mode 100644
index 8d09a255eb26..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/client/impl/BedrockAgentClientStandardImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.bedrock.agent.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration;
-import org.apache.camel.component.aws2.bedrock.agent.client.BedrockAgentInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-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.bedrockagent.BedrockAgentClient;
-import software.amazon.awssdk.services.bedrockagent.BedrockAgentClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Bedrock Agent Runtime client for all users to use. This implementation is for local instances to use a
- * static and solid credential set.
- */
-public class BedrockAgentClientStandardImpl implements BedrockAgentInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(BedrockAgentClientStandardImpl.class);
- private BedrockAgentConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public BedrockAgentClientStandardImpl(BedrockAgentConfiguration configuration) {
- LOG.trace("Creating an AWS Bedrock Agent manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Bedrock Agent AWS client that is used.
- *
- * @return BedrockAgentClient Client.
- */
- @Override
- public BedrockAgentClient getBedrockAgentClient() {
- BedrockAgentClient client = null;
- BedrockAgentClientBuilder clientBuilder = BedrockAgentClient.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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/BedrockAgentRuntimeConfiguration.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/BedrockAgentRuntimeConfiguration.java
index 89326c39871e..c3bc5de3cb63 100644
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/BedrockAgentRuntimeConfiguration.java
+++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/BedrockAgentRuntimeConfiguration.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.aws2.bedrock.agentruntime;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -25,7 +26,7 @@ import software.amazon.awssdk.core.Protocol;
import software.amazon.awssdk.services.bedrockagentruntime.BedrockAgentRuntimeClient;
@UriParams
-public class BedrockAgentRuntimeConfiguration implements Cloneable {
+public class BedrockAgentRuntimeConfiguration implements Cloneable, AwsCommonConfiguration {
@UriPath(description = "Logical name")
@Metadata(required = true)
@@ -227,7 +228,7 @@ public class BedrockAgentRuntimeConfiguration implements Cloneable {
this.useDefaultCredentialsProvider = useDefaultCredentialsProvider;
}
- public Boolean isUseDefaultCredentialsProvider() {
+ public boolean isUseDefaultCredentialsProvider() {
return useDefaultCredentialsProvider;
}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/BedrockAgentRuntimeEndpoint.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/BedrockAgentRuntimeEndpoint.java
index ee48a087ac20..7e2fbce5f782 100644
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/BedrockAgentRuntimeEndpoint.java
+++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/BedrockAgentRuntimeEndpoint.java
@@ -67,7 +67,7 @@ public class BedrockAgentRuntimeEndpoint extends ScheduledPollEndpoint implement
bedrockAgentRuntimeClient = configuration.getBedrockAgentRuntimeClient() != null
? configuration.getBedrockAgentRuntimeClient()
- : BedrockAgentRuntimeClientFactory.getBedrockAgentRuntimeClient(configuration).getBedrockAgentRuntimeClient();
+ : BedrockAgentRuntimeClientFactory.getBedrockAgentRuntimeClient(configuration);
}
@Override
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/BedrockAgentRuntimeClientFactory.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/BedrockAgentRuntimeClientFactory.java
index 2bf95bb7a2cd..b63354c10335 100644
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/BedrockAgentRuntimeClientFactory.java
+++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/BedrockAgentRuntimeClientFactory.java
@@ -16,14 +16,12 @@
*/
package org.apache.camel.component.aws2.bedrock.agentruntime.client;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
import org.apache.camel.component.aws2.bedrock.agentruntime.BedrockAgentRuntimeConfiguration;
-import org.apache.camel.component.aws2.bedrock.agentruntime.client.impl.BedrockAgentRuntimeClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.bedrock.agentruntime.client.impl.BedrockAgentRuntimeClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws2.bedrock.agentruntime.client.impl.BedrockAgentRuntimeClientSessionTokenImpl;
-import org.apache.camel.component.aws2.bedrock.agentruntime.client.impl.BedrockAgentRuntimeClientStandardImpl;
+import software.amazon.awssdk.services.bedrockagentruntime.BedrockAgentRuntimeClient;
/**
- * Factory class to return the correct type of AWS Bedrock runtime client.
+ * Factory class to create AWS Bedrock Agent Runtime clients using common configuration.
*/
public final class BedrockAgentRuntimeClientFactory {
@@ -31,21 +29,14 @@ public final class BedrockAgentRuntimeClientFactory {
}
/**
- * Return the correct AWS Bedrock Agent runtime client (based on remote vs local).
+ * Create a BedrockAgentRuntimeClient based on configuration.
*
- * @param configuration configuration
- * @return BedrockAgentRuntimeInternalClient
+ * @param configuration The Bedrock Agent Runtime configuration
+ * @return Configured BedrockAgentRuntimeClient
*/
- public static BedrockAgentRuntimeInternalClient getBedrockAgentRuntimeClient(
- BedrockAgentRuntimeConfiguration configuration) {
- if (Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())) {
- return new BedrockAgentRuntimeClientIAMOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseProfileCredentialsProvider())) {
- return new BedrockAgentRuntimeClientIAMProfileOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseSessionCredentials())) {
- return new BedrockAgentRuntimeClientSessionTokenImpl(configuration);
- } else {
- return new BedrockAgentRuntimeClientStandardImpl(configuration);
- }
+ public static BedrockAgentRuntimeClient getBedrockAgentRuntimeClient(BedrockAgentRuntimeConfiguration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ BedrockAgentRuntimeClient::builder);
}
}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/BedrockAgentRuntimeInternalClient.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/BedrockAgentRuntimeInternalClient.java
deleted file mode 100644
index c254cf1f87f0..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/BedrockAgentRuntimeInternalClient.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.bedrock.agentruntime.client;
-
-import software.amazon.awssdk.services.bedrockagentruntime.BedrockAgentRuntimeClient;
-
-/**
- * Manage the required actions of an Bedrock Agent Runtime client for either local or remote.
- */
-public interface BedrockAgentRuntimeInternalClient {
-
- /**
- * Returns an Bedrock Agent Runtime client after a factory method determines which one to return.
- *
- * @return BedrockRuntimeClient BedrockRuntimeClient
- */
- BedrockAgentRuntimeClient getBedrockAgentRuntimeClient();
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/impl/BedrockAgentRuntimeClientIAMOptimizedImpl.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/impl/BedrockAgentRuntimeClientIAMOptimizedImpl.java
deleted file mode 100644
index dbd9730a5b04..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/impl/BedrockAgentRuntimeClientIAMOptimizedImpl.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * 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.bedrock.agentruntime.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.bedrock.agentruntime.BedrockAgentRuntimeConfiguration;
-import org.apache.camel.component.aws2.bedrock.agentruntime.client.BedrockAgentRuntimeInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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.bedrockagentruntime.BedrockAgentRuntimeClient;
-import software.amazon.awssdk.services.bedrockagentruntime.BedrockAgentRuntimeClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Bedrock Runtime client for all users to use (enabling temporary creds). This implementation is for
- * remote instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class BedrockAgentRuntimeClientIAMOptimizedImpl implements BedrockAgentRuntimeInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(BedrockAgentRuntimeClientIAMOptimizedImpl.class);
- private BedrockAgentRuntimeConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public BedrockAgentRuntimeClientIAMOptimizedImpl(BedrockAgentRuntimeConfiguration configuration) {
- LOG.trace(
- "Creating an AWS Bedrock Agent Runtime client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Bedrock Agent Runtime aws client that is used.
- *
- * @return BedrockAgentRuntimeClient Client.
- */
- @Override
- public BedrockAgentRuntimeClient getBedrockAgentRuntimeClient() {
- BedrockAgentRuntimeClient client = null;
- BedrockAgentRuntimeClientBuilder clientBuilder = BedrockAgentRuntimeClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/impl/BedrockAgentRuntimeClientIAMProfileOptimizedImpl.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/impl/BedrockAgentRuntimeClientIAMProfileOptimizedImpl.java
deleted file mode 100644
index f41c6583e139..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/impl/BedrockAgentRuntimeClientIAMProfileOptimizedImpl.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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.bedrock.agentruntime.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.bedrock.agentruntime.BedrockAgentRuntimeConfiguration;
-import org.apache.camel.component.aws2.bedrock.agentruntime.client.BedrockAgentRuntimeInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
-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.bedrockagentruntime.BedrockAgentRuntimeClient;
-import software.amazon.awssdk.services.bedrockagentruntime.BedrockAgentRuntimeClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Bedrock Agent Runtime client for all users to use (enabling temporary creds). This implementation is
- * for remote instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class BedrockAgentRuntimeClientIAMProfileOptimizedImpl implements BedrockAgentRuntimeInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(BedrockAgentRuntimeClientIAMProfileOptimizedImpl.class);
- private BedrockAgentRuntimeConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public BedrockAgentRuntimeClientIAMProfileOptimizedImpl(BedrockAgentRuntimeConfiguration configuration) {
- LOG.trace(
- "Creating an AWS Bedrock Agent Runtime client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Bedrock Agent Runtime aws client that is used.
- *
- * @return Bedrock Agent Runtime Client.
- */
- @Override
- public BedrockAgentRuntimeClient getBedrockAgentRuntimeClient() {
- BedrockAgentRuntimeClient client = null;
- BedrockAgentRuntimeClientBuilder clientBuilder = BedrockAgentRuntimeClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
- }
- if (configuration.getProfileCredentialsName() != null) {
- clientBuilder = clientBuilder
- .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.isOverrideEndpoint()) {
- clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
- }
- if (configuration.isTrustAllCertificates()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/impl/BedrockAgentRuntimeClientSessionTokenImpl.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/impl/BedrockAgentRuntimeClientSessionTokenImpl.java
deleted file mode 100644
index 65ed10cfb280..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/impl/BedrockAgentRuntimeClientSessionTokenImpl.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * 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.bedrock.agentruntime.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.bedrock.agentruntime.BedrockAgentRuntimeConfiguration;
-import org.apache.camel.component.aws2.bedrock.agentruntime.client.BedrockAgentRuntimeInternalClient;
-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.bedrockagentruntime.BedrockAgentRuntimeClient;
-import software.amazon.awssdk.services.bedrockagentruntime.BedrockAgentRuntimeClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Bedrock Agent Runtime client for all users to use. This implementation is for local instances to use a
- * static and solid credential set.
- */
-public class BedrockAgentRuntimeClientSessionTokenImpl implements BedrockAgentRuntimeInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(BedrockAgentRuntimeClientSessionTokenImpl.class);
- private BedrockAgentRuntimeConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public BedrockAgentRuntimeClientSessionTokenImpl(BedrockAgentRuntimeConfiguration configuration) {
- LOG.trace("Creating an AWS Bedrock Agent Runtime manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Bedrock Agent Runtime AWS client that is used.
- *
- * @return BedrockAgentRuntimeClient Client.
- */
- @Override
- public BedrockAgentRuntimeClient getBedrockAgentRuntimeClient() {
- BedrockAgentRuntimeClient client = null;
- BedrockAgentRuntimeClientBuilder clientBuilder = BedrockAgentRuntimeClient.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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/impl/BedrockAgentRuntimeClientStandardImpl.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/impl/BedrockAgentRuntimeClientStandardImpl.java
deleted file mode 100644
index cc8e788ba95d..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agentruntime/client/impl/BedrockAgentRuntimeClientStandardImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.bedrock.agentruntime.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.bedrock.agentruntime.BedrockAgentRuntimeConfiguration;
-import org.apache.camel.component.aws2.bedrock.agentruntime.client.BedrockAgentRuntimeInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-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.bedrockagentruntime.BedrockAgentRuntimeClient;
-import software.amazon.awssdk.services.bedrockagentruntime.BedrockAgentRuntimeClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Bedrock Agent Runtime client for all users to use. This implementation is for local instances to use a
- * static and solid credential set.
- */
-public class BedrockAgentRuntimeClientStandardImpl implements BedrockAgentRuntimeInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(BedrockAgentRuntimeClientStandardImpl.class);
- private BedrockAgentRuntimeConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public BedrockAgentRuntimeClientStandardImpl(BedrockAgentRuntimeConfiguration configuration) {
- LOG.trace("Creating an AWS Bedrock Agent Runtime manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Bedrock Agent Runtime AWS client that is used.
- *
- * @return BedrockAgenRuitimeClient Client.
- */
- @Override
- public BedrockAgentRuntimeClient getBedrockAgentRuntimeClient() {
- BedrockAgentRuntimeClient client = null;
- BedrockAgentRuntimeClientBuilder clientBuilder = BedrockAgentRuntimeClient.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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockConfiguration.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockConfiguration.java
index 50fd0ecd0097..06cf99a518ce 100644
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockConfiguration.java
+++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockConfiguration.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.aws2.bedrock.runtime;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -25,7 +26,7 @@ import software.amazon.awssdk.core.Protocol;
import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient;
@UriParams
-public class BedrockConfiguration implements Cloneable {
+public class BedrockConfiguration implements Cloneable, AwsCommonConfiguration {
@UriPath(description = "Logical name")
@Metadata(required = true)
@@ -248,7 +249,7 @@ public class BedrockConfiguration implements Cloneable {
this.useDefaultCredentialsProvider = useDefaultCredentialsProvider;
}
- public Boolean isUseDefaultCredentialsProvider() {
+ public boolean isUseDefaultCredentialsProvider() {
return useDefaultCredentialsProvider;
}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockEndpoint.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockEndpoint.java
index 24505dee95cc..93013de2a489 100644
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockEndpoint.java
+++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockEndpoint.java
@@ -74,12 +74,12 @@ public class BedrockEndpoint extends ScheduledPollEndpoint implements EndpointSe
// Get sync client
bedrockRuntimeClient = configuration.getBedrockRuntimeClient() != null
? configuration.getBedrockRuntimeClient()
- : BedrockClientFactory.getBedrockRuntimeClient(configuration).getBedrockRuntimeClient();
+ : BedrockClientFactory.getBedrockRuntimeClient(configuration);
// Get async client for streaming operations
bedrockRuntimeAsyncClient = configuration.getBedrockRuntimeAsyncClient() != null
? configuration.getBedrockRuntimeAsyncClient()
- : BedrockClientFactory.getBedrockRuntimeClient(configuration).getBedrockRuntimeAsyncClient();
+ : BedrockClientFactory.getBedrockRuntimeAsyncClient(configuration);
}
@Override
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/BedrockClientFactory.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/BedrockClientFactory.java
index 96417a59ceb8..47738a6dde7c 100644
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/BedrockClientFactory.java
+++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/BedrockClientFactory.java
@@ -16,14 +16,13 @@
*/
package org.apache.camel.component.aws2.bedrock.runtime.client;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
import org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration;
-import org.apache.camel.component.aws2.bedrock.runtime.client.impl.BedrockRuntimeClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.bedrock.runtime.client.impl.BedrockRuntimeClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws2.bedrock.runtime.client.impl.BedrockRuntimeClientSessionTokenImpl;
-import org.apache.camel.component.aws2.bedrock.runtime.client.impl.BedrockRuntimeClientStandardImpl;
+import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeAsyncClient;
+import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient;
/**
- * Factory class to return the correct type of AWS Bedrock runtime client.
+ * Factory class to create AWS Bedrock Runtime clients using common configuration.
*/
public final class BedrockClientFactory {
@@ -31,20 +30,26 @@ public final class BedrockClientFactory {
}
/**
- * Return the correct AWS Bedrock runtime client (based on remote vs local).
+ * Create a BedrockRuntimeClient (sync) based on configuration.
*
- * @param configuration configuration
- * @return BedrockRuntimeInternalClient
+ * @param configuration The Bedrock configuration
+ * @return Configured BedrockRuntimeClient
*/
- public static BedrockRuntimeInternalClient getBedrockRuntimeClient(BedrockConfiguration configuration) {
- if (Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())) {
- return new BedrockRuntimeClientIAMOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseProfileCredentialsProvider())) {
- return new BedrockRuntimeClientIAMProfileOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseSessionCredentials())) {
- return new BedrockRuntimeClientSessionTokenImpl(configuration);
- } else {
- return new BedrockRuntimeClientStandardImpl(configuration);
- }
+ public static BedrockRuntimeClient getBedrockRuntimeClient(BedrockConfiguration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ BedrockRuntimeClient::builder);
+ }
+
+ /**
+ * Create a BedrockRuntimeAsyncClient based on configuration.
+ *
+ * @param configuration The Bedrock configuration
+ * @return Configured BedrockRuntimeAsyncClient
+ */
+ public static BedrockRuntimeAsyncClient getBedrockRuntimeAsyncClient(BedrockConfiguration configuration) {
+ return AwsClientBuilderUtil.buildAsyncClient(
+ configuration,
+ BedrockRuntimeAsyncClient::builder);
}
}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/BedrockRuntimeInternalClient.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/BedrockRuntimeInternalClient.java
deleted file mode 100644
index 25efb6424016..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/BedrockRuntimeInternalClient.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.bedrock.runtime.client;
-
-import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeAsyncClient;
-import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient;
-
-/**
- * Manage the required actions of an Bedrock Runtime client for either local or remote.
- */
-public interface BedrockRuntimeInternalClient {
-
- /**
- * Returns an Bedrock Runtime client after a factory method determines which one to return.
- *
- * @return BedrockRuntimeClient BedrockRuntimeClient
- */
- BedrockRuntimeClient getBedrockRuntimeClient();
-
- /**
- * Returns an Bedrock Runtime async client for streaming operations.
- *
- * @return BedrockRuntimeAsyncClient BedrockRuntimeAsyncClient
- */
- BedrockRuntimeAsyncClient getBedrockRuntimeAsyncClient();
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/impl/BedrockRuntimeClientIAMOptimizedImpl.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/impl/BedrockRuntimeClientIAMOptimizedImpl.java
deleted file mode 100644
index 27790c26aabb..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/impl/BedrockRuntimeClientIAMOptimizedImpl.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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.bedrock.runtime.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration;
-import org.apache.camel.component.aws2.bedrock.runtime.client.BedrockRuntimeInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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.bedrockruntime.BedrockRuntimeAsyncClient;
-import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeAsyncClientBuilder;
-import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient;
-import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Bedrock Runtime client for all users to use (enabling temporary creds). This implementation is for
- * remote instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class BedrockRuntimeClientIAMOptimizedImpl implements BedrockRuntimeInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(BedrockRuntimeClientIAMOptimizedImpl.class);
- private BedrockConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public BedrockRuntimeClientIAMOptimizedImpl(BedrockConfiguration configuration) {
- LOG.trace(
- "Creating an AWS Bedrock Runtime client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Bedrock aws client that is used.
- *
- * @return BedrockRuntimeClient Client.
- */
- @Override
- public BedrockRuntimeClient getBedrockRuntimeClient() {
- BedrockRuntimeClient client = null;
- BedrockRuntimeClientBuilder clientBuilder = BedrockRuntimeClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-
- @Override
- public BedrockRuntimeAsyncClient getBedrockRuntimeAsyncClient() {
- BedrockRuntimeAsyncClient client = null;
- BedrockRuntimeAsyncClientBuilder clientBuilder = BedrockRuntimeAsyncClient.builder();
-
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.isOverrideEndpoint()) {
- clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
- }
- // Note: Async clients use default credentials provider and Netty HTTP client
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/impl/BedrockRuntimeClientIAMProfileOptimizedImpl.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/impl/BedrockRuntimeClientIAMProfileOptimizedImpl.java
deleted file mode 100644
index 24a17b8123f1..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/impl/BedrockRuntimeClientIAMProfileOptimizedImpl.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * 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.bedrock.runtime.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration;
-import org.apache.camel.component.aws2.bedrock.runtime.client.BedrockRuntimeInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
-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.bedrockruntime.BedrockRuntimeAsyncClient;
-import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeAsyncClientBuilder;
-import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient;
-import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Bedrock Runtime client for all users to use (enabling temporary creds). This implementation is for
- * remote instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class BedrockRuntimeClientIAMProfileOptimizedImpl implements BedrockRuntimeInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(BedrockRuntimeClientIAMProfileOptimizedImpl.class);
- private BedrockConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public BedrockRuntimeClientIAMProfileOptimizedImpl(BedrockConfiguration configuration) {
- LOG.trace(
- "Creating an AWS Bedrock Runtime client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Bedrock Runtime aws client that is used.
- *
- * @return Bedrock Runtime Client.
- */
- @Override
- public BedrockRuntimeClient getBedrockRuntimeClient() {
- BedrockRuntimeClient client = null;
- BedrockRuntimeClientBuilder clientBuilder = BedrockRuntimeClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
- }
- if (configuration.getProfileCredentialsName() != null) {
- clientBuilder = clientBuilder
- .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.isOverrideEndpoint()) {
- clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
- }
- if (configuration.isTrustAllCertificates()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-
- @Override
- public BedrockRuntimeAsyncClient getBedrockRuntimeAsyncClient() {
- BedrockRuntimeAsyncClient client = null;
- BedrockRuntimeAsyncClientBuilder clientBuilder = BedrockRuntimeAsyncClient.builder();
-
- if (configuration.getProfileCredentialsName() != null) {
- clientBuilder = clientBuilder
- .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.isOverrideEndpoint()) {
- clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
- }
- // Note: Async clients use Netty by default, proxy and TLS configuration would require NettyNioAsyncHttpClient
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/impl/BedrockRuntimeClientSessionTokenImpl.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/impl/BedrockRuntimeClientSessionTokenImpl.java
deleted file mode 100644
index 9d591fdabda9..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/impl/BedrockRuntimeClientSessionTokenImpl.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * 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.bedrock.runtime.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration;
-import org.apache.camel.component.aws2.bedrock.runtime.client.BedrockRuntimeInternalClient;
-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.bedrockruntime.BedrockRuntimeAsyncClient;
-import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeAsyncClientBuilder;
-import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient;
-import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Bedrock Runtime client for all users to use. This implementation is for local instances to use a static
- * and solid credential set.
- */
-public class BedrockRuntimeClientSessionTokenImpl implements BedrockRuntimeInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(BedrockRuntimeClientSessionTokenImpl.class);
- private BedrockConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public BedrockRuntimeClientSessionTokenImpl(BedrockConfiguration configuration) {
- LOG.trace("Creating an AWS Bedrock Runtime manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Bedrock Runtime AWS client that is used.
- *
- * @return BedrockRuntimeClient Client.
- */
- @Override
- public BedrockRuntimeClient getBedrockRuntimeClient() {
- BedrockRuntimeClient client = null;
- BedrockRuntimeClientBuilder clientBuilder = BedrockRuntimeClient.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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-
- @Override
- public BedrockRuntimeAsyncClient getBedrockRuntimeAsyncClient() {
- BedrockRuntimeAsyncClient client = null;
- BedrockRuntimeAsyncClientBuilder clientBuilder = BedrockRuntimeAsyncClient.builder();
-
- if (configuration.getAccessKey() != null && configuration.getSecretKey() != null
- && configuration.getSessionToken() != null) {
- AwsSessionCredentials cred = AwsSessionCredentials.create(configuration.getAccessKey(),
- configuration.getSecretKey(), configuration.getSessionToken());
- clientBuilder = clientBuilder.credentialsProvider(StaticCredentialsProvider.create(cred));
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.isOverrideEndpoint()) {
- clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
- }
- // Note: Async clients use Netty by default, proxy and TLS configuration would require NettyNioAsyncHttpClient
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/impl/BedrockRuntimeClientStandardImpl.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/impl/BedrockRuntimeClientStandardImpl.java
deleted file mode 100644
index 57373d296204..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/client/impl/BedrockRuntimeClientStandardImpl.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * 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.bedrock.runtime.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration;
-import org.apache.camel.component.aws2.bedrock.runtime.client.BedrockRuntimeInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-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.bedrockruntime.BedrockRuntimeAsyncClient;
-import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeAsyncClientBuilder;
-import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient;
-import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Bedrock Runtime client for all users to use. This implementation is for local instances to use a static
- * and solid credential set.
- */
-public class BedrockRuntimeClientStandardImpl implements BedrockRuntimeInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(BedrockRuntimeClientStandardImpl.class);
- private BedrockConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public BedrockRuntimeClientStandardImpl(BedrockConfiguration configuration) {
- LOG.trace("Creating an AWS Bedrock Runtime manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Bedrock Runtime AWS client that is used.
- *
- * @return BedrockRuntime Client.
- */
- @Override
- public BedrockRuntimeClient getBedrockRuntimeClient() {
- BedrockRuntimeClient client = null;
- BedrockRuntimeClientBuilder clientBuilder = BedrockRuntimeClient.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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-
- /**
- * Getting the Bedrock Runtime AWS async client for streaming operations.
- *
- * @return BedrockRuntimeAsyncClient Async Client.
- */
- @Override
- public BedrockRuntimeAsyncClient getBedrockRuntimeAsyncClient() {
- BedrockRuntimeAsyncClient client = null;
- BedrockRuntimeAsyncClientBuilder clientBuilder = BedrockRuntimeAsyncClient.builder();
-
- if (configuration.getAccessKey() != null && configuration.getSecretKey() != null) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- clientBuilder = clientBuilder.credentialsProvider(StaticCredentialsProvider.create(cred));
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.isOverrideEndpoint()) {
- clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
- }
- // Note: Async clients use Netty by default, proxy and TLS configuration would require NettyNioAsyncHttpClient
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentClientFactoryTest.java b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentClientFactoryTest.java
deleted file mode 100644
index 92e05161bc06..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentClientFactoryTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.bedrock.agent;
-
-import org.apache.camel.component.aws2.bedrock.agent.client.BedrockAgentClientFactory;
-import org.apache.camel.component.aws2.bedrock.agent.client.BedrockAgentInternalClient;
-import org.apache.camel.component.aws2.bedrock.agent.client.impl.BedrockAgentClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.bedrock.agent.client.impl.BedrockAgentClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws2.bedrock.agent.client.impl.BedrockAgentClientSessionTokenImpl;
-import org.apache.camel.component.aws2.bedrock.agent.client.impl.BedrockAgentClientStandardImpl;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class BedrockAgentClientFactoryTest {
-
- @Test
- public void getStandardBedrockAgentClientDefault() {
- BedrockAgentConfiguration bedrockConfiguration = new BedrockAgentConfiguration();
- BedrockAgentInternalClient bedrockClient
- = BedrockAgentClientFactory.getBedrockAgentClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockAgentClientStandardImpl);
- }
-
- @Test
- public void getStandardNoIamBedrockAgentClientDefault() {
- BedrockAgentConfiguration bedrockConfiguration = new BedrockAgentConfiguration();
- bedrockConfiguration.setUseDefaultCredentialsProvider(false);
- BedrockAgentInternalClient bedrockClient
- = BedrockAgentClientFactory.getBedrockAgentClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockAgentClientStandardImpl);
- }
-
- @Test
- public void getIamBedrockAgentClientDefault() {
- BedrockAgentConfiguration bedrockConfiguration = new BedrockAgentConfiguration();
- bedrockConfiguration.setUseDefaultCredentialsProvider(true);
- BedrockAgentInternalClient bedrockClient
- = BedrockAgentClientFactory.getBedrockAgentClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockAgentClientIAMOptimizedImpl);
- }
-
- @Test
- public void getSessionBedrockAgentClientDefault() {
- BedrockAgentConfiguration bedrockConfiguration = new BedrockAgentConfiguration();
- bedrockConfiguration.setUseSessionCredentials(true);
- BedrockAgentInternalClient bedrockClient
- = BedrockAgentClientFactory.getBedrockAgentClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockAgentClientSessionTokenImpl);
- }
-
- @Test
- public void getIamProfileBedrockAgentClientDefault() {
- BedrockAgentConfiguration bedrockConfiguration = new BedrockAgentConfiguration();
- bedrockConfiguration.setUseProfileCredentialsProvider(true);
- BedrockAgentInternalClient bedrockClient
- = BedrockAgentClientFactory.getBedrockAgentClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockAgentClientIAMProfileOptimizedImpl);
- }
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agentruntime/BedrockAgentRuntimeClientFactoryTest.java b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agentruntime/BedrockAgentRuntimeClientFactoryTest.java
deleted file mode 100644
index b77d95edd261..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agentruntime/BedrockAgentRuntimeClientFactoryTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.bedrock.agentruntime;
-
-import org.apache.camel.component.aws2.bedrock.agentruntime.client.BedrockAgentRuntimeClientFactory;
-import org.apache.camel.component.aws2.bedrock.agentruntime.client.BedrockAgentRuntimeInternalClient;
-import org.apache.camel.component.aws2.bedrock.agentruntime.client.impl.BedrockAgentRuntimeClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.bedrock.agentruntime.client.impl.BedrockAgentRuntimeClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws2.bedrock.agentruntime.client.impl.BedrockAgentRuntimeClientSessionTokenImpl;
-import org.apache.camel.component.aws2.bedrock.agentruntime.client.impl.BedrockAgentRuntimeClientStandardImpl;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class BedrockAgentRuntimeClientFactoryTest {
-
- @Test
- public void getStandardBedrockAgentRuntimeClientDefault() {
- BedrockAgentRuntimeConfiguration bedrockConfiguration = new BedrockAgentRuntimeConfiguration();
- BedrockAgentRuntimeInternalClient bedrockClient
- = BedrockAgentRuntimeClientFactory.getBedrockAgentRuntimeClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockAgentRuntimeClientStandardImpl);
- }
-
- @Test
- public void getStandardDefaultBedrockAgentRuntimeClient() {
- BedrockAgentRuntimeConfiguration bedrockConfiguration = new BedrockAgentRuntimeConfiguration();
- bedrockConfiguration.setUseDefaultCredentialsProvider(false);
- BedrockAgentRuntimeInternalClient bedrockClient
- = BedrockAgentRuntimeClientFactory.getBedrockAgentRuntimeClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockAgentRuntimeClientStandardImpl);
- }
-
- @Test
- public void getIAMOptimizedBedrockAgentRuntimeClient() {
- BedrockAgentRuntimeConfiguration bedrockConfiguration = new BedrockAgentRuntimeConfiguration();
- bedrockConfiguration.setUseDefaultCredentialsProvider(true);
- BedrockAgentRuntimeInternalClient bedrockClient
- = BedrockAgentRuntimeClientFactory.getBedrockAgentRuntimeClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockAgentRuntimeClientIAMOptimizedImpl);
- }
-
- @Test
- public void getSessionTokenBedrockAgentRuntimeClient() {
- BedrockAgentRuntimeConfiguration bedrockConfiguration = new BedrockAgentRuntimeConfiguration();
- bedrockConfiguration.setUseSessionCredentials(true);
- BedrockAgentRuntimeInternalClient bedrockClient
- = BedrockAgentRuntimeClientFactory.getBedrockAgentRuntimeClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockAgentRuntimeClientSessionTokenImpl);
- }
-
- @Test
- public void getProfileBedrockAgentRuntimeClient() {
- BedrockAgentRuntimeConfiguration bedrockConfiguration = new BedrockAgentRuntimeConfiguration();
- bedrockConfiguration.setUseProfileCredentialsProvider(true);
- BedrockAgentRuntimeInternalClient bedrockClient
- = BedrockAgentRuntimeClientFactory.getBedrockAgentRuntimeClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockAgentRuntimeClientIAMProfileOptimizedImpl);
- }
-}
diff --git a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockRuntimeClientFactoryTest.java b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockRuntimeClientFactoryTest.java
deleted file mode 100644
index 07f89a8cd4dc..000000000000
--- a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockRuntimeClientFactoryTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.bedrock.runtime;
-
-import org.apache.camel.component.aws2.bedrock.runtime.client.BedrockClientFactory;
-import org.apache.camel.component.aws2.bedrock.runtime.client.BedrockRuntimeInternalClient;
-import org.apache.camel.component.aws2.bedrock.runtime.client.impl.BedrockRuntimeClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.bedrock.runtime.client.impl.BedrockRuntimeClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws2.bedrock.runtime.client.impl.BedrockRuntimeClientSessionTokenImpl;
-import org.apache.camel.component.aws2.bedrock.runtime.client.impl.BedrockRuntimeClientStandardImpl;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class BedrockRuntimeClientFactoryTest {
-
- @Test
- public void getStandardBedrockClientDefault() {
- BedrockConfiguration bedrockConfiguration = new BedrockConfiguration();
- BedrockRuntimeInternalClient bedrockClient = BedrockClientFactory.getBedrockRuntimeClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockRuntimeClientStandardImpl);
- }
-
- @Test
- public void getStandardDefaultBedrockClient() {
- BedrockConfiguration bedrockConfiguration = new BedrockConfiguration();
- bedrockConfiguration.setUseDefaultCredentialsProvider(false);
- BedrockRuntimeInternalClient bedrockClient = BedrockClientFactory.getBedrockRuntimeClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockRuntimeClientStandardImpl);
- }
-
- @Test
- public void getIAMOptimizedBedrockClient() {
- BedrockConfiguration bedrockConfiguration = new BedrockConfiguration();
- bedrockConfiguration.setUseDefaultCredentialsProvider(true);
- BedrockRuntimeInternalClient bedrockClient = BedrockClientFactory.getBedrockRuntimeClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockRuntimeClientIAMOptimizedImpl);
- }
-
- @Test
- public void getSessionTokenBedrockClient() {
- BedrockConfiguration bedrockConfiguration = new BedrockConfiguration();
- bedrockConfiguration.setUseSessionCredentials(true);
- BedrockRuntimeInternalClient bedrockClient = BedrockClientFactory.getBedrockRuntimeClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockRuntimeClientSessionTokenImpl);
- }
-
- @Test
- public void getProfileBedrockClient() {
- BedrockConfiguration bedrockConfiguration = new BedrockConfiguration();
- bedrockConfiguration.setUseProfileCredentialsProvider(true);
- BedrockRuntimeInternalClient bedrockClient = BedrockClientFactory.getBedrockRuntimeClient(bedrockConfiguration);
- assertTrue(bedrockClient instanceof BedrockRuntimeClientIAMProfileOptimizedImpl);
- }
-}
diff --git a/components/camel-aws/camel-aws-cloudtrail/pom.xml b/components/camel-aws/camel-aws-cloudtrail/pom.xml
index 28d66539456a..697f63ac624f 100644
--- a/components/camel-aws/camel-aws-cloudtrail/pom.xml
+++ b/components/camel-aws/camel-aws-cloudtrail/pom.xml
@@ -40,6 +40,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-aws-common</artifactId>
+ </dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>cloudtrail</artifactId>
diff --git a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailConfiguration.java b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailConfiguration.java
index e2cc6cede940..b705b743379b 100644
--- a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailConfiguration.java
+++ b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailConfiguration.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.aws.cloudtrail;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -25,7 +26,7 @@ import software.amazon.awssdk.core.Protocol;
import software.amazon.awssdk.services.cloudtrail.CloudTrailClient;
@UriParams
-public class CloudtrailConfiguration implements Cloneable {
+public class CloudtrailConfiguration implements Cloneable, AwsCommonConfiguration {
@UriPath(description = "A label for indexing cloudtrail endpoints")
@Metadata(required = true)
diff --git a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailEndpoint.java b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailEndpoint.java
index 41ee638b3b45..fbc618878cc4 100644
--- a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailEndpoint.java
+++ b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailEndpoint.java
@@ -53,7 +53,7 @@ public class CloudtrailEndpoint extends ScheduledPollEndpoint implements Endpoin
super.doStart();
cloudTrailClient = configuration.getCloudTrailClient() != null
? configuration.getCloudTrailClient()
- : CloudtrailClientFactory.getCloudtrailClient(configuration).getCloudtrailClient();
+ : CloudtrailClientFactory.getCloudtrailClient(configuration);
}
@Override
diff --git a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/CloudtrailClientFactory.java b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/CloudtrailClientFactory.java
index 83fed0000fdf..582d1f701829 100644
--- a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/CloudtrailClientFactory.java
+++ b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/CloudtrailClientFactory.java
@@ -17,13 +17,11 @@
package org.apache.camel.component.aws.cloudtrail.client;
import org.apache.camel.component.aws.cloudtrail.CloudtrailConfiguration;
-import org.apache.camel.component.aws.cloudtrail.client.impl.CloudtrailClientIAMOptimizedImpl;
-import org.apache.camel.component.aws.cloudtrail.client.impl.CloudtrailClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws.cloudtrail.client.impl.CloudtrailClientSessionTokenImpl;
-import org.apache.camel.component.aws.cloudtrail.client.impl.CloudtrailClientStandardImpl;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
+import software.amazon.awssdk.services.cloudtrail.CloudTrailClient;
/**
- * Factory class to return the correct type of AWS Cloudtrail client.
+ * Factory class to create AWS CloudTrail clients using common configuration.
*/
public final class CloudtrailClientFactory {
@@ -31,20 +29,14 @@ public final class CloudtrailClientFactory {
}
/**
- * Return the correct aws Cloudtrail client (based on remote vs local).
+ * Create a CloudTrailClient based on configuration.
*
- * @param configuration configuration
- * @return CloudTrailClient
+ * @param configuration The CloudTrail configuration
+ * @return Configured CloudTrailClient
*/
- public static CloudtrailInternalClient getCloudtrailClient(CloudtrailConfiguration configuration) {
- if (Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())) {
- return new CloudtrailClientIAMOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseProfileCredentialsProvider())) {
- return new CloudtrailClientIAMProfileOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseSessionCredentials())) {
- return new CloudtrailClientSessionTokenImpl(configuration);
- } else {
- return new CloudtrailClientStandardImpl(configuration);
- }
+ public static CloudTrailClient getCloudtrailClient(CloudtrailConfiguration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ CloudTrailClient::builder);
}
}
diff --git a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/CloudtrailInternalClient.java b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/CloudtrailInternalClient.java
deleted file mode 100644
index 7fa530c26578..000000000000
--- a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/CloudtrailInternalClient.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.aws.cloudtrail.client;
-
-import software.amazon.awssdk.services.cloudtrail.CloudTrailClient;
-
-/**
- * Manage the required actions of a CloudTrail client for either local or remote.
- */
-public interface CloudtrailInternalClient {
-
- /**
- * Returns a Cloudtrail client after a factory method determines which one to return.
- *
- * @return CloudTrail client
- */
- CloudTrailClient getCloudtrailClient();
-}
diff --git a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/impl/CloudtrailClientIAMOptimizedImpl.java b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/impl/CloudtrailClientIAMOptimizedImpl.java
deleted file mode 100644
index dd89ed48e3a8..000000000000
--- a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/impl/CloudtrailClientIAMOptimizedImpl.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * 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.aws.cloudtrail.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws.cloudtrail.CloudtrailConfiguration;
-import org.apache.camel.component.aws.cloudtrail.client.CloudtrailInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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.cloudtrail.CloudTrailClient;
-import software.amazon.awssdk.services.cloudtrail.CloudTrailClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Cloudtrail client for all users to use (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class CloudtrailClientIAMOptimizedImpl implements CloudtrailInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(CloudtrailClientIAMOptimizedImpl.class);
- private CloudtrailConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public CloudtrailClientIAMOptimizedImpl(CloudtrailConfiguration configuration) {
- LOG.trace("Creating an AWS Cloudtrail client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Cloudtrail client that is used.
- *
- * @return Amazon Cloudtrail Client.
- */
- @Override
- public CloudTrailClient getCloudtrailClient() {
- CloudTrailClient client = null;
- CloudTrailClientBuilder clientBuilder = CloudTrailClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
-
- 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());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/impl/CloudtrailClientIAMProfileOptimizedImpl.java b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/impl/CloudtrailClientIAMProfileOptimizedImpl.java
deleted file mode 100644
index 23598d742c21..000000000000
--- a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/impl/CloudtrailClientIAMProfileOptimizedImpl.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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.aws.cloudtrail.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws.cloudtrail.CloudtrailConfiguration;
-import org.apache.camel.component.aws.cloudtrail.client.CloudtrailInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
-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.cloudtrail.CloudTrailClient;
-import software.amazon.awssdk.services.cloudtrail.CloudTrailClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Cloudtrail client for all users to use (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class CloudtrailClientIAMProfileOptimizedImpl implements CloudtrailInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(CloudtrailClientIAMProfileOptimizedImpl.class);
- private CloudtrailConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public CloudtrailClientIAMProfileOptimizedImpl(CloudtrailConfiguration configuration) {
- LOG.trace("Creating an AWS Cloudtrail client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Cloudtrail client that is used.
- *
- * @return Amazon Cloudtrail Client.
- */
- @Override
- public CloudTrailClient getCloudtrailClient() {
- CloudTrailClient client = null;
- CloudTrailClientBuilder clientBuilder = CloudTrailClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
-
- 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());
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
- }
- if (configuration.getProfileCredentialsName() != null) {
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder)
- .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.isOverrideEndpoint()) {
- clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
- }
- if (configuration.isTrustAllCertificates()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/impl/CloudtrailClientSessionTokenImpl.java b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/impl/CloudtrailClientSessionTokenImpl.java
deleted file mode 100644
index 9a0128ba3af3..000000000000
--- a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/impl/CloudtrailClientSessionTokenImpl.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * 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.aws.cloudtrail.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws.cloudtrail.CloudtrailConfiguration;
-import org.apache.camel.component.aws.cloudtrail.client.CloudtrailInternalClient;
-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.cloudtrail.CloudTrailClient;
-import software.amazon.awssdk.services.cloudtrail.CloudTrailClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Cloudtrail client for all users to use. This implementation is for local instances to use a static and
- * solid credential set.
- */
-public class CloudtrailClientSessionTokenImpl implements CloudtrailInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(CloudtrailClientStandardImpl.class);
- private CloudtrailConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public CloudtrailClientSessionTokenImpl(CloudtrailConfiguration configuration) {
- LOG.trace("Creating an AWS Cloudtrail manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Cloudtrail client that is used.
- *
- * @return Amazon Cloudtrail Client.
- */
- @Override
- public CloudTrailClient getCloudtrailClient() {
- CloudTrailClient client = null;
- CloudTrailClientBuilder clientBuilder = CloudTrailClient.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) {
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/impl/CloudtrailClientStandardImpl.java b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/impl/CloudtrailClientStandardImpl.java
deleted file mode 100644
index eb09e30a23d9..000000000000
--- a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/client/impl/CloudtrailClientStandardImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.aws.cloudtrail.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws.cloudtrail.CloudtrailConfiguration;
-import org.apache.camel.component.aws.cloudtrail.client.CloudtrailInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-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.cloudtrail.CloudTrailClient;
-import software.amazon.awssdk.services.cloudtrail.CloudTrailClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Cloudtrail client for all users to use. This implementation is for local instances to use a static and
- * solid credential set.
- */
-public class CloudtrailClientStandardImpl implements CloudtrailInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(CloudtrailClientStandardImpl.class);
- private CloudtrailConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public CloudtrailClientStandardImpl(CloudtrailConfiguration configuration) {
- LOG.trace("Creating an AWS Cloudtrail manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Cloudtrail client that is used.
- *
- * @return Amazon Cloudtrail Client.
- */
- @Override
- public CloudTrailClient getCloudtrailClient() {
- CloudTrailClient client = null;
- CloudTrailClientBuilder clientBuilder = CloudTrailClient.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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-cloudtrail/src/test/java/org/apache/camel/component/aws/cloudtrail/CloudtrailClientFactoryTest.java b/components/camel-aws/camel-aws-cloudtrail/src/test/java/org/apache/camel/component/aws/cloudtrail/CloudtrailClientFactoryTest.java
deleted file mode 100644
index 4779eee8c13f..000000000000
--- a/components/camel-aws/camel-aws-cloudtrail/src/test/java/org/apache/camel/component/aws/cloudtrail/CloudtrailClientFactoryTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.aws.cloudtrail;
-
-import org.apache.camel.component.aws.cloudtrail.client.CloudtrailClientFactory;
-import org.apache.camel.component.aws.cloudtrail.client.CloudtrailInternalClient;
-import org.apache.camel.component.aws.cloudtrail.client.impl.CloudtrailClientIAMOptimizedImpl;
-import org.apache.camel.component.aws.cloudtrail.client.impl.CloudtrailClientSessionTokenImpl;
-import org.apache.camel.component.aws.cloudtrail.client.impl.CloudtrailClientStandardImpl;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class CloudtrailClientFactoryTest {
-
- @Test
- public void getStandardCloudtrailClientDefault() {
- CloudtrailConfiguration cloudtrailConf = new CloudtrailConfiguration();
- CloudtrailInternalClient cloudtrailClient = CloudtrailClientFactory.getCloudtrailClient(cloudtrailConf);
- assertTrue(cloudtrailClient instanceof CloudtrailClientStandardImpl);
- }
-
- @Test
- public void getStandardCloudtrailClient() {
- CloudtrailConfiguration cloudtrailConf = new CloudtrailConfiguration();
- cloudtrailConf.setUseDefaultCredentialsProvider(false);
- CloudtrailInternalClient cloudtrailClient = CloudtrailClientFactory.getCloudtrailClient(cloudtrailConf);
- assertTrue(cloudtrailClient instanceof CloudtrailClientStandardImpl);
- }
-
- @Test
- public void getIAMOptimizedCloudtrailClient() {
- CloudtrailConfiguration cloudtrailConf = new CloudtrailConfiguration();
- cloudtrailConf.setUseDefaultCredentialsProvider(true);
- CloudtrailInternalClient cloudtrailClient = CloudtrailClientFactory.getCloudtrailClient(cloudtrailConf);
- assertTrue(cloudtrailClient instanceof CloudtrailClientIAMOptimizedImpl);
- }
-
- @Test
- public void getIAMSessionTokenCloudtrailClient() {
- CloudtrailConfiguration cloudtrailConf = new CloudtrailConfiguration();
- cloudtrailConf.setUseSessionCredentials(true);
- CloudtrailInternalClient cloudtrailClient = CloudtrailClientFactory.getCloudtrailClient(cloudtrailConf);
- assertTrue(cloudtrailClient instanceof CloudtrailClientSessionTokenImpl);
- }
-}
diff --git a/components/camel-aws/camel-aws-config/pom.xml b/components/camel-aws/camel-aws-config/pom.xml
index 2fc4687d76f6..ed8aaaeb2983 100644
--- a/components/camel-aws/camel-aws-config/pom.xml
+++ b/components/camel-aws/camel-aws-config/pom.xml
@@ -40,6 +40,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-aws-common</artifactId>
+ </dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>config</artifactId>
diff --git a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/AWSConfigConfiguration.java b/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/AWSConfigConfiguration.java
index 3382d7e2b0e3..c364c07a06f7 100644
--- a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/AWSConfigConfiguration.java
+++ b/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/AWSConfigConfiguration.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.aws.config;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -25,7 +26,7 @@ import software.amazon.awssdk.core.Protocol;
import software.amazon.awssdk.services.config.ConfigClient;
@UriParams
-public class AWSConfigConfiguration implements Cloneable {
+public class AWSConfigConfiguration implements Cloneable, AwsCommonConfiguration {
@UriPath(description = "Logical name")
@Metadata(required = true)
@@ -216,11 +217,11 @@ public class AWSConfigConfiguration implements Cloneable {
* Set whether the Config client should expect to load credentials through a default credentials provider or to
* expect static credentials to be passed in.
*/
- public void setUseDefaultCredentialsProvider(Boolean useDefaultCredentialsProvider) {
+ public void setUseDefaultCredentialsProvider(boolean useDefaultCredentialsProvider) {
this.useDefaultCredentialsProvider = useDefaultCredentialsProvider;
}
- public Boolean isUseDefaultCredentialsProvider() {
+ public boolean isUseDefaultCredentialsProvider() {
return useDefaultCredentialsProvider;
}
diff --git a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/AWSConfigEndpoint.java b/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/AWSConfigEndpoint.java
index b073f5c5b46e..8459fc8668bf 100644
--- a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/AWSConfigEndpoint.java
+++ b/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/AWSConfigEndpoint.java
@@ -67,7 +67,7 @@ public class AWSConfigEndpoint extends DefaultEndpoint implements EndpointServic
super.doStart();
configClient = configuration.getConfigClient() != null
- ? configuration.getConfigClient() : AWSConfigClientFactory.getConfigClient(configuration).getConfigClient();
+ ? configuration.getConfigClient() : AWSConfigClientFactory.getConfigClient(configuration);
}
@Override
diff --git a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/AWSConfigClientFactory.java b/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/AWSConfigClientFactory.java
index 0dcd31f101e2..8464340418b7 100644
--- a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/AWSConfigClientFactory.java
+++ b/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/AWSConfigClientFactory.java
@@ -16,14 +16,12 @@
*/
package org.apache.camel.component.aws.config.client;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
import org.apache.camel.component.aws.config.AWSConfigConfiguration;
-import org.apache.camel.component.aws.config.client.impl.AWSConfigClientIAMOptimizedImpl;
-import org.apache.camel.component.aws.config.client.impl.AWSConfigClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws.config.client.impl.AWSConfigClientSessionTokenImpl;
-import org.apache.camel.component.aws.config.client.impl.AWSConfigClientStandardImpl;
+import software.amazon.awssdk.services.config.ConfigClient;
/**
- * Factory class to return the correct type of AWS Config client.
+ * Factory class to create AWS Config clients using common configuration.
*/
public final class AWSConfigClientFactory {
@@ -31,20 +29,14 @@ public final class AWSConfigClientFactory {
}
/**
- * Return the correct AWS Config client (based on remote vs local).
+ * Create a ConfigClient based on configuration.
*
- * @param configuration configuration
- * @return ConfigClient
+ * @param configuration The Config configuration
+ * @return Configured ConfigClient
*/
- public static AWSConfigInternalClient getConfigClient(AWSConfigConfiguration configuration) {
- if (Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())) {
- return new AWSConfigClientIAMOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseProfileCredentialsProvider())) {
- return new AWSConfigClientIAMProfileOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseSessionCredentials())) {
- return new AWSConfigClientSessionTokenImpl(configuration);
- } else {
- return new AWSConfigClientStandardImpl(configuration);
- }
+ public static ConfigClient getConfigClient(AWSConfigConfiguration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ ConfigClient::builder);
}
}
diff --git a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/AWSConfigInternalClient.java b/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/AWSConfigInternalClient.java
deleted file mode 100644
index f77cabfb0b42..000000000000
--- a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/AWSConfigInternalClient.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.aws.config.client;
-
-import software.amazon.awssdk.services.config.ConfigClient;
-
-/**
- * Manage the required actions of a Config client for either local or remote.
- */
-public interface AWSConfigInternalClient {
-
- /**
- * Returns a Config client after a factory method determines which one to return.
- *
- * @return ConfigClient ConfigClient
- */
- ConfigClient getConfigClient();
-}
diff --git a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/impl/AWSConfigClientIAMOptimizedImpl.java b/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/impl/AWSConfigClientIAMOptimizedImpl.java
deleted file mode 100644
index 0ca273f95543..000000000000
--- a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/impl/AWSConfigClientIAMOptimizedImpl.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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.aws.config.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws.config.AWSConfigConfiguration;
-import org.apache.camel.component.aws.config.client.AWSConfigInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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.config.ConfigClient;
-import software.amazon.awssdk.services.config.ConfigClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Config client for all users to use (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class AWSConfigClientIAMOptimizedImpl implements AWSConfigInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(AWSConfigClientIAMOptimizedImpl.class);
- private AWSConfigConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public AWSConfigClientIAMOptimizedImpl(AWSConfigConfiguration configuration) {
- LOG.trace("Creating an AWS Config client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Config aws client that is used.
- *
- * @return ConfigClient Client.
- */
- @Override
- public ConfigClient getConfigClient() {
- ConfigClient client = null;
- ConfigClientBuilder clientBuilder = ConfigClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/impl/AWSConfigClientIAMProfileOptimizedImpl.java b/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/impl/AWSConfigClientIAMProfileOptimizedImpl.java
deleted file mode 100644
index fb5bc657e413..000000000000
--- a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/impl/AWSConfigClientIAMProfileOptimizedImpl.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * 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.aws.config.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws.config.AWSConfigConfiguration;
-import org.apache.camel.component.aws.config.client.AWSConfigInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
-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.config.ConfigClient;
-import software.amazon.awssdk.services.config.ConfigClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Config client for all users to use (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class AWSConfigClientIAMProfileOptimizedImpl implements AWSConfigInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(AWSConfigClientIAMProfileOptimizedImpl.class);
- private AWSConfigConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public AWSConfigClientIAMProfileOptimizedImpl(AWSConfigConfiguration configuration) {
- LOG.trace("Creating an AWS Config client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Config aws client that is used.
- *
- * @return ConfigClient Client.
- */
- @Override
- public ConfigClient getConfigClient() {
- ConfigClient client = null;
- ConfigClientBuilder clientBuilder = ConfigClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
- }
- if (configuration.getProfileCredentialsName() != null) {
- clientBuilder = clientBuilder
- .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.isOverrideEndpoint()) {
- clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
- }
- if (configuration.isTrustAllCertificates()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/impl/AWSConfigClientSessionTokenImpl.java b/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/impl/AWSConfigClientSessionTokenImpl.java
deleted file mode 100644
index b0c368a9ec26..000000000000
--- a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/impl/AWSConfigClientSessionTokenImpl.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * 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.aws.config.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws.config.AWSConfigConfiguration;
-import org.apache.camel.component.aws.config.client.AWSConfigInternalClient;
-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.config.ConfigClient;
-import software.amazon.awssdk.services.config.ConfigClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Config client for all users to use. This implementation is for local instances to use a static and
- * solid credential set.
- */
-public class AWSConfigClientSessionTokenImpl implements AWSConfigInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(AWSConfigClientSessionTokenImpl.class);
- private AWSConfigConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public AWSConfigClientSessionTokenImpl(AWSConfigConfiguration configuration) {
- LOG.trace("Creating an AWS Config manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Config AWS client that is used.
- *
- * @return Amazon Config Client.
- */
- @Override
- public ConfigClient getConfigClient() {
- ConfigClient client = null;
- ConfigClientBuilder clientBuilder = ConfigClient.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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/impl/AWSConfigClientStandardImpl.java b/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/impl/AWSConfigClientStandardImpl.java
deleted file mode 100644
index 997e0f161c76..000000000000
--- a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/client/impl/AWSConfigClientStandardImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.aws.config.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws.config.AWSConfigConfiguration;
-import org.apache.camel.component.aws.config.client.AWSConfigInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-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.config.ConfigClient;
-import software.amazon.awssdk.services.config.ConfigClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Config client for all users to use. This implementation is for local instances to use a static and
- * solid credential set.
- */
-public class AWSConfigClientStandardImpl implements AWSConfigInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(AWSConfigClientStandardImpl.class);
- private AWSConfigConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public AWSConfigClientStandardImpl(AWSConfigConfiguration configuration) {
- LOG.trace("Creating an AWS Config manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Config AWS client that is used.
- *
- * @return Amazon Config Client.
- */
- @Override
- public ConfigClient getConfigClient() {
- ConfigClient client = null;
- ConfigClientBuilder clientBuilder = ConfigClient.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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-config/src/test/java/org/apache/camel/component/aws/config/AWSConfigClientFactoryTest.java b/components/camel-aws/camel-aws-config/src/test/java/org/apache/camel/component/aws/config/AWSConfigClientFactoryTest.java
deleted file mode 100644
index 64951e308673..000000000000
--- a/components/camel-aws/camel-aws-config/src/test/java/org/apache/camel/component/aws/config/AWSConfigClientFactoryTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.aws.config;
-
-import org.apache.camel.component.aws.config.client.AWSConfigClientFactory;
-import org.apache.camel.component.aws.config.client.AWSConfigInternalClient;
-import org.apache.camel.component.aws.config.client.impl.AWSConfigClientIAMOptimizedImpl;
-import org.apache.camel.component.aws.config.client.impl.AWSConfigClientSessionTokenImpl;
-import org.apache.camel.component.aws.config.client.impl.AWSConfigClientStandardImpl;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class AWSConfigClientFactoryTest {
-
- @Test
- public void getStandardConfigClientDefault() {
- AWSConfigConfiguration configConfiguration = new AWSConfigConfiguration();
- AWSConfigInternalClient configClient = AWSConfigClientFactory.getConfigClient(configConfiguration);
- assertTrue(configClient instanceof AWSConfigClientStandardImpl);
- }
-
- @Test
- public void getStandardConfigClient() {
- AWSConfigConfiguration configConfiguration = new AWSConfigConfiguration();
- configConfiguration.setUseDefaultCredentialsProvider(false);
- AWSConfigInternalClient configClient = AWSConfigClientFactory.getConfigClient(configConfiguration);
- assertTrue(configClient instanceof AWSConfigClientStandardImpl);
- }
-
- @Test
- public void getIAMOptimizedConfigClient() {
- AWSConfigConfiguration configConfiguration = new AWSConfigConfiguration();
- configConfiguration.setUseDefaultCredentialsProvider(true);
- AWSConfigInternalClient configClient = AWSConfigClientFactory.getConfigClient(configConfiguration);
- assertTrue(configClient instanceof AWSConfigClientIAMOptimizedImpl);
- }
-
- @Test
- public void getSessionTokenConfigClient() {
- AWSConfigConfiguration configConfiguration = new AWSConfigConfiguration();
- configConfiguration.setUseSessionCredentials(true);
- AWSConfigInternalClient configClient = AWSConfigClientFactory.getConfigClient(configConfiguration);
- assertTrue(configClient instanceof AWSConfigClientSessionTokenImpl);
- }
-}
diff --git a/components/camel-aws/camel-aws-secrets-manager/pom.xml b/components/camel-aws/camel-aws-secrets-manager/pom.xml
index 9eccbb6f11b0..d9eb53fc393b 100644
--- a/components/camel-aws/camel-aws-secrets-manager/pom.xml
+++ b/components/camel-aws/camel-aws-secrets-manager/pom.xml
@@ -42,6 +42,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-aws-common</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-util-json</artifactId>
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json b/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json
index d752f6b813c6..27c10d35f695 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json
+++ b/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json
@@ -46,7 +46,7 @@
"secretKey": { "index": 18, "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
"sessionToken": { "index": 19, "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
"trustAllCertificates": { "index": 20, "kind": "property", "displayName": "Trust All Certificates", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of ov [...]
- "useDefaultCredentialsProvider": { "index": 21, "kind": "property", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set whether the Translate clien [...]
+ "useDefaultCredentialsProvider": { "index": 21, "kind": "property", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set whether the Secrets Manager [...]
"useSessionCredentials": { "index": 22, "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set whether the Secrets Manager client should ex [...]
},
"headers": {
@@ -81,7 +81,7 @@
"secretKey": { "index": 15, "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
"sessionToken": { "index": 16, "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
"trustAllCertificates": { "index": 17, "kind": "parameter", "displayName": "Trust All Certificates", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of o [...]
- "useDefaultCredentialsProvider": { "index": 18, "kind": "parameter", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set whether the Translate clie [...]
+ "useDefaultCredentialsProvider": { "index": 18, "kind": "parameter", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set whether the Secrets Manage [...]
"useSessionCredentials": { "index": 19, "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set whether the Secrets Manager client should e [...]
}
}
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerConfiguration.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerConfiguration.java
index 3ca3ceca1044..9654a3bd12ed 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerConfiguration.java
+++ b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerConfiguration.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.aws.secretsmanager;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -25,7 +26,7 @@ import software.amazon.awssdk.core.Protocol;
import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
@UriParams
-public class SecretsManagerConfiguration implements Cloneable {
+public class SecretsManagerConfiguration implements Cloneable, AwsCommonConfiguration {
@UriPath(description = "Logical name")
@Metadata(required = true)
@@ -231,14 +232,14 @@ public class SecretsManagerConfiguration implements Cloneable {
}
/**
- * Set whether the Translate client should expect to load credentials through a default credentials provider or to
- * expect static credentials to be passed in.
+ * Set whether the Secrets Manager client should expect to load credentials through a default credentials provider
+ * or to expect static credentials to be passed in.
*/
- public void setUseDefaultCredentialsProvider(Boolean useDefaultCredentialsProvider) {
+ public void setUseDefaultCredentialsProvider(boolean useDefaultCredentialsProvider) {
this.useDefaultCredentialsProvider = useDefaultCredentialsProvider;
}
- public Boolean isUseDefaultCredentialsProvider() {
+ public boolean isUseDefaultCredentialsProvider() {
return useDefaultCredentialsProvider;
}
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerEndpoint.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerEndpoint.java
index 363052675397..a2fa0489f14e 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerEndpoint.java
+++ b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerEndpoint.java
@@ -72,7 +72,7 @@ public class SecretsManagerEndpoint extends ScheduledPollEndpoint implements End
secretsManagerClient = configuration.getSecretsManagerClient() != null
? configuration.getSecretsManagerClient()
- : SecretsManagerClientFactory.getSecretsManagerClient(configuration).getSecretsManagerClient();
+ : SecretsManagerClientFactory.getSecretsManagerClient(configuration);
}
@Override
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/SecretsManagerClientFactory.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/SecretsManagerClientFactory.java
index e3d0b1b4a152..5224c5df52a6 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/SecretsManagerClientFactory.java
+++ b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/SecretsManagerClientFactory.java
@@ -16,14 +16,12 @@
*/
package org.apache.camel.component.aws.secretsmanager.client;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
import org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration;
-import org.apache.camel.component.aws.secretsmanager.client.impl.SecretsManagerClientIAMOptimized;
-import org.apache.camel.component.aws.secretsmanager.client.impl.SecretsManagerClientIAMProfileOptimized;
-import org.apache.camel.component.aws.secretsmanager.client.impl.SecretsManagerClientSessionTokenImpl;
-import org.apache.camel.component.aws.secretsmanager.client.impl.SecretsManagerClientStandardImpl;
+import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
/**
- * Factory class to return the correct type of AWS Secrets Manager aws.
+ * Factory class to create AWS Secrets Manager clients using common configuration.
*/
public final class SecretsManagerClientFactory {
@@ -31,20 +29,14 @@ public final class SecretsManagerClientFactory {
}
/**
- * Return the correct aws Secrets Manager client (based on remote vs local).
+ * Create a SecretsManagerClient based on configuration.
*
- * @param configuration configuration
- * @return SecretsManagerClient
+ * @param configuration The Secrets Manager configuration
+ * @return Configured SecretsManagerClient
*/
- public static SecretsManagerInternalClient getSecretsManagerClient(SecretsManagerConfiguration configuration) {
- if (Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())) {
- return new SecretsManagerClientIAMOptimized(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseProfileCredentialsProvider())) {
- return new SecretsManagerClientIAMProfileOptimized(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseSessionCredentials())) {
- return new SecretsManagerClientSessionTokenImpl(configuration);
- } else {
- return new SecretsManagerClientStandardImpl(configuration);
- }
+ public static SecretsManagerClient getSecretsManagerClient(SecretsManagerConfiguration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ SecretsManagerClient::builder);
}
}
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/SecretsManagerInternalClient.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/SecretsManagerInternalClient.java
deleted file mode 100644
index fa8cd02598a9..000000000000
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/SecretsManagerInternalClient.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.aws.secretsmanager.client;
-
-import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
-
-public interface SecretsManagerInternalClient {
-
- /**
- * Returns an secrets manager client after a factory method determines which one to return.
- *
- * @return SecretsManagerClient secretsManagerClient
- */
- SecretsManagerClient getSecretsManagerClient();
-
-}
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/impl/SecretsManagerClientIAMOptimized.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/impl/SecretsManagerClientIAMOptimized.java
deleted file mode 100644
index 0905d67cf6d2..000000000000
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/impl/SecretsManagerClientIAMOptimized.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * 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.aws.secretsmanager.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration;
-import org.apache.camel.component.aws.secretsmanager.client.SecretsManagerInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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.secretsmanager.SecretsManagerClient;
-import software.amazon.awssdk.services.secretsmanager.SecretsManagerClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Secrets Manager client for all users to use. This implementation is for remote instances to manage the
- * credentials on their own (eliminating credential rotations)
- */
-public class SecretsManagerClientIAMOptimized implements SecretsManagerInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(SecretsManagerClientIAMOptimized.class);
- private SecretsManagerConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public SecretsManagerClientIAMOptimized(SecretsManagerConfiguration configuration) {
- LOG.trace("Creating an AWS Secrets Manager client for working on AWS Services");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Secrets Manager aws client that is used.
- *
- * @return Amazon Secrets Manager Client.
- */
- @Override
- public SecretsManagerClient getSecretsManagerClient() {
- SecretsManagerClient client = null;
- SecretsManagerClientBuilder clientBuilder = SecretsManagerClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
-
- 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());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/impl/SecretsManagerClientIAMProfileOptimized.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/impl/SecretsManagerClientIAMProfileOptimized.java
deleted file mode 100644
index 9b061961f530..000000000000
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/impl/SecretsManagerClientIAMProfileOptimized.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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.aws.secretsmanager.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration;
-import org.apache.camel.component.aws.secretsmanager.client.SecretsManagerInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
-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.secretsmanager.SecretsManagerClient;
-import software.amazon.awssdk.services.secretsmanager.SecretsManagerClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Secrets Manager client for all users to use. This implementation is for remote instances to manage the
- * credentials on their own (eliminating credential rotations)
- */
-public class SecretsManagerClientIAMProfileOptimized implements SecretsManagerInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(SecretsManagerClientIAMProfileOptimized.class);
- private SecretsManagerConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public SecretsManagerClientIAMProfileOptimized(SecretsManagerConfiguration configuration) {
- LOG.trace("Creating an AWS Secrets Manager client for working on AWS Services");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Secrets Manager aws client that is used.
- *
- * @return Amazon Secrets Manager Client.
- */
- @Override
- public SecretsManagerClient getSecretsManagerClient() {
- SecretsManagerClient client = null;
- SecretsManagerClientBuilder clientBuilder = SecretsManagerClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
-
- 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());
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
- }
- if (configuration.getProfileCredentialsName() != null) {
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder)
- .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.isOverrideEndpoint()) {
- clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
- }
- if (configuration.isTrustAllCertificates()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/impl/SecretsManagerClientSessionTokenImpl.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/impl/SecretsManagerClientSessionTokenImpl.java
deleted file mode 100644
index 43bbf2fb4db5..000000000000
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/impl/SecretsManagerClientSessionTokenImpl.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * 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.aws.secretsmanager.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration;
-import org.apache.camel.component.aws.secretsmanager.client.SecretsManagerInternalClient;
-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.secretsmanager.SecretsManagerClient;
-import software.amazon.awssdk.services.secretsmanager.SecretsManagerClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Secrets Manager client for all users to use. This implementation is for local instances to use a static
- * and solid credential set.
- */
-public class SecretsManagerClientSessionTokenImpl implements SecretsManagerInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(SecretsManagerClientStandardImpl.class);
- private SecretsManagerConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public SecretsManagerClientSessionTokenImpl(SecretsManagerConfiguration configuration) {
- LOG.trace("Creating an AWS Secrets Manager manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Secrets Manager aws client that is used.
- *
- * @return Amazon Secrets Manager Client.
- */
- @Override
- public SecretsManagerClient getSecretsManagerClient() {
- SecretsManagerClient client = null;
- SecretsManagerClientBuilder clientBuilder = SecretsManagerClient.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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/impl/SecretsManagerClientStandardImpl.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/impl/SecretsManagerClientStandardImpl.java
deleted file mode 100644
index 4d9c4708a870..000000000000
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/client/impl/SecretsManagerClientStandardImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.aws.secretsmanager.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration;
-import org.apache.camel.component.aws.secretsmanager.client.SecretsManagerInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-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.secretsmanager.SecretsManagerClient;
-import software.amazon.awssdk.services.secretsmanager.SecretsManagerClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Secrets Manager client for all users to use. This implementation is for local instances to use a static
- * and solid credential set.
- */
-public class SecretsManagerClientStandardImpl implements SecretsManagerInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(SecretsManagerClientStandardImpl.class);
- private SecretsManagerConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public SecretsManagerClientStandardImpl(SecretsManagerConfiguration configuration) {
- LOG.trace("Creating an AWS Secrets Manager manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Secrets Manager aws client that is used.
- *
- * @return Amazon Secrets Manager Client.
- */
- @Override
- public SecretsManagerClient getSecretsManagerClient() {
- SecretsManagerClient client = null;
- SecretsManagerClientBuilder clientBuilder = SecretsManagerClient.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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerClientFactoryTest.java b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerClientFactoryTest.java
deleted file mode 100644
index a63564918f26..000000000000
--- a/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerClientFactoryTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.aws.secretsmanager;
-
-import org.apache.camel.component.aws.secretsmanager.client.SecretsManagerClientFactory;
-import org.apache.camel.component.aws.secretsmanager.client.SecretsManagerInternalClient;
-import org.apache.camel.component.aws.secretsmanager.client.impl.SecretsManagerClientIAMOptimized;
-import org.apache.camel.component.aws.secretsmanager.client.impl.SecretsManagerClientSessionTokenImpl;
-import org.apache.camel.component.aws.secretsmanager.client.impl.SecretsManagerClientStandardImpl;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class SecretsManagerClientFactoryTest {
-
- @Test
- public void getStandardSecretsManagerClientDefault() {
- SecretsManagerConfiguration secretsManagerConfiguration = new SecretsManagerConfiguration();
- SecretsManagerInternalClient secretsManagerClient
- = SecretsManagerClientFactory.getSecretsManagerClient(secretsManagerConfiguration);
- assertTrue(secretsManagerClient instanceof SecretsManagerClientStandardImpl);
- }
-
- @Test
- public void getStandardSecretsManagerClient() {
- SecretsManagerConfiguration secretsManagerConfiguration = new SecretsManagerConfiguration();
- secretsManagerConfiguration.setUseDefaultCredentialsProvider(false);
- SecretsManagerInternalClient secretsManagerClient
- = SecretsManagerClientFactory.getSecretsManagerClient(secretsManagerConfiguration);
- assertTrue(secretsManagerClient instanceof SecretsManagerClientStandardImpl);
- }
-
- @Test
- public void getSecretsManagerOptimizedIAMClient() {
- SecretsManagerConfiguration secretsManagerConfiguration = new SecretsManagerConfiguration();
- secretsManagerConfiguration.setUseDefaultCredentialsProvider(true);
- SecretsManagerInternalClient secretsManagerClient
- = SecretsManagerClientFactory.getSecretsManagerClient(secretsManagerConfiguration);
- assertTrue(secretsManagerClient instanceof SecretsManagerClientIAMOptimized);
- }
-
- @Test
- public void getSecretsManagerSessionTokenClient() {
- SecretsManagerConfiguration secretsManagerConfiguration = new SecretsManagerConfiguration();
- secretsManagerConfiguration.setUseSessionCredentials(true);
- SecretsManagerInternalClient secretsManagerClient
- = SecretsManagerClientFactory.getSecretsManagerClient(secretsManagerConfiguration);
- assertTrue(secretsManagerClient instanceof SecretsManagerClientSessionTokenImpl);
- }
-}
diff --git a/components/camel-aws/camel-aws2-athena/pom.xml b/components/camel-aws/camel-aws2-athena/pom.xml
index b36e12d71461..ead58965d455 100644
--- a/components/camel-aws/camel-aws2-athena/pom.xml
+++ b/components/camel-aws/camel-aws2-athena/pom.xml
@@ -40,6 +40,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-aws-common</artifactId>
+ </dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>athena</artifactId>
diff --git a/components/camel-aws/camel-aws2-athena/src/generated/java/org/apache/camel/component/aws2/athena/Athena2ComponentConfigurer.java b/components/camel-aws/camel-aws2-athena/src/generated/java/org/apache/camel/component/aws2/athena/Athena2ComponentConfigurer.java
index 9245b7406fd6..ff510029e37d 100644
--- a/components/camel-aws/camel-aws2-athena/src/generated/java/org/apache/camel/component/aws2/athena/Athena2ComponentConfigurer.java
+++ b/components/camel-aws/camel-aws2-athena/src/generated/java/org/apache/camel/component/aws2/athena/Athena2ComponentConfigurer.java
@@ -66,6 +66,8 @@ public class Athena2ComponentConfigurer extends PropertyConfigurerSupport implem
case "outputLocation": getOrCreateConfiguration(target).setOutputLocation(property(camelContext, java.lang.String.class, value)); return true;
case "outputtype":
case "outputType": getOrCreateConfiguration(target).setOutputType(property(camelContext, org.apache.camel.component.aws2.athena.Athena2OutputType.class, value)); return true;
+ case "overrideendpoint":
+ case "overrideEndpoint": getOrCreateConfiguration(target).setOverrideEndpoint(property(camelContext, boolean.class, value)); return true;
case "profilecredentialsname":
case "profileCredentialsName": getOrCreateConfiguration(target).setProfileCredentialsName(property(camelContext, java.lang.String.class, value)); return true;
case "proxyhost":
@@ -86,6 +88,10 @@ public class Athena2ComponentConfigurer extends PropertyConfigurerSupport implem
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":
+ case "uriEndpointOverride": getOrCreateConfiguration(target).setUriEndpointOverride(property(camelContext, java.lang.String.class, value)); return true;
case "usedefaultcredentialsprovider":
case "useDefaultCredentialsProvider": getOrCreateConfiguration(target).setUseDefaultCredentialsProvider(property(camelContext, boolean.class, value)); return true;
case "useprofilecredentialsprovider":
@@ -144,6 +150,8 @@ public class Athena2ComponentConfigurer extends PropertyConfigurerSupport implem
case "outputLocation": return java.lang.String.class;
case "outputtype":
case "outputType": return org.apache.camel.component.aws2.athena.Athena2OutputType.class;
+ case "overrideendpoint":
+ case "overrideEndpoint": return boolean.class;
case "profilecredentialsname":
case "profileCredentialsName": return java.lang.String.class;
case "proxyhost":
@@ -164,6 +172,10 @@ public class Athena2ComponentConfigurer extends PropertyConfigurerSupport implem
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":
+ case "uriEndpointOverride": return java.lang.String.class;
case "usedefaultcredentialsprovider":
case "useDefaultCredentialsProvider": return boolean.class;
case "useprofilecredentialsprovider":
@@ -218,6 +230,8 @@ public class Athena2ComponentConfigurer extends PropertyConfigurerSupport implem
case "outputLocation": return getOrCreateConfiguration(target).getOutputLocation();
case "outputtype":
case "outputType": return getOrCreateConfiguration(target).getOutputType();
+ case "overrideendpoint":
+ case "overrideEndpoint": return getOrCreateConfiguration(target).isOverrideEndpoint();
case "profilecredentialsname":
case "profileCredentialsName": return getOrCreateConfiguration(target).getProfileCredentialsName();
case "proxyhost":
@@ -238,6 +252,10 @@ public class Athena2ComponentConfigurer extends PropertyConfigurerSupport implem
case "secretKey": return getOrCreateConfiguration(target).getSecretKey();
case "sessiontoken":
case "sessionToken": return getOrCreateConfiguration(target).getSessionToken();
+ case "trustallcertificates":
+ case "trustAllCertificates": return getOrCreateConfiguration(target).isTrustAllCertificates();
+ case "uriendpointoverride":
+ case "uriEndpointOverride": return getOrCreateConfiguration(target).getUriEndpointOverride();
case "usedefaultcredentialsprovider":
case "useDefaultCredentialsProvider": return getOrCreateConfiguration(target).isUseDefaultCredentialsProvider();
case "useprofilecredentialsprovider":
diff --git a/components/camel-aws/camel-aws2-athena/src/generated/java/org/apache/camel/component/aws2/athena/Athena2EndpointConfigurer.java b/components/camel-aws/camel-aws2-athena/src/generated/java/org/apache/camel/component/aws2/athena/Athena2EndpointConfigurer.java
index 3b65899e5b6f..11cfa82ec382 100644
--- a/components/camel-aws/camel-aws2-athena/src/generated/java/org/apache/camel/component/aws2/athena/Athena2EndpointConfigurer.java
+++ b/components/camel-aws/camel-aws2-athena/src/generated/java/org/apache/camel/component/aws2/athena/Athena2EndpointConfigurer.java
@@ -52,6 +52,8 @@ public class Athena2EndpointConfigurer extends PropertyConfigurerSupport impleme
case "outputLocation": target.getConfiguration().setOutputLocation(property(camelContext, java.lang.String.class, value)); return true;
case "outputtype":
case "outputType": target.getConfiguration().setOutputType(property(camelContext, org.apache.camel.component.aws2.athena.Athena2OutputType.class, value)); return true;
+ case "overrideendpoint":
+ case "overrideEndpoint": target.getConfiguration().setOverrideEndpoint(property(camelContext, boolean.class, value)); return true;
case "profilecredentialsname":
case "profileCredentialsName": target.getConfiguration().setProfileCredentialsName(property(camelContext, java.lang.String.class, value)); return true;
case "proxyhost":
@@ -72,6 +74,10 @@ public class Athena2EndpointConfigurer extends PropertyConfigurerSupport impleme
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":
+ case "uriEndpointOverride": target.getConfiguration().setUriEndpointOverride(property(camelContext, java.lang.String.class, value)); return true;
case "usedefaultcredentialsprovider":
case "useDefaultCredentialsProvider": target.getConfiguration().setUseDefaultCredentialsProvider(property(camelContext, boolean.class, value)); return true;
case "useprofilecredentialsprovider":
@@ -123,6 +129,8 @@ public class Athena2EndpointConfigurer extends PropertyConfigurerSupport impleme
case "outputLocation": return java.lang.String.class;
case "outputtype":
case "outputType": return org.apache.camel.component.aws2.athena.Athena2OutputType.class;
+ case "overrideendpoint":
+ case "overrideEndpoint": return boolean.class;
case "profilecredentialsname":
case "profileCredentialsName": return java.lang.String.class;
case "proxyhost":
@@ -143,6 +151,10 @@ public class Athena2EndpointConfigurer extends PropertyConfigurerSupport impleme
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":
+ case "uriEndpointOverride": return java.lang.String.class;
case "usedefaultcredentialsprovider":
case "useDefaultCredentialsProvider": return boolean.class;
case "useprofilecredentialsprovider":
@@ -190,6 +202,8 @@ public class Athena2EndpointConfigurer extends PropertyConfigurerSupport impleme
case "outputLocation": return target.getConfiguration().getOutputLocation();
case "outputtype":
case "outputType": return target.getConfiguration().getOutputType();
+ case "overrideendpoint":
+ case "overrideEndpoint": return target.getConfiguration().isOverrideEndpoint();
case "profilecredentialsname":
case "profileCredentialsName": return target.getConfiguration().getProfileCredentialsName();
case "proxyhost":
@@ -210,6 +224,10 @@ public class Athena2EndpointConfigurer extends PropertyConfigurerSupport impleme
case "secretKey": return target.getConfiguration().getSecretKey();
case "sessiontoken":
case "sessionToken": return target.getConfiguration().getSessionToken();
+ case "trustallcertificates":
+ case "trustAllCertificates": return target.getConfiguration().isTrustAllCertificates();
+ case "uriendpointoverride":
+ case "uriEndpointOverride": return target.getConfiguration().getUriEndpointOverride();
case "usedefaultcredentialsprovider":
case "useDefaultCredentialsProvider": return target.getConfiguration().isUseDefaultCredentialsProvider();
case "useprofilecredentialsprovider":
diff --git a/components/camel-aws/camel-aws2-athena/src/generated/java/org/apache/camel/component/aws2/athena/Athena2EndpointUriFactory.java b/components/camel-aws/camel-aws2-athena/src/generated/java/org/apache/camel/component/aws2/athena/Athena2EndpointUriFactory.java
index 04b2eb26075b..d2fcd30867e0 100644
--- a/components/camel-aws/camel-aws2-athena/src/generated/java/org/apache/camel/component/aws2/athena/Athena2EndpointUriFactory.java
+++ b/components/camel-aws/camel-aws2-athena/src/generated/java/org/apache/camel/component/aws2/athena/Athena2EndpointUriFactory.java
@@ -23,7 +23,7 @@ public class Athena2EndpointUriFactory extends org.apache.camel.support.componen
private static final Set<String> SECRET_PROPERTY_NAMES;
private static final Map<String, String> MULTI_VALUE_PREFIXES;
static {
- Set<String> props = new HashSet<>(33);
+ Set<String> props = new HashSet<>(36);
props.add("accessKey");
props.add("amazonAthenaClient");
props.add("clientRequestToken");
@@ -41,6 +41,7 @@ public class Athena2EndpointUriFactory extends org.apache.camel.support.componen
props.add("operation");
props.add("outputLocation");
props.add("outputType");
+ props.add("overrideEndpoint");
props.add("profileCredentialsName");
props.add("proxyHost");
props.add("proxyPort");
@@ -52,6 +53,8 @@ public class Athena2EndpointUriFactory extends org.apache.camel.support.componen
props.add("retry");
props.add("secretKey");
props.add("sessionToken");
+ props.add("trustAllCertificates");
+ props.add("uriEndpointOverride");
props.add("useDefaultCredentialsProvider");
props.add("useProfileCredentialsProvider");
props.add("useSessionCredentials");
diff --git a/components/camel-aws/camel-aws2-athena/src/generated/resources/META-INF/org/apache/camel/component/aws2/athena/aws2-athena.json b/components/camel-aws/camel-aws2-athena/src/generated/resources/META-INF/org/apache/camel/component/aws2/athena/aws2-athena.json
index 57a23cfb9985..ae22a1de72be 100644
--- a/components/camel-aws/camel-aws2-athena/src/generated/resources/META-INF/org/apache/camel/component/aws2/athena/aws2-athena.json
+++ b/components/camel-aws/camel-aws2-athena/src/generated/resources/META-INF/org/apache/camel/component/aws2/athena/aws2-athena.json
@@ -35,31 +35,34 @@
"operation": { "index": 8, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.aws2.athena.Athena2Operations", "enum": [ "getQueryExecution", "getQueryResults", "listQueryExecutions", "startQueryExecution" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "startQueryExecution", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configur [...]
"outputLocation": { "index": 9, "kind": "property", "displayName": "Output Location", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The location in Amazon S3 where query results are stored, such as s3:\/\/path\/to\/query\/bucket\/. E [...]
"outputType": { "index": 10, "kind": "property", "displayName": "Output Type", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.aws2.athena.Athena2OutputType", "enum": [ "StreamList", "SelectList", "S3Pointer" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "StreamList", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "de [...]
- "queryExecutionId": { "index": 11, "kind": "property", "displayName": "Query Execution Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The unique ID identifying the query execution." },
- "queryString": { "index": 12, "kind": "property", "displayName": "Query String", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The SQL query to run. Except for simple queries, prefer setting this as the body of the Exchange or as a h [...]
- "region": { "index": 13, "kind": "property", "displayName": "Region", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "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", "eu-isoe-west-1", "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-nort [...]
- "resetWaitTimeoutOnRetry": { "index": 14, "kind": "property", "displayName": "Reset Wait Timeout On Retry", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Reset the waitTimeout countdown in the event of a query r [...]
- "retry": { "index": 15, "kind": "property", "displayName": "Retry", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "never", "always", "retryable", "exhausted", "generic" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "never", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional comma separ [...]
- "waitTimeout": { "index": 16, "kind": "property", "displayName": "Wait Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional max wait time in millis to wait for a successful query completion. See the section Waitin [...]
- "workGroup": { "index": 17, "kind": "property", "displayName": "Work Group", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The workgroup to use for running the query." },
- "amazonAthenaClient": { "index": 18, "kind": "property", "displayName": "Amazon Athena Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.athena.AthenaClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The AmazonAthena instance [...]
- "autowiredEnabled": { "index": 19, "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 [...]
- "clientRequestToken": { "index": 20, "kind": "property", "displayName": "Client Request Token", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "A unique string to ensure issues queries are idempotent. It is unlikely you will ne [...]
- "includeTrace": { "index": 21, "kind": "property", "displayName": "Include Trace", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Include useful trace information at the beginning of queries as an SQL comment (p [...]
- "healthCheckConsumerEnabled": { "index": 22, "kind": "property", "displayName": "Health Check Consumer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all consumer based health checks from this component" },
- "healthCheckProducerEnabled": { "index": 23, "kind": "property", "displayName": "Health Check Producer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all producer based health checks from this component. Notice: Camel has by default disabled all producer based health-checks. You can turn on produce [...]
- "proxyHost": { "index": 24, "kind": "property", "displayName": "Proxy Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Athena client." },
- "proxyPort": { "index": 25, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Athena client." },
- "proxyProtocol": { "index": 26, "kind": "property", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol w [...]
- "accessKey": { "index": 27, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key." },
- "encryptionOption": { "index": 28, "kind": "property", "displayName": "Encryption Option", "group": "security", "label": "security", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.services.athena.model.EncryptionOption", "enum": [ "SSE_S3", "SSE_KMS", "CSE_KMS", "null" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "descript [...]
- "kmsKey": { "index": 29, "kind": "property", "displayName": "Kms Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "For SSE-KMS and CSE-KMS, this is the KMS key ARN or ID." },
- "profileCredentialsName": { "index": 30, "kind": "property", "displayName": "Profile Credentials Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set the profil [...]
- "secretKey": { "index": 31, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key." },
- "sessionToken": { "index": 32, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
- "useDefaultCredentialsProvider": { "index": 33, "kind": "property", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect t [...]
- "useProfileCredentialsProvider": { "index": 34, "kind": "property", "displayName": "Use Profile Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect t [...]
- "useSessionCredentials": { "index": 35, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect to use Session Cre [...]
+ "overrideEndpoint": { "index": 11, "kind": "property", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be used in combina [...]
+ "queryExecutionId": { "index": 12, "kind": "property", "displayName": "Query Execution Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The unique ID identifying the query execution." },
+ "queryString": { "index": 13, "kind": "property", "displayName": "Query String", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The SQL query to run. Except for simple queries, prefer setting this as the body of the Exchange or as a h [...]
+ "region": { "index": 14, "kind": "property", "displayName": "Region", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "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", "eu-isoe-west-1", "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-nort [...]
+ "resetWaitTimeoutOnRetry": { "index": 15, "kind": "property", "displayName": "Reset Wait Timeout On Retry", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Reset the waitTimeout countdown in the event of a query r [...]
+ "retry": { "index": 16, "kind": "property", "displayName": "Retry", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "never", "always", "retryable", "exhausted", "generic" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "never", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional comma separ [...]
+ "uriEndpointOverride": { "index": 17, "kind": "property", "displayName": "Uri Endpoint Override", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set the overriding uri endpoint. This option needs to be used in combination with overrid [...]
+ "waitTimeout": { "index": 18, "kind": "property", "displayName": "Wait Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional max wait time in millis to wait for a successful query completion. See the section Waitin [...]
+ "workGroup": { "index": 19, "kind": "property", "displayName": "Work Group", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The workgroup to use for running the query." },
+ "amazonAthenaClient": { "index": 20, "kind": "property", "displayName": "Amazon Athena Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.athena.AthenaClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The AmazonAthena instance [...]
+ "autowiredEnabled": { "index": 21, "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 [...]
+ "clientRequestToken": { "index": 22, "kind": "property", "displayName": "Client Request Token", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "A unique string to ensure issues queries are idempotent. It is unlikely you will ne [...]
+ "includeTrace": { "index": 23, "kind": "property", "displayName": "Include Trace", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Include useful trace information at the beginning of queries as an SQL comment (p [...]
+ "healthCheckConsumerEnabled": { "index": 24, "kind": "property", "displayName": "Health Check Consumer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all consumer based health checks from this component" },
+ "healthCheckProducerEnabled": { "index": 25, "kind": "property", "displayName": "Health Check Producer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all producer based health checks from this component. Notice: Camel has by default disabled all producer based health-checks. You can turn on produce [...]
+ "proxyHost": { "index": 26, "kind": "property", "displayName": "Proxy Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Athena client." },
+ "proxyPort": { "index": 27, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Athena client." },
+ "proxyProtocol": { "index": 28, "kind": "property", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol w [...]
+ "accessKey": { "index": 29, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key." },
+ "encryptionOption": { "index": 30, "kind": "property", "displayName": "Encryption Option", "group": "security", "label": "security", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.services.athena.model.EncryptionOption", "enum": [ "SSE_S3", "SSE_KMS", "CSE_KMS", "null" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "descript [...]
+ "kmsKey": { "index": 31, "kind": "property", "displayName": "Kms Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "For SSE-KMS and CSE-KMS, this is the KMS key ARN or ID." },
+ "profileCredentialsName": { "index": 32, "kind": "property", "displayName": "Profile Credentials Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set the profil [...]
+ "secretKey": { "index": 33, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key." },
+ "sessionToken": { "index": 34, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
+ "trustAllCertificates": { "index": 35, "kind": "property", "displayName": "Trust All Certificates", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of overriding the e [...]
+ "useDefaultCredentialsProvider": { "index": 36, "kind": "property", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect t [...]
+ "useProfileCredentialsProvider": { "index": 37, "kind": "property", "displayName": "Use Profile Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect t [...]
+ "useSessionCredentials": { "index": 38, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect to use Session Cre [...]
},
"headers": {
"CamelAwsAthenaOperation": { "index": 0, "kind": "header", "displayName": "", "group": "all", "label": "all", "required": false, "javaType": "org.apache.camel.component.aws2.athena.Athena2Operations", "enum": [ "getQueryExecution", "getQueryResults", "listQueryExecutions", "startQueryExecution" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "startQueryExecution", "description": "The operation to perform. Permitted values are getQue [...]
@@ -96,28 +99,31 @@
"operation": { "index": 7, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.aws2.athena.Athena2Operations", "enum": [ "getQueryExecution", "getQueryResults", "listQueryExecutions", "startQueryExecution" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "startQueryExecution", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configu [...]
"outputLocation": { "index": 8, "kind": "parameter", "displayName": "Output Location", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The location in Amazon S3 where query results are stored, such as s3:\/\/path\/to\/query\/bucket\/. [...]
"outputType": { "index": 9, "kind": "parameter", "displayName": "Output Type", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.aws2.athena.Athena2OutputType", "enum": [ "StreamList", "SelectList", "S3Pointer" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "StreamList", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "de [...]
- "queryExecutionId": { "index": 10, "kind": "parameter", "displayName": "Query Execution Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The unique ID identifying the query execution." },
- "queryString": { "index": 11, "kind": "parameter", "displayName": "Query String", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The SQL query to run. Except for simple queries, prefer setting this as the body of the Exchange or as a [...]
- "region": { "index": 12, "kind": "parameter", "displayName": "Region", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "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", "eu-isoe-west-1", "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-nor [...]
- "resetWaitTimeoutOnRetry": { "index": 13, "kind": "parameter", "displayName": "Reset Wait Timeout On Retry", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Reset the waitTimeout countdown in the event of a query [...]
- "retry": { "index": 14, "kind": "parameter", "displayName": "Retry", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "never", "always", "retryable", "exhausted", "generic" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "never", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional comma sepa [...]
- "waitTimeout": { "index": 15, "kind": "parameter", "displayName": "Wait Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional max wait time in millis to wait for a successful query completion. See the section Waiti [...]
- "workGroup": { "index": 16, "kind": "parameter", "displayName": "Work Group", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The workgroup to use for running the query." },
- "lazyStartProducer": { "index": 17, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "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 produ [...]
- "amazonAthenaClient": { "index": 18, "kind": "parameter", "displayName": "Amazon Athena Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.athena.AthenaClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The AmazonAthena instance [...]
- "clientRequestToken": { "index": 19, "kind": "parameter", "displayName": "Client Request Token", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "A unique string to ensure issues queries are idempotent. It is unlikely you will n [...]
- "includeTrace": { "index": 20, "kind": "parameter", "displayName": "Include Trace", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Include useful trace information at the beginning of queries as an SQL comment ( [...]
- "proxyHost": { "index": 21, "kind": "parameter", "displayName": "Proxy Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Athena client." },
- "proxyPort": { "index": 22, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Athena client." },
- "proxyProtocol": { "index": 23, "kind": "parameter", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol [...]
- "accessKey": { "index": 24, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key." },
- "encryptionOption": { "index": 25, "kind": "parameter", "displayName": "Encryption Option", "group": "security", "label": "security", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.services.athena.model.EncryptionOption", "enum": [ "SSE_S3", "SSE_KMS", "CSE_KMS", "null" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "descrip [...]
- "kmsKey": { "index": 26, "kind": "parameter", "displayName": "Kms Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "For SSE-KMS and CSE-KMS, this is the KMS key ARN or ID." },
- "profileCredentialsName": { "index": 27, "kind": "parameter", "displayName": "Profile Credentials Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set the profi [...]
- "secretKey": { "index": 28, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key." },
- "sessionToken": { "index": 29, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
- "useDefaultCredentialsProvider": { "index": 30, "kind": "parameter", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect [...]
- "useProfileCredentialsProvider": { "index": 31, "kind": "parameter", "displayName": "Use Profile Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect [...]
- "useSessionCredentials": { "index": 32, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect to use Session Cr [...]
+ "overrideEndpoint": { "index": 10, "kind": "parameter", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be used in combin [...]
+ "queryExecutionId": { "index": 11, "kind": "parameter", "displayName": "Query Execution Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The unique ID identifying the query execution." },
+ "queryString": { "index": 12, "kind": "parameter", "displayName": "Query String", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The SQL query to run. Except for simple queries, prefer setting this as the body of the Exchange or as a [...]
+ "region": { "index": 13, "kind": "parameter", "displayName": "Region", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "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", "eu-isoe-west-1", "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-nor [...]
+ "resetWaitTimeoutOnRetry": { "index": 14, "kind": "parameter", "displayName": "Reset Wait Timeout On Retry", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Reset the waitTimeout countdown in the event of a query [...]
+ "retry": { "index": 15, "kind": "parameter", "displayName": "Retry", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "never", "always", "retryable", "exhausted", "generic" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "never", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional comma sepa [...]
+ "uriEndpointOverride": { "index": 16, "kind": "parameter", "displayName": "Uri Endpoint Override", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set the overriding uri endpoint. This option needs to be used in combination with overri [...]
+ "waitTimeout": { "index": 17, "kind": "parameter", "displayName": "Wait Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Optional max wait time in millis to wait for a successful query completion. See the section Waiti [...]
+ "workGroup": { "index": 18, "kind": "parameter", "displayName": "Work Group", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The workgroup to use for running the query." },
+ "lazyStartProducer": { "index": 19, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "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 produ [...]
+ "amazonAthenaClient": { "index": 20, "kind": "parameter", "displayName": "Amazon Athena Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.athena.AthenaClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "The AmazonAthena instance [...]
+ "clientRequestToken": { "index": 21, "kind": "parameter", "displayName": "Client Request Token", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "A unique string to ensure issues queries are idempotent. It is unlikely you will n [...]
+ "includeTrace": { "index": 22, "kind": "parameter", "displayName": "Include Trace", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Include useful trace information at the beginning of queries as an SQL comment ( [...]
+ "proxyHost": { "index": 23, "kind": "parameter", "displayName": "Proxy Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Athena client." },
+ "proxyPort": { "index": 24, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Athena client." },
+ "proxyProtocol": { "index": 25, "kind": "parameter", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol [...]
+ "accessKey": { "index": 26, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key." },
+ "encryptionOption": { "index": 27, "kind": "parameter", "displayName": "Encryption Option", "group": "security", "label": "security", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.services.athena.model.EncryptionOption", "enum": [ "SSE_S3", "SSE_KMS", "CSE_KMS", "null" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "descrip [...]
+ "kmsKey": { "index": 28, "kind": "parameter", "displayName": "Kms Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "For SSE-KMS and CSE-KMS, this is the KMS key ARN or ID." },
+ "profileCredentialsName": { "index": 29, "kind": "parameter", "displayName": "Profile Credentials Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set the profi [...]
+ "secretKey": { "index": 30, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key." },
+ "sessionToken": { "index": 31, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
+ "trustAllCertificates": { "index": 32, "kind": "parameter", "displayName": "Trust All Certificates", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of overriding the [...]
+ "useDefaultCredentialsProvider": { "index": 33, "kind": "parameter", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect [...]
+ "useProfileCredentialsProvider": { "index": 34, "kind": "parameter", "displayName": "Use Profile Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect [...]
+ "useSessionCredentials": { "index": 35, "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.athena.Athena2Configuration", "configurationField": "configuration", "description": "Set whether the Athena client should expect to use Session Cr [...]
}
}
diff --git a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Configuration.java b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Configuration.java
index 533fd58e924e..8115c89fccea 100644
--- a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Configuration.java
+++ b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Configuration.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.aws2.athena;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -27,7 +28,7 @@ import software.amazon.awssdk.services.athena.model.EncryptionOption;
import software.amazon.awssdk.services.athena.paginators.GetQueryResultsIterable;
@UriParams
-public class Athena2Configuration implements Cloneable {
+public class Athena2Configuration implements Cloneable, AwsCommonConfiguration {
@UriPath(description = "Logical name")
@Metadata(required = true)
@@ -135,6 +136,13 @@ public class Athena2Configuration implements Cloneable {
@UriParam(label = "security")
private String profileCredentialsName;
+ @UriParam(label = "security")
+ private boolean trustAllCertificates;
+ @UriParam
+ private boolean overrideEndpoint;
+ @UriParam
+ private String uriEndpointOverride;
+
public String getAccessKey() {
return accessKey;
}
@@ -458,7 +466,7 @@ public class Athena2Configuration implements Cloneable {
this.useDefaultCredentialsProvider = useDefaultCredentialsProvider;
}
- public Boolean isUseDefaultCredentialsProvider() {
+ public boolean isUseDefaultCredentialsProvider() {
return useDefaultCredentialsProvider;
}
@@ -496,6 +504,40 @@ public class Athena2Configuration implements Cloneable {
this.profileCredentialsName = profileCredentialsName;
}
+ public boolean isTrustAllCertificates() {
+ return trustAllCertificates;
+ }
+
+ /**
+ * If we want to trust all certificates in case of overriding the endpoint
+ */
+ public void setTrustAllCertificates(boolean trustAllCertificates) {
+ this.trustAllCertificates = trustAllCertificates;
+ }
+
+ public boolean isOverrideEndpoint() {
+ return overrideEndpoint;
+ }
+
+ /**
+ * Set the need for overriding the endpoint. This option needs to be used in combination with the
+ * uriEndpointOverride option
+ */
+ public void setOverrideEndpoint(boolean overrideEndpoint) {
+ this.overrideEndpoint = overrideEndpoint;
+ }
+
+ public String getUriEndpointOverride() {
+ return uriEndpointOverride;
+ }
+
+ /**
+ * Set the overriding uri endpoint. This option needs to be used in combination with overrideEndpoint option
+ */
+ public void setUriEndpointOverride(String uriEndpointOverride) {
+ this.uriEndpointOverride = uriEndpointOverride;
+ }
+
// *************************************************
//
// *************************************************
diff --git a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Endpoint.java b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Endpoint.java
index 7eaa695946f6..9b098e3316cb 100644
--- a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Endpoint.java
+++ b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Endpoint.java
@@ -69,7 +69,7 @@ public class Athena2Endpoint extends DefaultEndpoint implements EndpointServiceL
athenaClient = configuration.getAmazonAthenaClient() != null
? configuration.getAmazonAthenaClient()
- : Athena2ClientFactory.getAWSAthenaClient(configuration).getAthenaClient();
+ : Athena2ClientFactory.getAthenaClient(configuration);
}
diff --git a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/Athena2ClientFactory.java b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/Athena2ClientFactory.java
index 7e2a630838b2..86d88ebd9467 100644
--- a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/Athena2ClientFactory.java
+++ b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/Athena2ClientFactory.java
@@ -16,14 +16,12 @@
*/
package org.apache.camel.component.aws2.athena.client;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
import org.apache.camel.component.aws2.athena.Athena2Configuration;
-import org.apache.camel.component.aws2.athena.client.impl.Athena2ClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.athena.client.impl.Athena2ClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws2.athena.client.impl.Athena2ClientSessionTokenImpl;
-import org.apache.camel.component.aws2.athena.client.impl.Athena2ClientStandardImpl;
+import software.amazon.awssdk.services.athena.AthenaClient;
/**
- * Factory class to return the correct type of AWS Athena client.
+ * Factory class to create AWS Athena clients using common configuration.
*/
public final class Athena2ClientFactory {
@@ -31,20 +29,14 @@ public final class Athena2ClientFactory {
}
/**
- * Return the correct AWS Athena client (based on remote vs local).
+ * Create an Athena client based on configuration.
*
- * @param configuration configuration
- * @return AthenaClient
+ * @param configuration The Athena configuration
+ * @return Configured AthenaClient
*/
- public static Athena2InternalClient getAWSAthenaClient(Athena2Configuration configuration) {
- if (Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())) {
- return new Athena2ClientIAMOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseProfileCredentialsProvider())) {
- return new Athena2ClientIAMProfileOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseSessionCredentials())) {
- return new Athena2ClientSessionTokenImpl(configuration);
- } else {
- return new Athena2ClientStandardImpl(configuration);
- }
+ public static AthenaClient getAthenaClient(Athena2Configuration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ AthenaClient::builder);
}
}
diff --git a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/Athena2InternalClient.java b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/Athena2InternalClient.java
deleted file mode 100644
index 7749d36eec2b..000000000000
--- a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/Athena2InternalClient.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.athena.client;
-
-import software.amazon.awssdk.services.athena.AthenaClient;
-
-/**
- * Manage the required actions of an Athena client for either local or remote.
- */
-public interface Athena2InternalClient {
-
- /**
- * Returns an Athena client after a factory method determines which one to return.
- *
- * @return AthenaClient AthenaClient
- */
- AthenaClient getAthenaClient();
-}
diff --git a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/impl/Athena2ClientIAMOptimizedImpl.java b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/impl/Athena2ClientIAMOptimizedImpl.java
deleted file mode 100644
index 416449111a26..000000000000
--- a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/impl/Athena2ClientIAMOptimizedImpl.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * 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.athena.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.athena.Athena2Configuration;
-import org.apache.camel.component.aws2.athena.client.Athena2InternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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.athena.AthenaClient;
-import software.amazon.awssdk.services.athena.AthenaClientBuilder;
-
-/**
- * Manage an AWS Athena client for all users to use (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class Athena2ClientIAMOptimizedImpl implements Athena2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(Athena2ClientIAMOptimizedImpl.class);
- private Athena2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public Athena2ClientIAMOptimizedImpl(Athena2Configuration configuration) {
- LOG.trace("Creating an AWS Athena client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the s3 aws client that is used.
- *
- * @return Amazon S3 Client.
- */
- @Override
- public AthenaClient getAthenaClient() {
- AthenaClient client = null;
- AthenaClientBuilder clientBuilder = AthenaClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/impl/Athena2ClientIAMProfileOptimizedImpl.java b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/impl/Athena2ClientIAMProfileOptimizedImpl.java
deleted file mode 100644
index 30eafd23d73d..000000000000
--- a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/impl/Athena2ClientIAMProfileOptimizedImpl.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.athena.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.athena.Athena2Configuration;
-import org.apache.camel.component.aws2.athena.client.Athena2InternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
-import software.amazon.awssdk.http.apache.ApacheHttpClient;
-import software.amazon.awssdk.http.apache.ProxyConfiguration;
-import software.amazon.awssdk.services.athena.AthenaClient;
-import software.amazon.awssdk.services.athena.AthenaClientBuilder;
-
-/**
- * Manage an AWS Athena client for all users to use. This implementation is for local instances to use a static and
- * solid credential set.
- */
-public class Athena2ClientIAMProfileOptimizedImpl implements Athena2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(Athena2ClientIAMProfileOptimizedImpl.class);
- private Athena2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public Athena2ClientIAMProfileOptimizedImpl(Athena2Configuration configuration) {
- LOG.trace("Creating an AWS Athena manager using profile credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Lambda aws client that is used.
- *
- * @return Amazon Lambda Client.
- */
- @Override
- public AthenaClient getAthenaClient() {
- AthenaClient client = null;
- AthenaClientBuilder clientBuilder = AthenaClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
- }
- if (configuration.getProfileCredentialsName() != null) {
- clientBuilder = clientBuilder
- .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/impl/Athena2ClientSessionTokenImpl.java b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/impl/Athena2ClientSessionTokenImpl.java
deleted file mode 100644
index 71e3a0cd3763..000000000000
--- a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/impl/Athena2ClientSessionTokenImpl.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * 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.athena.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.athena.Athena2Configuration;
-import org.apache.camel.component.aws2.athena.client.Athena2InternalClient;
-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.apache.ApacheHttpClient;
-import software.amazon.awssdk.http.apache.ProxyConfiguration;
-import software.amazon.awssdk.regions.Region;
-import software.amazon.awssdk.services.athena.AthenaClient;
-import software.amazon.awssdk.services.athena.AthenaClientBuilder;
-
-/**
- * Manage an AWS Athena client for all users to use. This implementation is for local instances to use a static and
- * solid credential set.
- */
-public class Athena2ClientSessionTokenImpl implements Athena2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(Athena2ClientSessionTokenImpl.class);
- private Athena2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public Athena2ClientSessionTokenImpl(Athena2Configuration configuration) {
- LOG.trace("Creating an AWS Athena manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Athena AWS client that is used.
- *
- * @return Amazon Athena Client.
- */
- @Override
- public AthenaClient getAthenaClient() {
- AthenaClient client = null;
- AthenaClientBuilder clientBuilder = AthenaClient.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()));
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/impl/Athena2ClientStandardImpl.java b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/impl/Athena2ClientStandardImpl.java
deleted file mode 100644
index c27fa5d4ea68..000000000000
--- a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/client/impl/Athena2ClientStandardImpl.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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.athena.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.athena.Athena2Configuration;
-import org.apache.camel.component.aws2.athena.client.Athena2InternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
-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.athena.AthenaClient;
-import software.amazon.awssdk.services.athena.AthenaClientBuilder;
-
-/**
- * Manage an AWS Athena client for all users to use. This implementation is for local instances to use a static and
- * solid credential set.
- */
-public class Athena2ClientStandardImpl implements Athena2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(Athena2ClientStandardImpl.class);
- private Athena2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public Athena2ClientStandardImpl(Athena2Configuration configuration) {
- LOG.trace("Creating an AWS Athena manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Athena AWS client that is used.
- *
- * @return Amazon Athena Client.
- */
- @Override
- public AthenaClient getAthenaClient() {
- AthenaClient client = null;
- AthenaClientBuilder clientBuilder = AthenaClient.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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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()));
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-athena/src/test/java/org/apache/camel/component/aws2/athena/AthenaClientFactoryTest.java b/components/camel-aws/camel-aws2-athena/src/test/java/org/apache/camel/component/aws2/athena/AthenaClientFactoryTest.java
deleted file mode 100644
index fce96eba344b..000000000000
--- a/components/camel-aws/camel-aws2-athena/src/test/java/org/apache/camel/component/aws2/athena/AthenaClientFactoryTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.athena;
-
-import org.apache.camel.component.aws2.athena.client.Athena2ClientFactory;
-import org.apache.camel.component.aws2.athena.client.Athena2InternalClient;
-import org.apache.camel.component.aws2.athena.client.impl.Athena2ClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.athena.client.impl.Athena2ClientSessionTokenImpl;
-import org.apache.camel.component.aws2.athena.client.impl.Athena2ClientStandardImpl;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class AthenaClientFactoryTest {
-
- @Test
- public void getStandardAthenaClientDefault() {
- Athena2Configuration athena2Configuration = new Athena2Configuration();
- Athena2InternalClient athenaClient = Athena2ClientFactory.getAWSAthenaClient(athena2Configuration);
- assertTrue(athenaClient instanceof Athena2ClientStandardImpl);
- }
-
- @Test
- public void getStandardAthenaClient() {
- Athena2Configuration athena2Configuration = new Athena2Configuration();
- athena2Configuration.setUseDefaultCredentialsProvider(false);
- Athena2InternalClient athenaClient = Athena2ClientFactory.getAWSAthenaClient(athena2Configuration);
- assertTrue(athenaClient instanceof Athena2ClientStandardImpl);
- }
-
- @Test
- public void getIAMOptimizedAthenaClient() {
- Athena2Configuration athena2Configuration = new Athena2Configuration();
- athena2Configuration.setUseDefaultCredentialsProvider(true);
- Athena2InternalClient athenaClient = Athena2ClientFactory.getAWSAthenaClient(athena2Configuration);
- assertTrue(athenaClient instanceof Athena2ClientIAMOptimizedImpl);
- }
-
- @Test
- public void getSessionTokenAthenaClient() {
- Athena2Configuration athena2Configuration = new Athena2Configuration();
- athena2Configuration.setUseSessionCredentials(true);
- Athena2InternalClient athenaClient = Athena2ClientFactory.getAWSAthenaClient(athena2Configuration);
- assertTrue(athenaClient instanceof Athena2ClientSessionTokenImpl);
- }
-}
diff --git a/components/camel-aws/camel-aws2-cw/pom.xml b/components/camel-aws/camel-aws2-cw/pom.xml
index 459353e67ae1..8e7fa310687e 100644
--- a/components/camel-aws/camel-aws2-cw/pom.xml
+++ b/components/camel-aws/camel-aws2-cw/pom.xml
@@ -40,6 +40,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-aws-common</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-health</artifactId>
diff --git a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/Cw2Configuration.java b/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/Cw2Configuration.java
index 20847fcdc66e..3ded82d5a973 100644
--- a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/Cw2Configuration.java
+++ b/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/Cw2Configuration.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.aws2.cw;
import java.time.Instant;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -27,7 +28,7 @@ import software.amazon.awssdk.core.Protocol;
import software.amazon.awssdk.services.cloudwatch.CloudWatchClient;
@UriParams
-public class Cw2Configuration implements Cloneable {
+public class Cw2Configuration implements Cloneable, AwsCommonConfiguration {
@UriPath
@Metadata(required = true)
@@ -258,7 +259,7 @@ public class Cw2Configuration implements Cloneable {
this.useDefaultCredentialsProvider = useDefaultCredentialsProvider;
}
- public Boolean isUseDefaultCredentialsProvider() {
+ public boolean isUseDefaultCredentialsProvider() {
return useDefaultCredentialsProvider;
}
diff --git a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/Cw2Endpoint.java b/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/Cw2Endpoint.java
index 21beb3aee477..c02368e61c1c 100644
--- a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/Cw2Endpoint.java
+++ b/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/Cw2Endpoint.java
@@ -67,7 +67,7 @@ public class Cw2Endpoint extends DefaultEndpoint implements EndpointServiceLocat
super.doInit();
cloudWatchClient = configuration.getAmazonCwClient() != null
- ? configuration.getAmazonCwClient() : Cw2ClientFactory.getCloudWatchClient(configuration).getCloudWatchClient();
+ ? configuration.getAmazonCwClient() : Cw2ClientFactory.getCloudWatchClient(configuration);
}
@Override
diff --git a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/Cw2ClientFactory.java b/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/Cw2ClientFactory.java
index dff69031e27e..1d21764b9777 100644
--- a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/Cw2ClientFactory.java
+++ b/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/Cw2ClientFactory.java
@@ -16,14 +16,12 @@
*/
package org.apache.camel.component.aws2.cw.client;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
import org.apache.camel.component.aws2.cw.Cw2Configuration;
-import org.apache.camel.component.aws2.cw.client.impl.Cw2ClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.cw.client.impl.Cw2ClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws2.cw.client.impl.Cw2ClientSessionTokenImpl;
-import org.apache.camel.component.aws2.cw.client.impl.Cw2ClientStandardImpl;
+import software.amazon.awssdk.services.cloudwatch.CloudWatchClient;
/**
- * Factory class to return the correct type of AWS Cloud Watch client.
+ * Factory class to create AWS CloudWatch clients using common configuration.
*/
public final class Cw2ClientFactory {
@@ -31,20 +29,14 @@ public final class Cw2ClientFactory {
}
/**
- * Return the correct AWS Cloud Watch client (based on remote vs local).
+ * Create a CloudWatch client based on configuration.
*
- * @param configuration configuration
- * @return CloudWatchClient
+ * @param configuration The CloudWatch configuration
+ * @return Configured CloudWatchClient
*/
- public static Cw2InternalClient getCloudWatchClient(Cw2Configuration configuration) {
- if (Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())) {
- return new Cw2ClientIAMOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseProfileCredentialsProvider())) {
- return new Cw2ClientIAMProfileOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseSessionCredentials())) {
- return new Cw2ClientSessionTokenImpl(configuration);
- } else {
- return new Cw2ClientStandardImpl(configuration);
- }
+ public static CloudWatchClient getCloudWatchClient(Cw2Configuration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ CloudWatchClient::builder);
}
}
diff --git a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/Cw2InternalClient.java b/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/Cw2InternalClient.java
deleted file mode 100644
index ea7af5cfbf14..000000000000
--- a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/Cw2InternalClient.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.cw.client;
-
-import software.amazon.awssdk.services.cloudwatch.CloudWatchClient;
-
-/**
- * Manage the required actions of an CloudWatch client for either local or remote.
- */
-public interface Cw2InternalClient {
-
- /**
- * Returns an CloudWatch client after a factory method determines which one to return.
- *
- * @return CloudWatchClient CloudWatchClient
- */
- CloudWatchClient getCloudWatchClient();
-}
diff --git a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/impl/Cw2ClientIAMOptimizedImpl.java b/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/impl/Cw2ClientIAMOptimizedImpl.java
deleted file mode 100644
index f53b78e8ed94..000000000000
--- a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/impl/Cw2ClientIAMOptimizedImpl.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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.cw.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.cw.Cw2Configuration;
-import org.apache.camel.component.aws2.cw.client.Cw2InternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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.cloudwatch.CloudWatchClient;
-import software.amazon.awssdk.services.cloudwatch.CloudWatchClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS CloudWatch client for all users to use (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class Cw2ClientIAMOptimizedImpl implements Cw2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(Cw2ClientIAMOptimizedImpl.class);
- private Cw2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public Cw2ClientIAMOptimizedImpl(Cw2Configuration configuration) {
- LOG.trace("Creating an AWS CloudWatch client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Cloud watch aws client that is used.
- *
- * @return Cloud Watch Client.
- */
- @Override
- public CloudWatchClient getCloudWatchClient() {
- CloudWatchClient client = null;
- CloudWatchClientBuilder clientBuilder = CloudWatchClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/impl/Cw2ClientIAMProfileOptimizedImpl.java b/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/impl/Cw2ClientIAMProfileOptimizedImpl.java
deleted file mode 100644
index 7462e35829ac..000000000000
--- a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/impl/Cw2ClientIAMProfileOptimizedImpl.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * 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.cw.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.cw.Cw2Configuration;
-import org.apache.camel.component.aws2.cw.client.Cw2InternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
-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.cloudwatch.CloudWatchClient;
-import software.amazon.awssdk.services.cloudwatch.CloudWatchClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS CloudWatch client for all users to use (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class Cw2ClientIAMProfileOptimizedImpl implements Cw2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(Cw2ClientIAMProfileOptimizedImpl.class);
- private Cw2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public Cw2ClientIAMProfileOptimizedImpl(Cw2Configuration configuration) {
- LOG.trace("Creating an AWS CloudWatch client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Cloud watch aws client that is used.
- *
- * @return Cloud Watch Client.
- */
- @Override
- public CloudWatchClient getCloudWatchClient() {
- CloudWatchClient client = null;
- CloudWatchClientBuilder clientBuilder = CloudWatchClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
- }
- if (configuration.getProfileCredentialsName() != null) {
- clientBuilder = clientBuilder
- .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.isOverrideEndpoint()) {
- clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
- }
- if (configuration.isTrustAllCertificates()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/impl/Cw2ClientSessionTokenImpl.java b/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/impl/Cw2ClientSessionTokenImpl.java
deleted file mode 100644
index 2abf3e57f69c..000000000000
--- a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/impl/Cw2ClientSessionTokenImpl.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * 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.cw.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.cw.Cw2Configuration;
-import org.apache.camel.component.aws2.cw.client.Cw2InternalClient;
-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.cloudwatch.CloudWatchClient;
-import software.amazon.awssdk.services.cloudwatch.CloudWatchClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Cloud Watch client for all users to use. This implementation is for local instances to use a static and
- * solid credential set.
- */
-public class Cw2ClientSessionTokenImpl implements Cw2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(Cw2ClientStandardImpl.class);
- private Cw2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public Cw2ClientSessionTokenImpl(Cw2Configuration configuration) {
- LOG.trace("Creating an AWS CloudWatch manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Cloud Watch AWS client that is used.
- *
- * @return Amazon Cloud Watch Client.
- */
- @Override
- public CloudWatchClient getCloudWatchClient() {
- CloudWatchClient client = null;
- CloudWatchClientBuilder clientBuilder = CloudWatchClient.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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/impl/Cw2ClientStandardImpl.java b/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/impl/Cw2ClientStandardImpl.java
deleted file mode 100644
index 3b844f66ecae..000000000000
--- a/components/camel-aws/camel-aws2-cw/src/main/java/org/apache/camel/component/aws2/cw/client/impl/Cw2ClientStandardImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.cw.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.cw.Cw2Configuration;
-import org.apache.camel.component.aws2.cw.client.Cw2InternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-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.cloudwatch.CloudWatchClient;
-import software.amazon.awssdk.services.cloudwatch.CloudWatchClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Cloud Watch client for all users to use. This implementation is for local instances to use a static and
- * solid credential set.
- */
-public class Cw2ClientStandardImpl implements Cw2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(Cw2ClientStandardImpl.class);
- private Cw2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public Cw2ClientStandardImpl(Cw2Configuration configuration) {
- LOG.trace("Creating an AWS CloudWatch manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Cloud Watch AWS client that is used.
- *
- * @return Amazon Cloud Watch Client.
- */
- @Override
- public CloudWatchClient getCloudWatchClient() {
- CloudWatchClient client = null;
- CloudWatchClientBuilder clientBuilder = CloudWatchClient.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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-cw/src/test/java/org/apache/camel/component/aws2/cw/Cw2ClientFactoryTest.java b/components/camel-aws/camel-aws2-cw/src/test/java/org/apache/camel/component/aws2/cw/Cw2ClientFactoryTest.java
deleted file mode 100644
index e70e8b602162..000000000000
--- a/components/camel-aws/camel-aws2-cw/src/test/java/org/apache/camel/component/aws2/cw/Cw2ClientFactoryTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.cw;
-
-import org.apache.camel.component.aws2.cw.client.Cw2ClientFactory;
-import org.apache.camel.component.aws2.cw.client.Cw2InternalClient;
-import org.apache.camel.component.aws2.cw.client.impl.Cw2ClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.cw.client.impl.Cw2ClientSessionTokenImpl;
-import org.apache.camel.component.aws2.cw.client.impl.Cw2ClientStandardImpl;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class Cw2ClientFactoryTest {
-
- @Test
- public void getStandardCWClientDefault() {
- Cw2Configuration cw2Configuration = new Cw2Configuration();
- Cw2InternalClient cwClient = Cw2ClientFactory.getCloudWatchClient(cw2Configuration);
- assertTrue(cwClient instanceof Cw2ClientStandardImpl);
- }
-
- @Test
- public void getStandardCWClient() {
- Cw2Configuration cw2Configuration = new Cw2Configuration();
- cw2Configuration.setUseDefaultCredentialsProvider(false);
- Cw2InternalClient cwClient = Cw2ClientFactory.getCloudWatchClient(cw2Configuration);
- assertTrue(cwClient instanceof Cw2ClientStandardImpl);
- }
-
- @Test
- public void getIAMOptimizedCWClient() {
- Cw2Configuration cw2Configuration = new Cw2Configuration();
- cw2Configuration.setUseDefaultCredentialsProvider(true);
- Cw2InternalClient cwClient = Cw2ClientFactory.getCloudWatchClient(cw2Configuration);
- assertTrue(cwClient instanceof Cw2ClientIAMOptimizedImpl);
- }
-
- @Test
- public void getSessionTokenCwClient() {
- Cw2Configuration cw2Configuration = new Cw2Configuration();
- cw2Configuration.setUseSessionCredentials(true);
- Cw2InternalClient cwClient = Cw2ClientFactory.getCloudWatchClient(cw2Configuration);
- assertTrue(cwClient instanceof Cw2ClientSessionTokenImpl);
- }
-}
diff --git a/components/camel-aws/camel-aws2-eventbridge/pom.xml b/components/camel-aws/camel-aws2-eventbridge/pom.xml
index eda5881d27ab..8a5159f877a4 100644
--- a/components/camel-aws/camel-aws2-eventbridge/pom.xml
+++ b/components/camel-aws/camel-aws2-eventbridge/pom.xml
@@ -40,6 +40,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-aws-common</artifactId>
+ </dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>eventbridge</artifactId>
diff --git a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeConfiguration.java b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeConfiguration.java
index d952b7d9eb8b..361c685b2cb5 100644
--- a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeConfiguration.java
+++ b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeConfiguration.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.aws2.eventbridge;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -24,7 +25,7 @@ import software.amazon.awssdk.core.Protocol;
import software.amazon.awssdk.services.eventbridge.EventBridgeClient;
@UriParams
-public class EventbridgeConfiguration implements Cloneable {
+public class EventbridgeConfiguration implements Cloneable, AwsCommonConfiguration {
private String eventbusName = "default";
@UriParam
@@ -243,7 +244,7 @@ public class EventbridgeConfiguration implements Cloneable {
this.useDefaultCredentialsProvider = useDefaultCredentialsProvider;
}
- public Boolean isUseDefaultCredentialsProvider() {
+ public boolean isUseDefaultCredentialsProvider() {
return useDefaultCredentialsProvider;
}
diff --git a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeEndpoint.java b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeEndpoint.java
index 83361947b7c0..af913a7ee8c9 100644
--- a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeEndpoint.java
+++ b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeEndpoint.java
@@ -73,7 +73,7 @@ public class EventbridgeEndpoint extends DefaultEndpoint implements EndpointServ
eventbridgeClient = configuration.getEventbridgeClient() != null
? configuration.getEventbridgeClient()
- : EventbridgeClientFactory.getEventbridgeClient(configuration).getEventbridgeClient();
+ : EventbridgeClientFactory.getEventbridgeClient(configuration);
}
@Override
diff --git a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/EventbridgeClientFactory.java b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/EventbridgeClientFactory.java
index 332b96022647..53bda27f1b29 100644
--- a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/EventbridgeClientFactory.java
+++ b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/EventbridgeClientFactory.java
@@ -16,14 +16,12 @@
*/
package org.apache.camel.component.aws2.eventbridge.client;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
import org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration;
-import org.apache.camel.component.aws2.eventbridge.client.impl.EventbridgeClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.eventbridge.client.impl.EventbridgeClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws2.eventbridge.client.impl.EventbridgeClientSessionTokenImpl;
-import org.apache.camel.component.aws2.eventbridge.client.impl.EventbridgeClientStandardImpl;
+import software.amazon.awssdk.services.eventbridge.EventBridgeClient;
/**
- * Factory class to return the correct type of AWS Eventbridge client.
+ * Factory class to create AWS EventBridge clients using common configuration.
*/
public final class EventbridgeClientFactory {
@@ -31,20 +29,14 @@ public final class EventbridgeClientFactory {
}
/**
- * Return the correct AWS Eventbridge client (based on remote vs local).
+ * Create an EventBridge client based on configuration.
*
- * @param configuration configuration
- * @return EventBridgeClient
+ * @param configuration The EventBridge configuration
+ * @return Configured EventBridgeClient
*/
- public static EventbridgeInternalClient getEventbridgeClient(EventbridgeConfiguration configuration) {
- if (Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())) {
- return new EventbridgeClientIAMOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseProfileCredentialsProvider())) {
- return new EventbridgeClientIAMProfileOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseSessionCredentials())) {
- return new EventbridgeClientSessionTokenImpl(configuration);
- } else {
- return new EventbridgeClientStandardImpl(configuration);
- }
+ public static EventBridgeClient getEventbridgeClient(EventbridgeConfiguration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ EventBridgeClient::builder);
}
}
diff --git a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/EventbridgeInternalClient.java b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/EventbridgeInternalClient.java
deleted file mode 100644
index 891fe2d2b93e..000000000000
--- a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/EventbridgeInternalClient.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.eventbridge.client;
-
-import software.amazon.awssdk.services.eventbridge.EventBridgeClient;
-
-/**
- * Manage the required actions of an Eventbridge client for either local or remote.
- */
-public interface EventbridgeInternalClient {
-
- /**
- * Returns an Eventbridge client after a factory method determines which one to return.
- *
- * @return EventBridgeClient EventBridgeClient
- */
- EventBridgeClient getEventbridgeClient();
-}
diff --git a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/impl/EventbridgeClientIAMOptimizedImpl.java b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/impl/EventbridgeClientIAMOptimizedImpl.java
deleted file mode 100644
index da119ba3595a..000000000000
--- a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/impl/EventbridgeClientIAMOptimizedImpl.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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.eventbridge.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration;
-import org.apache.camel.component.aws2.eventbridge.client.EventbridgeInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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.eventbridge.EventBridgeClient;
-import software.amazon.awssdk.services.eventbridge.EventBridgeClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Eventbridge client for all users to use (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class EventbridgeClientIAMOptimizedImpl implements EventbridgeInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(EventbridgeClientIAMOptimizedImpl.class);
- private EventbridgeConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public EventbridgeClientIAMOptimizedImpl(EventbridgeConfiguration configuration) {
- LOG.trace("Creating an AWS Eventbridge client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Eventbridge aws client that is used.
- *
- * @return Eventbridge Client.
- */
- @Override
- public EventBridgeClient getEventbridgeClient() {
- EventBridgeClient client = null;
- EventBridgeClientBuilder clientBuilder = EventBridgeClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/impl/EventbridgeClientIAMProfileOptimizedImpl.java b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/impl/EventbridgeClientIAMProfileOptimizedImpl.java
deleted file mode 100644
index cbe02b2d10aa..000000000000
--- a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/impl/EventbridgeClientIAMProfileOptimizedImpl.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * 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.eventbridge.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration;
-import org.apache.camel.component.aws2.eventbridge.client.EventbridgeInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
-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.eventbridge.EventBridgeClient;
-import software.amazon.awssdk.services.eventbridge.EventBridgeClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Eventbridge client for all users to use (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class EventbridgeClientIAMProfileOptimizedImpl implements EventbridgeInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(EventbridgeClientIAMProfileOptimizedImpl.class);
- private EventbridgeConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public EventbridgeClientIAMProfileOptimizedImpl(EventbridgeConfiguration configuration) {
- LOG.trace("Creating an AWS Eventbridge client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Eventbridge aws client that is used.
- *
- * @return Eventbridge Client.
- */
- @Override
- public EventBridgeClient getEventbridgeClient() {
- EventBridgeClient client = null;
- EventBridgeClientBuilder clientBuilder = EventBridgeClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
- }
- if (configuration.getProfileCredentialsName() != null) {
- clientBuilder = clientBuilder
- .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.isOverrideEndpoint()) {
- clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
- }
- if (configuration.isTrustAllCertificates()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/impl/EventbridgeClientSessionTokenImpl.java b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/impl/EventbridgeClientSessionTokenImpl.java
deleted file mode 100644
index 493bd6c81305..000000000000
--- a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/impl/EventbridgeClientSessionTokenImpl.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * 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.eventbridge.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration;
-import org.apache.camel.component.aws2.eventbridge.client.EventbridgeInternalClient;
-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.eventbridge.EventBridgeClient;
-import software.amazon.awssdk.services.eventbridge.EventBridgeClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS EKS client for all users to use. This implementation is for local instances to use a static and solid
- * credential set.
- */
-public class EventbridgeClientSessionTokenImpl implements EventbridgeInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(EventbridgeClientSessionTokenImpl.class);
- private EventbridgeConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public EventbridgeClientSessionTokenImpl(EventbridgeConfiguration configuration) {
- LOG.trace("Creating an AWS Eventbridge manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Eventbridge AWS client that is used.
- *
- * @return Amazon Eventbridge Client.
- */
- @Override
- public EventBridgeClient getEventbridgeClient() {
- EventBridgeClient client = null;
- EventBridgeClientBuilder clientBuilder = EventBridgeClient.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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/impl/EventbridgeClientStandardImpl.java b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/impl/EventbridgeClientStandardImpl.java
deleted file mode 100644
index d281e985786a..000000000000
--- a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/client/impl/EventbridgeClientStandardImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.eventbridge.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration;
-import org.apache.camel.component.aws2.eventbridge.client.EventbridgeInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-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.eventbridge.EventBridgeClient;
-import software.amazon.awssdk.services.eventbridge.EventBridgeClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS EKS client for all users to use. This implementation is for local instances to use a static and solid
- * credential set.
- */
-public class EventbridgeClientStandardImpl implements EventbridgeInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(EventbridgeClientStandardImpl.class);
- private EventbridgeConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public EventbridgeClientStandardImpl(EventbridgeConfiguration configuration) {
- LOG.trace("Creating an AWS Eventbridge manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Eventbridge AWS client that is used.
- *
- * @return Amazon Eventbridge Client.
- */
- @Override
- public EventBridgeClient getEventbridgeClient() {
- EventBridgeClient client = null;
- EventBridgeClientBuilder clientBuilder = EventBridgeClient.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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/EventbridgeClientFactoryTest.java b/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/EventbridgeClientFactoryTest.java
deleted file mode 100644
index fc1aae731c7d..000000000000
--- a/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/EventbridgeClientFactoryTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.eventbridge;
-
-import org.apache.camel.component.aws2.eventbridge.client.EventbridgeClientFactory;
-import org.apache.camel.component.aws2.eventbridge.client.EventbridgeInternalClient;
-import org.apache.camel.component.aws2.eventbridge.client.impl.EventbridgeClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.eventbridge.client.impl.EventbridgeClientSessionTokenImpl;
-import org.apache.camel.component.aws2.eventbridge.client.impl.EventbridgeClientStandardImpl;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class EventbridgeClientFactoryTest {
-
- @Test
- public void getStandardEventbridgeClientDefault() {
- EventbridgeConfiguration eventbridgeConfiguration = new EventbridgeConfiguration();
- EventbridgeInternalClient eventbridgeClient = EventbridgeClientFactory.getEventbridgeClient(eventbridgeConfiguration);
- assertTrue(eventbridgeClient instanceof EventbridgeClientStandardImpl);
- }
-
- @Test
- public void getStandardEventbridgeClient() {
- EventbridgeConfiguration eventbridgeConfiguration = new EventbridgeConfiguration();
- eventbridgeConfiguration.setUseDefaultCredentialsProvider(false);
- EventbridgeInternalClient eventbridgeClient = EventbridgeClientFactory.getEventbridgeClient(eventbridgeConfiguration);
- assertTrue(eventbridgeClient instanceof EventbridgeClientStandardImpl);
- }
-
- @Test
- public void getIAMOptimizedEventbridgeClient() {
- EventbridgeConfiguration eventbridgeConfiguration = new EventbridgeConfiguration();
- eventbridgeConfiguration.setUseDefaultCredentialsProvider(true);
- EventbridgeInternalClient eventbridgeClient = EventbridgeClientFactory.getEventbridgeClient(eventbridgeConfiguration);
- assertTrue(eventbridgeClient instanceof EventbridgeClientIAMOptimizedImpl);
- }
-
- @Test
- public void getSessionTokenEventbridgeClient() {
- EventbridgeConfiguration eventbridgeConfiguration = new EventbridgeConfiguration();
- eventbridgeConfiguration.setUseSessionCredentials(true);
- EventbridgeInternalClient eventbridgeClient = EventbridgeClientFactory.getEventbridgeClient(eventbridgeConfiguration);
- assertTrue(eventbridgeClient instanceof EventbridgeClientSessionTokenImpl);
- }
-}
diff --git a/components/camel-aws/camel-aws2-redshift/pom.xml b/components/camel-aws/camel-aws2-redshift/pom.xml
index 72a6b011571c..3ce2a0d30ec2 100644
--- a/components/camel-aws/camel-aws2-redshift/pom.xml
+++ b/components/camel-aws/camel-aws2-redshift/pom.xml
@@ -43,6 +43,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-aws-common</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-health</artifactId>
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 ecc20e03d3e4..68f71475f2ff 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
@@ -17,6 +17,7 @@
package org.apache.camel.component.aws2.redshift.data;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -25,7 +26,7 @@ import software.amazon.awssdk.core.Protocol;
import software.amazon.awssdk.services.redshiftdata.RedshiftDataClient;
@UriParams
-public class RedshiftData2Configuration implements Cloneable {
+public class RedshiftData2Configuration implements Cloneable, AwsCommonConfiguration {
@UriPath(description = "Logical name")
@Metadata(required = true)
@@ -221,7 +222,7 @@ public class RedshiftData2Configuration implements Cloneable {
this.useDefaultCredentialsProvider = useDefaultCredentialsProvider;
}
- public Boolean isUseDefaultCredentialsProvider() {
+ public boolean isUseDefaultCredentialsProvider() {
return useDefaultCredentialsProvider;
}
diff --git a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Endpoint.java b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Endpoint.java
index fde580783b8a..9adba536bed9 100644
--- a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Endpoint.java
+++ b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Endpoint.java
@@ -70,7 +70,7 @@ public class RedshiftData2Endpoint extends DefaultEndpoint implements EndpointSe
super.doStart();
awsRedshiftDataClient = configuration.getAwsRedshiftDataClient() != null
? configuration.getAwsRedshiftDataClient()
- : RedshiftData2ClientFactory.getRedshiftDataClient(configuration).getRedshiftDataClient();
+ : RedshiftData2ClientFactory.getRedshiftDataClient(configuration);
}
@Override
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 9b53ead1abb3..c020da9011a2 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
@@ -16,13 +16,12 @@
*/
package org.apache.camel.component.aws2.redshift.data.client;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
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;
+import software.amazon.awssdk.services.redshiftdata.RedshiftDataClient;
/**
- * Factory class to return the correct type of AWS RedshiftData client.
+ * Factory class to create AWS RedshiftData clients using common configuration.
*/
public final class RedshiftData2ClientFactory {
@@ -30,18 +29,14 @@ public final class RedshiftData2ClientFactory {
}
/**
- * Return the correct AWS RedshiftData client (based on remote vs local).
+ * Create a RedshiftData client based on configuration.
*
- * @param configuration configuration
- * @return RedshiftDataClient
+ * @param configuration The RedshiftData configuration
+ * @return Configured RedshiftDataClient
*/
- public static RedshiftData2InternalClient getRedshiftDataClient(RedshiftData2Configuration 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);
- }
+ public static RedshiftDataClient getRedshiftDataClient(RedshiftData2Configuration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ RedshiftDataClient::builder);
}
}
diff --git a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/RedshiftData2InternalClient.java b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/RedshiftData2InternalClient.java
deleted file mode 100644
index bd56f0f85a09..000000000000
--- a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/RedshiftData2InternalClient.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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;
-
-import software.amazon.awssdk.services.redshiftdata.RedshiftDataClient;
-
-/**
- * Manage the required actions of an RedshiftData client for either local or remote.
- */
-public interface RedshiftData2InternalClient {
-
- /**
- * Returns an RedshiftData client after a factory method determines which one to return.
- *
- * @return RedshiftDataClient RedshiftDataClient
- */
- RedshiftDataClient getRedshiftDataClient();
-}
diff --git a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/impl/RedshiftData2ClientIAMOptimizedImpl.java b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/impl/RedshiftData2ClientIAMOptimizedImpl.java
deleted file mode 100644
index 0ca93b43865f..000000000000
--- a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/impl/RedshiftData2ClientIAMOptimizedImpl.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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.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 (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class RedshiftData2ClientIAMOptimizedImpl implements RedshiftData2InternalClient {
-
- private static final Logger LOG = LoggerFactory.getLogger(RedshiftData2ClientIAMOptimizedImpl.class);
- private RedshiftData2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public RedshiftData2ClientIAMOptimizedImpl(RedshiftData2Configuration configuration) {
- LOG.trace("Creating an AWS RedshiftData client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the RedshiftData aws client that is used.
- *
- * @return RedshiftData Client.
- */
- @Override
- public RedshiftDataClient getRedshiftDataClient() {
- RedshiftDataClient client = null;
- RedshiftDataClientBuilder clientBuilder = RedshiftDataClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- 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/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
deleted file mode 100644
index 5b1407e9407a..000000000000
--- a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/impl/RedshiftData2ClientSessionTokenImpl.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * 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/main/java/org/apache/camel/component/aws2/redshift/data/client/impl/RedshiftData2ClientStandardImpl.java b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/impl/RedshiftData2ClientStandardImpl.java
deleted file mode 100644
index d2fa05ab8cdf..000000000000
--- a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/client/impl/RedshiftData2ClientStandardImpl.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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.AwsBasicCredentials;
-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 RedshiftData2ClientStandardImpl implements RedshiftData2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(RedshiftData2ClientStandardImpl.class);
- private RedshiftData2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public RedshiftData2ClientStandardImpl(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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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
deleted file mode 100644
index 40c24cac2394..000000000000
--- a/components/camel-aws/camel-aws2-redshift/src/test/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2ClientFactoryTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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;
-
-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;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class RedshiftData2ClientFactoryTest {
-
- @Test
- public void getStandardRedshiftDataClientDefault() {
- RedshiftData2Configuration redshiftData2Configuration = new RedshiftData2Configuration();
- RedshiftData2InternalClient redshiftDataClient
- = RedshiftData2ClientFactory.getRedshiftDataClient(redshiftData2Configuration);
- assertTrue(redshiftDataClient instanceof RedshiftData2ClientStandardImpl);
- }
-
- @Test
- public void getStandardRedshiftDataClient() {
- RedshiftData2Configuration redshiftData2Configuration = new RedshiftData2Configuration();
- redshiftData2Configuration.setUseDefaultCredentialsProvider(false);
- RedshiftData2InternalClient redshiftDataClient
- = RedshiftData2ClientFactory.getRedshiftDataClient(redshiftData2Configuration);
- assertTrue(redshiftDataClient instanceof RedshiftData2ClientStandardImpl);
- }
-
- @Test
- public void getIAMOptimizedRedshiftDataClient() {
- RedshiftData2Configuration redshiftData2Configuration = new RedshiftData2Configuration();
- redshiftData2Configuration.setUseDefaultCredentialsProvider(true);
- RedshiftData2InternalClient redshiftDataClient
- = 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);
- }
-}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/pom.xml b/components/camel-aws/camel-aws2-s3-vectors/pom.xml
index fe5bfdd8cc5d..0dd34fcaacf4 100644
--- a/components/camel-aws/camel-aws2-s3-vectors/pom.xml
+++ b/components/camel-aws/camel-aws2-s3-vectors/pom.xml
@@ -40,6 +40,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-aws-common</artifactId>
+ </dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3vectors</artifactId>
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsConfiguration.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsConfiguration.java
index 9aee63486dcf..44f809d1e5c4 100644
--- a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsConfiguration.java
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsConfiguration.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.aws2.s3vectors;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -24,7 +25,7 @@ import software.amazon.awssdk.core.Protocol;
import software.amazon.awssdk.services.s3vectors.S3VectorsClient;
@UriParams
-public class AWS2S3VectorsConfiguration implements Cloneable {
+public class AWS2S3VectorsConfiguration implements Cloneable, AwsCommonConfiguration {
private String vectorBucketName;
@UriParam(label = "advanced")
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpoint.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpoint.java
index 6f10dfd72d21..2928e42de8c1 100644
--- a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpoint.java
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpoint.java
@@ -104,7 +104,7 @@ public class AWS2S3VectorsEndpoint extends ScheduledPollEndpoint implements Endp
s3VectorsClient = configuration.getS3VectorsClient() != null
? configuration.getS3VectorsClient()
- : AWS2S3VectorsClientFactory.getS3VectorsClient(configuration).getS3VectorsClient();
+ : AWS2S3VectorsClientFactory.getS3VectorsClient(configuration);
LOG.trace("Using vector bucket [{}]", vectorBucketName);
}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/AWS2CamelS3VectorsInternalClient.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/AWS2CamelS3VectorsInternalClient.java
deleted file mode 100644
index 8cb553f0fe16..000000000000
--- a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/AWS2CamelS3VectorsInternalClient.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.s3vectors.client;
-
-import software.amazon.awssdk.services.s3vectors.S3VectorsClient;
-
-/**
- * Manage the required actions of an S3 Vectors client for either local or remote.
- */
-public interface AWS2CamelS3VectorsInternalClient {
-
- /**
- * Returns an S3 Vectors client after a factory method determines which one to return.
- *
- * @return S3VectorsClient
- */
- S3VectorsClient getS3VectorsClient();
-}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/AWS2S3VectorsClientFactory.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/AWS2S3VectorsClientFactory.java
index 94e88e6303f7..8431a3790e6a 100644
--- a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/AWS2S3VectorsClientFactory.java
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/AWS2S3VectorsClientFactory.java
@@ -16,14 +16,12 @@
*/
package org.apache.camel.component.aws2.s3vectors.client;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
import org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration;
-import org.apache.camel.component.aws2.s3vectors.client.impl.AWS2S3VectorsClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.s3vectors.client.impl.AWS2S3VectorsClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws2.s3vectors.client.impl.AWS2S3VectorsClientSessionTokenImpl;
-import org.apache.camel.component.aws2.s3vectors.client.impl.AWS2S3VectorsClientStandardImpl;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClient;
/**
- * Factory class to return the correct type of AWS S3 Vectors client.
+ * Factory class to create AWS S3 Vectors clients using common configuration.
*/
public final class AWS2S3VectorsClientFactory {
@@ -31,20 +29,14 @@ public final class AWS2S3VectorsClientFactory {
}
/**
- * Return the correct AWS S3 Vectors client (based on configuration).
+ * Create a S3VectorsClient based on configuration.
*
- * @param configuration configuration
- * @return AWS2CamelS3VectorsInternalClient
+ * @param configuration The S3 Vectors configuration
+ * @return Configured S3VectorsClient
*/
- public static AWS2CamelS3VectorsInternalClient getS3VectorsClient(AWS2S3VectorsConfiguration configuration) {
- if (Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())) {
- return new AWS2S3VectorsClientIAMOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseProfileCredentialsProvider())) {
- return new AWS2S3VectorsClientIAMProfileOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseSessionCredentials())) {
- return new AWS2S3VectorsClientSessionTokenImpl(configuration);
- } else {
- return new AWS2S3VectorsClientStandardImpl(configuration);
- }
+ public static S3VectorsClient getS3VectorsClient(AWS2S3VectorsConfiguration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ S3VectorsClient::builder);
}
}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientIAMOptimizedImpl.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientIAMOptimizedImpl.java
deleted file mode 100644
index 712850a0064c..000000000000
--- a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientIAMOptimizedImpl.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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.s3vectors.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration;
-import org.apache.camel.component.aws2.s3vectors.client.AWS2CamelS3VectorsInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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.s3vectors.S3VectorsClient;
-import software.amazon.awssdk.services.s3vectors.S3VectorsClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS S3 Vectors client for all users to use (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class AWS2S3VectorsClientIAMOptimizedImpl implements AWS2CamelS3VectorsInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(AWS2S3VectorsClientIAMOptimizedImpl.class);
- private AWS2S3VectorsConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public AWS2S3VectorsClientIAMOptimizedImpl(AWS2S3VectorsConfiguration configuration) {
- LOG.trace("Creating an AWS S3 Vectors client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the S3 Vectors AWS client that is used.
- *
- * @return S3 Vectors Client.
- */
- @Override
- public S3VectorsClient getS3VectorsClient() {
- S3VectorsClient client = null;
- S3VectorsClientBuilder clientBuilder = S3VectorsClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientIAMProfileOptimizedImpl.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientIAMProfileOptimizedImpl.java
deleted file mode 100644
index 730ef2f1e860..000000000000
--- a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientIAMProfileOptimizedImpl.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * 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.s3vectors.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration;
-import org.apache.camel.component.aws2.s3vectors.client.AWS2CamelS3VectorsInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
-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.s3vectors.S3VectorsClient;
-import software.amazon.awssdk.services.s3vectors.S3VectorsClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS S3 Vectors client using profile credentials.
- */
-public class AWS2S3VectorsClientIAMProfileOptimizedImpl implements AWS2CamelS3VectorsInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(AWS2S3VectorsClientIAMProfileOptimizedImpl.class);
- private AWS2S3VectorsConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public AWS2S3VectorsClientIAMProfileOptimizedImpl(AWS2S3VectorsConfiguration configuration) {
- LOG.trace("Creating an AWS S3 Vectors client using profile credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the S3 Vectors AWS client that is used.
- *
- * @return S3 Vectors Client.
- */
- @Override
- public S3VectorsClient getS3VectorsClient() {
- S3VectorsClient client = null;
- S3VectorsClientBuilder clientBuilder = S3VectorsClient.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.getProfileCredentialsName() != null) {
- if (isClientConfigFound) {
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder)
- .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
- } else {
- clientBuilder = clientBuilder
- .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
- }
- } else {
- if (isClientConfigFound) {
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder)
- .credentialsProvider(ProfileCredentialsProvider.create());
- } else {
- clientBuilder = clientBuilder.credentialsProvider(ProfileCredentialsProvider.create());
- }
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.isOverrideEndpoint()) {
- clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
- }
- if (configuration.isTrustAllCertificates()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientSessionTokenImpl.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientSessionTokenImpl.java
deleted file mode 100644
index 00baec3b93b9..000000000000
--- a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientSessionTokenImpl.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * 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.s3vectors.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration;
-import org.apache.camel.component.aws2.s3vectors.client.AWS2CamelS3VectorsInternalClient;
-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.s3vectors.S3VectorsClient;
-import software.amazon.awssdk.services.s3vectors.S3VectorsClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS S3 Vectors client using session credentials.
- */
-public class AWS2S3VectorsClientSessionTokenImpl implements AWS2CamelS3VectorsInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(AWS2S3VectorsClientSessionTokenImpl.class);
- private AWS2S3VectorsConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public AWS2S3VectorsClientSessionTokenImpl(AWS2S3VectorsConfiguration configuration) {
- LOG.trace("Creating an AWS S3 Vectors client using session credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the S3 Vectors AWS client that is used.
- *
- * @return S3 Vectors Client.
- */
- @Override
- public S3VectorsClient getS3VectorsClient() {
- S3VectorsClient client = null;
- S3VectorsClientBuilder clientBuilder = S3VectorsClient.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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientStandardImpl.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientStandardImpl.java
deleted file mode 100644
index 09d3671eb069..000000000000
--- a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientStandardImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.s3vectors.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration;
-import org.apache.camel.component.aws2.s3vectors.client.AWS2CamelS3VectorsInternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-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.s3vectors.S3VectorsClient;
-import software.amazon.awssdk.services.s3vectors.S3VectorsClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS S3 Vectors client for all users to use. This implementation is for local instances to use a static and
- * solid credential set.
- */
-public class AWS2S3VectorsClientStandardImpl implements AWS2CamelS3VectorsInternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(AWS2S3VectorsClientStandardImpl.class);
- private AWS2S3VectorsConfiguration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public AWS2S3VectorsClientStandardImpl(AWS2S3VectorsConfiguration configuration) {
- LOG.trace("Creating an AWS S3 Vectors client using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the S3 Vectors AWS client that is used.
- *
- * @return S3 Vectors Client.
- */
- @Override
- public S3VectorsClient getS3VectorsClient() {
- S3VectorsClient client = null;
- S3VectorsClientBuilder clientBuilder = S3VectorsClient.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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-step-functions/pom.xml b/components/camel-aws/camel-aws2-step-functions/pom.xml
index e57ec42a7c14..68472e20a6c2 100644
--- a/components/camel-aws/camel-aws2-step-functions/pom.xml
+++ b/components/camel-aws/camel-aws2-step-functions/pom.xml
@@ -41,6 +41,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-aws-common</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-health</artifactId>
diff --git a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Configuration.java b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Configuration.java
index 6e3a22b911aa..2be7205444de 100644
--- a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Configuration.java
+++ b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Configuration.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.aws2.stepfunctions;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -25,7 +26,7 @@ import software.amazon.awssdk.core.Protocol;
import software.amazon.awssdk.services.sfn.SfnClient;
@UriParams
-public class StepFunctions2Configuration implements Cloneable {
+public class StepFunctions2Configuration implements Cloneable, AwsCommonConfiguration {
@UriPath(description = "Logical name")
@Metadata(required = true)
@@ -221,7 +222,7 @@ public class StepFunctions2Configuration implements Cloneable {
this.useDefaultCredentialsProvider = useDefaultCredentialsProvider;
}
- public Boolean isUseDefaultCredentialsProvider() {
+ public boolean isUseDefaultCredentialsProvider() {
return useDefaultCredentialsProvider;
}
diff --git a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Endpoint.java b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Endpoint.java
index 02fdfc0b564d..ad39d0374caa 100644
--- a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Endpoint.java
+++ b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Endpoint.java
@@ -64,7 +64,7 @@ public class StepFunctions2Endpoint extends DefaultEndpoint implements EndpointS
super.doStart();
awsSfnClient = configuration.getAwsSfnClient() != null
? configuration.getAwsSfnClient()
- : StepFunctions2ClientFactory.getSfnClient(configuration).getSfnClient();
+ : StepFunctions2ClientFactory.getSfnClient(configuration);
}
@Override
diff --git a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/StepFunctions2ClientFactory.java b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/StepFunctions2ClientFactory.java
index 75614dbcf980..90aec221d5ed 100644
--- a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/StepFunctions2ClientFactory.java
+++ b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/StepFunctions2ClientFactory.java
@@ -16,14 +16,12 @@
*/
package org.apache.camel.component.aws2.stepfunctions.client;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
import org.apache.camel.component.aws2.stepfunctions.StepFunctions2Configuration;
-import org.apache.camel.component.aws2.stepfunctions.client.impl.StepFunctions2ClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.stepfunctions.client.impl.StepFunctions2ClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws2.stepfunctions.client.impl.StepFunctions2ClientSessionTokenImpl;
-import org.apache.camel.component.aws2.stepfunctions.client.impl.StepFunctions2ClientStandardImpl;
+import software.amazon.awssdk.services.sfn.SfnClient;
/**
- * Factory class to return the correct type of AWS StepFunctions client.
+ * Factory class to create AWS StepFunctions clients using common configuration.
*/
public final class StepFunctions2ClientFactory {
@@ -31,20 +29,14 @@ public final class StepFunctions2ClientFactory {
}
/**
- * Return the correct AWS StepFunctions client (based on remote vs local).
+ * Create a SfnClient based on configuration.
*
- * @param configuration configuration
- * @return StepFunctionsClient
+ * @param configuration The StepFunctions configuration
+ * @return Configured SfnClient
*/
- public static StepFunctions2InternalClient getSfnClient(StepFunctions2Configuration configuration) {
- if (Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())) {
- return new StepFunctions2ClientIAMOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseProfileCredentialsProvider())) {
- return new StepFunctions2ClientIAMProfileOptimizedImpl(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseSessionCredentials())) {
- return new StepFunctions2ClientSessionTokenImpl(configuration);
- } else {
- return new StepFunctions2ClientStandardImpl(configuration);
- }
+ public static SfnClient getSfnClient(StepFunctions2Configuration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ SfnClient::builder);
}
}
diff --git a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/StepFunctions2InternalClient.java b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/StepFunctions2InternalClient.java
deleted file mode 100644
index d582115e6d0e..000000000000
--- a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/StepFunctions2InternalClient.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.stepfunctions.client;
-
-import software.amazon.awssdk.services.sfn.SfnClient;
-
-/**
- * Manage the required actions of an StepFunctions client for either local or remote.
- */
-public interface StepFunctions2InternalClient {
-
- /**
- * Returns an StepFunctions client after a factory method determines which one to return.
- *
- * @return SfnClient SfnClient
- */
- SfnClient getSfnClient();
-}
diff --git a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/impl/StepFunctions2ClientIAMOptimizedImpl.java b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/impl/StepFunctions2ClientIAMOptimizedImpl.java
deleted file mode 100644
index a34c228fe6fb..000000000000
--- a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/impl/StepFunctions2ClientIAMOptimizedImpl.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * 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.stepfunctions.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.stepfunctions.StepFunctions2Configuration;
-import org.apache.camel.component.aws2.stepfunctions.client.StepFunctions2InternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
-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.sfn.SfnClient;
-import software.amazon.awssdk.services.sfn.SfnClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS StepFunctions client for all users to use (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class StepFunctions2ClientIAMOptimizedImpl implements StepFunctions2InternalClient {
-
- private static final Logger LOG = LoggerFactory.getLogger(StepFunctions2ClientIAMOptimizedImpl.class);
- private StepFunctions2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public StepFunctions2ClientIAMOptimizedImpl(StepFunctions2Configuration configuration) {
- LOG.trace("Creating an AWS StepFunctions client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the StepFunctions aws client that is used.
- *
- * @return StepFunctions Client.
- */
- @Override
- public SfnClient getSfnClient() {
- SfnClient client = null;
- SfnClientBuilder clientBuilder = SfnClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.getProfileCredentialsName() != null) {
- clientBuilder = clientBuilder
- .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
- }
- 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-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/impl/StepFunctions2ClientIAMProfileOptimizedImpl.java b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/impl/StepFunctions2ClientIAMProfileOptimizedImpl.java
deleted file mode 100644
index f767871570bf..000000000000
--- a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/impl/StepFunctions2ClientIAMProfileOptimizedImpl.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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.stepfunctions.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.stepfunctions.StepFunctions2Configuration;
-import org.apache.camel.component.aws2.stepfunctions.client.StepFunctions2InternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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.sfn.SfnClient;
-import software.amazon.awssdk.services.sfn.SfnClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS StepFunctions client for all users to use (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class StepFunctions2ClientIAMProfileOptimizedImpl implements StepFunctions2InternalClient {
-
- private static final Logger LOG = LoggerFactory.getLogger(StepFunctions2ClientIAMProfileOptimizedImpl.class);
- private StepFunctions2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public StepFunctions2ClientIAMProfileOptimizedImpl(StepFunctions2Configuration configuration) {
- LOG.trace("Creating an AWS StepFunctions client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the StepFunctions aws client that is used.
- *
- * @return StepFunctions Client.
- */
- @Override
- public SfnClient getSfnClient() {
- SfnClient client = null;
- SfnClientBuilder clientBuilder = SfnClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- 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-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/impl/StepFunctions2ClientSessionTokenImpl.java b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/impl/StepFunctions2ClientSessionTokenImpl.java
deleted file mode 100644
index 6dc44adda805..000000000000
--- a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/impl/StepFunctions2ClientSessionTokenImpl.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * 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.stepfunctions.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.stepfunctions.StepFunctions2Configuration;
-import org.apache.camel.component.aws2.stepfunctions.client.StepFunctions2InternalClient;
-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.sfn.SfnClient;
-import software.amazon.awssdk.services.sfn.SfnClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS StepFunctions client for all users to use. This implementation is for local instances to use a static
- * and solid credential set.
- */
-public class StepFunctions2ClientSessionTokenImpl implements StepFunctions2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(StepFunctions2ClientSessionTokenImpl.class);
- private StepFunctions2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public StepFunctions2ClientSessionTokenImpl(StepFunctions2Configuration configuration) {
- LOG.trace("Creating an AWS StepFunctions manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the StepFunctions AWS client that is used.
- *
- * @return Amazon StepFunctions Client.
- */
- @Override
- public SfnClient getSfnClient() {
- SfnClient client = null;
- SfnClientBuilder clientBuilder = SfnClient.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-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/impl/StepFunctions2ClientStandardImpl.java b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/impl/StepFunctions2ClientStandardImpl.java
deleted file mode 100644
index cac8c713444c..000000000000
--- a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/client/impl/StepFunctions2ClientStandardImpl.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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.stepfunctions.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.stepfunctions.StepFunctions2Configuration;
-import org.apache.camel.component.aws2.stepfunctions.client.StepFunctions2InternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-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.sfn.SfnClient;
-import software.amazon.awssdk.services.sfn.SfnClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS StepFunctions client for all users to use. This implementation is for local instances to use a static
- * and solid credential set.
- */
-public class StepFunctions2ClientStandardImpl implements StepFunctions2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(StepFunctions2ClientStandardImpl.class);
- private StepFunctions2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public StepFunctions2ClientStandardImpl(StepFunctions2Configuration configuration) {
- LOG.trace("Creating an AWS StepFunctions manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the StepFunctions AWS client that is used.
- *
- * @return Amazon StepFunctions Client.
- */
- @Override
- public SfnClient getSfnClient() {
- SfnClient client = null;
- SfnClientBuilder clientBuilder = SfnClient.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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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-step-functions/src/test/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2ClientFactoryTest.java b/components/camel-aws/camel-aws2-step-functions/src/test/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2ClientFactoryTest.java
deleted file mode 100644
index d409cc746748..000000000000
--- a/components/camel-aws/camel-aws2-step-functions/src/test/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2ClientFactoryTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.stepfunctions;
-
-import org.apache.camel.component.aws2.stepfunctions.client.StepFunctions2ClientFactory;
-import org.apache.camel.component.aws2.stepfunctions.client.StepFunctions2InternalClient;
-import org.apache.camel.component.aws2.stepfunctions.client.impl.StepFunctions2ClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.stepfunctions.client.impl.StepFunctions2ClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws2.stepfunctions.client.impl.StepFunctions2ClientSessionTokenImpl;
-import org.apache.camel.component.aws2.stepfunctions.client.impl.StepFunctions2ClientStandardImpl;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class StepFunctions2ClientFactoryTest {
-
- @Test
- public void getStandardSfnClientDefault() {
- StepFunctions2Configuration sfn2Configuration = new StepFunctions2Configuration();
- StepFunctions2InternalClient sfnClient = StepFunctions2ClientFactory.getSfnClient(sfn2Configuration);
- assertTrue(sfnClient instanceof StepFunctions2ClientStandardImpl);
- }
-
- @Test
- public void getStandardSfnClient() {
- StepFunctions2Configuration sfn2Configuration = new StepFunctions2Configuration();
- sfn2Configuration.setUseDefaultCredentialsProvider(false);
- StepFunctions2InternalClient sfnClient = StepFunctions2ClientFactory.getSfnClient(sfn2Configuration);
- assertTrue(sfnClient instanceof StepFunctions2ClientStandardImpl);
- }
-
- @Test
- public void getIAMOptimizedSfnClient() {
- StepFunctions2Configuration sfn2Configuration = new StepFunctions2Configuration();
- sfn2Configuration.setUseDefaultCredentialsProvider(true);
- StepFunctions2InternalClient sfnClient = StepFunctions2ClientFactory.getSfnClient(sfn2Configuration);
- assertTrue(sfnClient instanceof StepFunctions2ClientIAMOptimizedImpl);
- }
-
- @Test
- public void getIAMProfileOptimizedSfnClient() {
- StepFunctions2Configuration sfn2Configuration = new StepFunctions2Configuration();
- sfn2Configuration.setUseProfileCredentialsProvider(true);
- StepFunctions2InternalClient sfnClient = StepFunctions2ClientFactory.getSfnClient(sfn2Configuration);
- assertTrue(sfnClient instanceof StepFunctions2ClientIAMProfileOptimizedImpl);
- }
-
- @Test
- public void getSessionTokenSfnClient() {
- StepFunctions2Configuration sfn2Configuration = new StepFunctions2Configuration();
- sfn2Configuration.setUseSessionCredentials(true);
- StepFunctions2InternalClient sfnClient = StepFunctions2ClientFactory.getSfnClient(sfn2Configuration);
- assertTrue(sfnClient instanceof StepFunctions2ClientSessionTokenImpl);
- }
-}
diff --git a/components/camel-aws/camel-aws2-textract/pom.xml b/components/camel-aws/camel-aws2-textract/pom.xml
index 4eb6268622f1..09125bc1aa37 100644
--- a/components/camel-aws/camel-aws2-textract/pom.xml
+++ b/components/camel-aws/camel-aws2-textract/pom.xml
@@ -40,6 +40,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-aws-common</artifactId>
+ </dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>textract</artifactId>
diff --git a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/Textract2Configuration.java b/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/Textract2Configuration.java
index f6ccb29221d4..8abc6e3d7c21 100644
--- a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/Textract2Configuration.java
+++ b/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/Textract2Configuration.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.aws2.textract;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -25,7 +26,7 @@ import software.amazon.awssdk.core.Protocol;
import software.amazon.awssdk.services.textract.TextractClient;
@UriParams
-public class Textract2Configuration implements Cloneable {
+public class Textract2Configuration implements Cloneable, AwsCommonConfiguration {
@UriPath(description = "Logical name")
@Metadata(required = true)
diff --git a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/Textract2Endpoint.java b/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/Textract2Endpoint.java
index 1c3bab7ab0f8..3ffb0e8b0759 100644
--- a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/Textract2Endpoint.java
+++ b/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/Textract2Endpoint.java
@@ -68,7 +68,7 @@ public class Textract2Endpoint extends ScheduledPollEndpoint implements Endpoint
textractClient
= configuration.getTextractClient() != null
? configuration.getTextractClient()
- : Textract2ClientFactory.getTextractClient(configuration).getTextractClient();
+ : Textract2ClientFactory.getTextractClient(configuration);
}
@Override
diff --git a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/Textract2ClientFactory.java b/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/Textract2ClientFactory.java
index 802c9a1930af..bbab4275fc16 100644
--- a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/Textract2ClientFactory.java
+++ b/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/Textract2ClientFactory.java
@@ -16,14 +16,12 @@
*/
package org.apache.camel.component.aws2.textract.client;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
import org.apache.camel.component.aws2.textract.Textract2Configuration;
-import org.apache.camel.component.aws2.textract.client.impl.Textract2ClientIAMOptimized;
-import org.apache.camel.component.aws2.textract.client.impl.Textract2ClientIAMProfileOptimized;
-import org.apache.camel.component.aws2.textract.client.impl.Textract2ClientSessionTokenImpl;
-import org.apache.camel.component.aws2.textract.client.impl.Textract2ClientStandardImpl;
+import software.amazon.awssdk.services.textract.TextractClient;
/**
- * Factory class to return the correct type of AWS Textract client.
+ * Factory class to create AWS Textract clients using common configuration.
*/
public final class Textract2ClientFactory {
@@ -31,20 +29,14 @@ public final class Textract2ClientFactory {
}
/**
- * Return the correct aws Textract client (based on remote vs local).
+ * Create a TextractClient based on configuration.
*
- * @param configuration configuration
- * @return TextractClient
+ * @param configuration The Textract configuration
+ * @return Configured TextractClient
*/
- public static Textract2InternalClient getTextractClient(Textract2Configuration configuration) {
- if (Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())) {
- return new Textract2ClientIAMOptimized(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseProfileCredentialsProvider())) {
- return new Textract2ClientIAMProfileOptimized(configuration);
- } else if (Boolean.TRUE.equals(configuration.isUseSessionCredentials())) {
- return new Textract2ClientSessionTokenImpl(configuration);
- } else {
- return new Textract2ClientStandardImpl(configuration);
- }
+ public static TextractClient getTextractClient(Textract2Configuration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ TextractClient::builder);
}
}
diff --git a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/Textract2InternalClient.java b/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/Textract2InternalClient.java
deleted file mode 100644
index 542334e5a967..000000000000
--- a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/Textract2InternalClient.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.textract.client;
-
-import software.amazon.awssdk.services.textract.TextractClient;
-
-public interface Textract2InternalClient {
-
- /**
- * Returns a Textract client after a factory method determines which one to return.
- *
- * @return TextractClient textractClient
- */
- TextractClient getTextractClient();
-
-}
diff --git a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/impl/Textract2ClientIAMOptimized.java b/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/impl/Textract2ClientIAMOptimized.java
deleted file mode 100644
index 993a9c4e3c3f..000000000000
--- a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/impl/Textract2ClientIAMOptimized.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * 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.textract.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.textract.Textract2Configuration;
-import org.apache.camel.component.aws2.textract.client.Textract2InternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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.textract.TextractClient;
-import software.amazon.awssdk.services.textract.TextractClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Textract client for all users to use. This implementation is for remote instances to manage the
- * credentials on their own (eliminating credential rotations)
- */
-public class Textract2ClientIAMOptimized implements Textract2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(Textract2ClientIAMOptimized.class);
- private Textract2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public Textract2ClientIAMOptimized(Textract2Configuration configuration) {
- LOG.trace("Creating an AWS Textract client for working on AWS Services");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Textract aws client that is used.
- *
- * @return Amazon Textract Client.
- */
- @Override
- public TextractClient getTextractClient() {
- TextractClient client = null;
- TextractClientBuilder clientBuilder = TextractClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
-
- 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());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/impl/Textract2ClientIAMProfileOptimized.java b/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/impl/Textract2ClientIAMProfileOptimized.java
deleted file mode 100644
index 2fda5e334fec..000000000000
--- a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/impl/Textract2ClientIAMProfileOptimized.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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.textract.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.textract.Textract2Configuration;
-import org.apache.camel.component.aws2.textract.client.Textract2InternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
-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.textract.TextractClient;
-import software.amazon.awssdk.services.textract.TextractClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Textract client for all users to use. This implementation is for remote instances to manage the
- * credentials on their own (eliminating credential rotations)
- */
-public class Textract2ClientIAMProfileOptimized implements Textract2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(Textract2ClientIAMProfileOptimized.class);
- private Textract2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public Textract2ClientIAMProfileOptimized(Textract2Configuration configuration) {
- LOG.trace("Creating an AWS Textract client for working on AWS Services");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Textract aws client that is used.
- *
- * @return Amazon Textract Client.
- */
- @Override
- public TextractClient getTextractClient() {
- TextractClient client = null;
- TextractClientBuilder clientBuilder = TextractClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
-
- 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());
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
- }
- if (configuration.getProfileCredentialsName() != null) {
- clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder)
- .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
- }
- if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
- clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
- }
- if (configuration.isOverrideEndpoint()) {
- clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
- }
- if (configuration.isTrustAllCertificates()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/impl/Textract2ClientSessionTokenImpl.java b/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/impl/Textract2ClientSessionTokenImpl.java
deleted file mode 100644
index 40f49927cc0d..000000000000
--- a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/impl/Textract2ClientSessionTokenImpl.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * 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.textract.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.textract.Textract2Configuration;
-import org.apache.camel.component.aws2.textract.client.Textract2InternalClient;
-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.textract.TextractClient;
-import software.amazon.awssdk.services.textract.TextractClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Textract client for all users to use. This implementation is for local instances to use a static and
- * solid credential set.
- */
-public class Textract2ClientSessionTokenImpl implements Textract2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(Textract2ClientSessionTokenImpl.class);
- private Textract2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public Textract2ClientSessionTokenImpl(Textract2Configuration configuration) {
- LOG.trace("Creating an AWS Textract manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Textract aws client that is used.
- *
- * @return Amazon Textract Client.
- */
- @Override
- public TextractClient getTextractClient() {
- TextractClient client = null;
- TextractClientBuilder clientBuilder = TextractClient.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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/impl/Textract2ClientStandardImpl.java b/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/impl/Textract2ClientStandardImpl.java
deleted file mode 100644
index 3cac3b0116c3..000000000000
--- a/components/camel-aws/camel-aws2-textract/src/main/java/org/apache/camel/component/aws2/textract/client/impl/Textract2ClientStandardImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.textract.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.textract.Textract2Configuration;
-import org.apache.camel.component.aws2.textract.client.Textract2InternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-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.textract.TextractClient;
-import software.amazon.awssdk.services.textract.TextractClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Textract client for all users to use. This implementation is for local instances to use a static and
- * solid credential set.
- */
-public class Textract2ClientStandardImpl implements Textract2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(Textract2ClientStandardImpl.class);
- private Textract2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public Textract2ClientStandardImpl(Textract2Configuration configuration) {
- LOG.trace("Creating an AWS Textract manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the Textract aws client that is used.
- *
- * @return Amazon Textract Client.
- */
- @Override
- public TextractClient getTextractClient() {
- TextractClient client = null;
- TextractClientBuilder clientBuilder = TextractClient.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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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()) {
- if (httpClientBuilder == null) {
- httpClientBuilder = ApacheHttpClient.builder();
- }
- SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
- .builder()
- .put(
- SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
- Boolean.TRUE)
- .build());
- // set created http client to use instead of builder
- clientBuilder.httpClient(ahc);
- clientBuilder.httpClientBuilder(null);
- }
- client = clientBuilder.build();
- return client;
- }
-}
diff --git a/components/camel-aws/camel-aws2-textract/src/test/java/org/apache/camel/component/aws2/textract/Textract2ClientFactoryTest.java b/components/camel-aws/camel-aws2-textract/src/test/java/org/apache/camel/component/aws2/textract/Textract2ClientFactoryTest.java
deleted file mode 100644
index 29e9314c6ab4..000000000000
--- a/components/camel-aws/camel-aws2-textract/src/test/java/org/apache/camel/component/aws2/textract/Textract2ClientFactoryTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.textract;
-
-import org.apache.camel.component.aws2.textract.client.Textract2ClientFactory;
-import org.apache.camel.component.aws2.textract.client.Textract2InternalClient;
-import org.apache.camel.component.aws2.textract.client.impl.Textract2ClientIAMOptimized;
-import org.apache.camel.component.aws2.textract.client.impl.Textract2ClientSessionTokenImpl;
-import org.apache.camel.component.aws2.textract.client.impl.Textract2ClientStandardImpl;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class Textract2ClientFactoryTest {
-
- @Test
- public void getStandardTextractClientDefault() {
- Textract2Configuration textract2Configuration = new Textract2Configuration();
- Textract2InternalClient textractClient = Textract2ClientFactory.getTextractClient(textract2Configuration);
- assertTrue(textractClient instanceof Textract2ClientStandardImpl);
- }
-
- @Test
- public void getStandardTextractClient() {
- Textract2Configuration textract2Configuration = new Textract2Configuration();
- textract2Configuration.setUseDefaultCredentialsProvider(false);
- Textract2InternalClient textractClient = Textract2ClientFactory.getTextractClient(textract2Configuration);
- assertTrue(textractClient instanceof Textract2ClientStandardImpl);
- }
-
- @Test
- public void getTextractOptimizedIAMClient() {
- Textract2Configuration textract2Configuration = new Textract2Configuration();
- textract2Configuration.setUseDefaultCredentialsProvider(true);
- Textract2InternalClient textractClient = Textract2ClientFactory.getTextractClient(textract2Configuration);
- assertTrue(textractClient instanceof Textract2ClientIAMOptimized);
- }
-
- @Test
- public void getTextractSessionTokenClient() {
- Textract2Configuration textract2Configuration = new Textract2Configuration();
- textract2Configuration.setUseSessionCredentials(true);
- Textract2InternalClient textractClient = Textract2ClientFactory.getTextractClient(textract2Configuration);
- assertTrue(textractClient instanceof Textract2ClientSessionTokenImpl);
- }
-}
diff --git a/components/camel-aws/camel-aws2-timestream/pom.xml b/components/camel-aws/camel-aws2-timestream/pom.xml
index e2d7dd9ff26d..6ac4e5aa6f7a 100644
--- a/components/camel-aws/camel-aws2-timestream/pom.xml
+++ b/components/camel-aws/camel-aws2-timestream/pom.xml
@@ -41,6 +41,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-aws-common</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-health</artifactId>
diff --git a/components/camel-aws/camel-aws2-timestream/src/generated/java/org/apache/camel/component/aws2/timestream/Timestream2AbstractEndpointConfigurer.java b/components/camel-aws/camel-aws2-timestream/src/generated/java/org/apache/camel/component/aws2/timestream/Timestream2AbstractEndpointConfigurer.java
index 93c1ff4462be..874029d61567 100644
--- a/components/camel-aws/camel-aws2-timestream/src/generated/java/org/apache/camel/component/aws2/timestream/Timestream2AbstractEndpointConfigurer.java
+++ b/components/camel-aws/camel-aws2-timestream/src/generated/java/org/apache/camel/component/aws2/timestream/Timestream2AbstractEndpointConfigurer.java
@@ -47,6 +47,8 @@ public class Timestream2AbstractEndpointConfigurer extends PropertyConfigurerSup
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":
@@ -55,6 +57,8 @@ public class Timestream2AbstractEndpointConfigurer extends PropertyConfigurerSup
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;
}
}
@@ -91,6 +95,8 @@ public class Timestream2AbstractEndpointConfigurer extends PropertyConfigurerSup
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":
@@ -99,6 +105,8 @@ public class Timestream2AbstractEndpointConfigurer extends PropertyConfigurerSup
case "useDefaultCredentialsProvider": return boolean.class;
case "useprofilecredentialsprovider":
case "useProfileCredentialsProvider": return boolean.class;
+ case "usesessioncredentials":
+ case "useSessionCredentials": return boolean.class;
default: return null;
}
}
@@ -131,6 +139,8 @@ public class Timestream2AbstractEndpointConfigurer extends PropertyConfigurerSup
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":
@@ -139,6 +149,8 @@ public class Timestream2AbstractEndpointConfigurer extends PropertyConfigurerSup
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-timestream/src/generated/java/org/apache/camel/component/aws2/timestream/Timestream2ComponentConfigurer.java b/components/camel-aws/camel-aws2-timestream/src/generated/java/org/apache/camel/component/aws2/timestream/Timestream2ComponentConfigurer.java
index 0a5031776603..7551e6055cef 100644
--- a/components/camel-aws/camel-aws2-timestream/src/generated/java/org/apache/camel/component/aws2/timestream/Timestream2ComponentConfigurer.java
+++ b/components/camel-aws/camel-aws2-timestream/src/generated/java/org/apache/camel/component/aws2/timestream/Timestream2ComponentConfigurer.java
@@ -61,6 +61,8 @@ public class Timestream2ComponentConfigurer extends PropertyConfigurerSupport im
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":
@@ -69,6 +71,8 @@ public class Timestream2ComponentConfigurer extends PropertyConfigurerSupport im
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;
}
}
@@ -112,6 +116,8 @@ public class Timestream2ComponentConfigurer extends PropertyConfigurerSupport im
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":
@@ -120,6 +126,8 @@ public class Timestream2ComponentConfigurer extends PropertyConfigurerSupport im
case "useDefaultCredentialsProvider": return boolean.class;
case "useprofilecredentialsprovider":
case "useProfileCredentialsProvider": return boolean.class;
+ case "usesessioncredentials":
+ case "useSessionCredentials": return boolean.class;
default: return null;
}
}
@@ -159,6 +167,8 @@ public class Timestream2ComponentConfigurer extends PropertyConfigurerSupport im
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":
@@ -167,6 +177,8 @@ public class Timestream2ComponentConfigurer extends PropertyConfigurerSupport im
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-timestream/src/generated/java/org/apache/camel/component/aws2/timestream/Timestream2EndpointUriFactory.java b/components/camel-aws/camel-aws2-timestream/src/generated/java/org/apache/camel/component/aws2/timestream/Timestream2EndpointUriFactory.java
index 80e8a5f0dd51..697cb0379830 100644
--- a/components/camel-aws/camel-aws2-timestream/src/generated/java/org/apache/camel/component/aws2/timestream/Timestream2EndpointUriFactory.java
+++ b/components/camel-aws/camel-aws2-timestream/src/generated/java/org/apache/camel/component/aws2/timestream/Timestream2EndpointUriFactory.java
@@ -23,7 +23,7 @@ public class Timestream2EndpointUriFactory extends org.apache.camel.support.comp
private static final Set<String> SECRET_PROPERTY_NAMES;
private static final Map<String, String> MULTI_VALUE_PREFIXES;
static {
- Set<String> props = new HashSet<>(19);
+ Set<String> props = new HashSet<>(21);
props.add("accessKey");
props.add("awsTimestreamQueryClient");
props.add("awsTimestreamWriteClient");
@@ -39,14 +39,17 @@ public class Timestream2EndpointUriFactory extends org.apache.camel.support.comp
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.emptyMap();
}
diff --git a/components/camel-aws/camel-aws2-timestream/src/generated/resources/META-INF/org/apache/camel/component/aws2/timestream/aws2-timestream.json b/components/camel-aws/camel-aws2-timestream/src/generated/resources/META-INF/org/apache/camel/component/aws2/timestream/aws2-timestream.json
index f723b0f3097a..cc9f02cf6500 100644
--- a/components/camel-aws/camel-aws2-timestream/src/generated/resources/META-INF/org/apache/camel/component/aws2/timestream/aws2-timestream.json
+++ b/components/camel-aws/camel-aws2-timestream/src/generated/resources/META-INF/org/apache/camel/component/aws2/timestream/aws2-timestream.json
@@ -44,7 +44,9 @@
"proxyPort": { "index": 17, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Timestream client" },
"proxyProtocol": { "index": 18, "kind": "property", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "To define a proxy pr [...]
"accessKey": { "index": 19, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
- "secretKey": { "index": 20, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" }
+ "secretKey": { "index": 20, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
+ "sessionToken": { "index": 21, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
+ "useSessionCredentials": { "index": 22, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Set whether the Timestream client should expect to use [...]
},
"headers": {
"CamelAwsTimestreamOperation": { "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.timestream.Timestream2Constants#OPERATION" },
@@ -105,6 +107,8 @@
"proxyPort": { "index": 15, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Timestream client" },
"proxyProtocol": { "index": 16, "kind": "parameter", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "To define a proxy p [...]
"accessKey": { "index": 17, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
- "secretKey": { "index": 18, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" }
+ "secretKey": { "index": 18, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
+ "sessionToken": { "index": 19, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
+ "useSessionCredentials": { "index": 20, "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.timestream.Timestream2Configuration", "configurationField": "configuration", "description": "Set whether the Timestream client should expect to us [...]
}
}
diff --git a/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/Timestream2Configuration.java b/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/Timestream2Configuration.java
index 04497a2409dd..91b3da29be79 100644
--- a/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/Timestream2Configuration.java
+++ b/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/Timestream2Configuration.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.aws2.timestream;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -26,7 +27,7 @@ import software.amazon.awssdk.services.timestreamquery.TimestreamQueryClient;
import software.amazon.awssdk.services.timestreamwrite.TimestreamWriteClient;
@UriParams
-public class Timestream2Configuration implements Cloneable {
+public class Timestream2Configuration implements Cloneable, AwsCommonConfiguration {
@UriPath(description = "Type of client - write/query")
@Metadata(required = true)
@@ -41,6 +42,10 @@ public class Timestream2Configuration implements Cloneable {
private String accessKey;
@UriParam(label = "security", secret = true)
private String secretKey;
+ @UriParam(label = "security", secret = true)
+ private String sessionToken;
+ @UriParam(label = "security")
+ private boolean useSessionCredentials;
@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,eu-isoe-west-1,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,ca-west-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 [...]
private String region;
@UriParam(label = "proxy", enums = "HTTP,HTTPS", defaultValue = "HTTPS")
@@ -118,6 +123,29 @@ public class Timestream2Configuration implements Cloneable {
this.secretKey = secretKey;
}
+ public String getSessionToken() {
+ return sessionToken;
+ }
+
+ /**
+ * Amazon AWS Session Token used when the user needs to assume an IAM role
+ */
+ public void setSessionToken(String sessionToken) {
+ this.sessionToken = sessionToken;
+ }
+
+ public boolean isUseSessionCredentials() {
+ return useSessionCredentials;
+ }
+
+ /**
+ * Set whether the Timestream client should expect to use Session Credentials. This is useful in a situation in
+ * which the user needs to assume an IAM role for doing operations in Timestream.
+ */
+ public void setUseSessionCredentials(boolean useSessionCredentials) {
+ this.useSessionCredentials = useSessionCredentials;
+ }
+
public String getRegion() {
return region;
}
@@ -231,7 +259,7 @@ public class Timestream2Configuration implements Cloneable {
this.useDefaultCredentialsProvider = useDefaultCredentialsProvider;
}
- public Boolean isUseDefaultCredentialsProvider() {
+ public boolean isUseDefaultCredentialsProvider() {
return useDefaultCredentialsProvider;
}
diff --git a/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/client/Timestream2ClientFactory.java b/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/client/Timestream2ClientFactory.java
index a62fccd976ac..0400cd0790fa 100644
--- a/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/client/Timestream2ClientFactory.java
+++ b/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/client/Timestream2ClientFactory.java
@@ -16,12 +16,13 @@
*/
package org.apache.camel.component.aws2.timestream.client;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
import org.apache.camel.component.aws2.timestream.Timestream2Configuration;
-import org.apache.camel.component.aws2.timestream.client.impl.Timestream2ClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.timestream.client.impl.Timestream2ClientStandardImpl;
+import software.amazon.awssdk.services.timestreamquery.TimestreamQueryClient;
+import software.amazon.awssdk.services.timestreamwrite.TimestreamWriteClient;
/**
- * Factory class to return the correct type of AWS Timestream client.
+ * Factory class to create AWS Timestream clients using common configuration.
*/
public final class Timestream2ClientFactory {
@@ -29,14 +30,26 @@ public final class Timestream2ClientFactory {
}
/**
- * Return the correct AWS Timestream client (based on remote vs local).
+ * Create a TimestreamWriteClient based on configuration.
*
- * @param configuration configuration
- * @return Timestream
+ * @param configuration The Timestream configuration
+ * @return Configured TimestreamWriteClient
*/
- public static Timestream2InternalClient getTimestreamClient(Timestream2Configuration configuration) {
- return Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())
- ? new Timestream2ClientIAMOptimizedImpl(configuration) : new Timestream2ClientStandardImpl(configuration);
+ public static TimestreamWriteClient getTimestreamWriteClient(Timestream2Configuration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ TimestreamWriteClient::builder);
}
+ /**
+ * Create a TimestreamQueryClient based on configuration.
+ *
+ * @param configuration The Timestream configuration
+ * @return Configured TimestreamQueryClient
+ */
+ public static TimestreamQueryClient getTimestreamQueryClient(Timestream2Configuration configuration) {
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ TimestreamQueryClient::builder);
+ }
}
diff --git a/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/client/Timestream2InternalClient.java b/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/client/Timestream2InternalClient.java
deleted file mode 100644
index 6eeceb0df7bc..000000000000
--- a/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/client/Timestream2InternalClient.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.timestream.client;
-
-import software.amazon.awssdk.services.timestreamquery.TimestreamQueryClient;
-import software.amazon.awssdk.services.timestreamwrite.TimestreamWriteClient;
-
-/**
- * Manage the required actions of an Timestream client for either local or remote.
- */
-public interface Timestream2InternalClient {
-
- /**
- * Returns an TimestreamWrite client after a factory method determines which one to return.
- *
- * @return TimestreamWriteClient TimestreamWriteClient
- */
- TimestreamWriteClient getTimestreamWriteClient();
-
- /**
- * Returns an TimestreamQuery client after a factory method determines which one to return.
- *
- * @return TimestreamQueryClient TimestreamQueryClient
- */
- TimestreamQueryClient getTimestreamQueryClient();
-
-}
diff --git a/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/client/impl/Timestream2ClientIAMOptimizedImpl.java b/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/client/impl/Timestream2ClientIAMOptimizedImpl.java
deleted file mode 100644
index 39f9789f09dd..000000000000
--- a/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/client/impl/Timestream2ClientIAMOptimizedImpl.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * 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.timestream.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.timestream.Timestream2Configuration;
-import org.apache.camel.component.aws2.timestream.client.Timestream2InternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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.timestreamquery.TimestreamQueryClient;
-import software.amazon.awssdk.services.timestreamquery.TimestreamQueryClientBuilder;
-import software.amazon.awssdk.services.timestreamwrite.TimestreamWriteClient;
-import software.amazon.awssdk.services.timestreamwrite.TimestreamWriteClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Timestream client for all users to use (enabling temporary creds). This implementation is for remote
- * instances to manage the credentials on their own (eliminating credential rotations)
- */
-public class Timestream2ClientIAMOptimizedImpl implements Timestream2InternalClient {
-
- private static final Logger LOG = LoggerFactory.getLogger(Timestream2ClientIAMOptimizedImpl.class);
- private Timestream2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public Timestream2ClientIAMOptimizedImpl(Timestream2Configuration configuration) {
- LOG.trace("Creating an AWS Timestream client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
- this.configuration = configuration;
- }
-
- /**
- * Getting the TimestreamWrite aws client that is used.
- *
- * @return TimestreamWriteClient.
- */
- @Override
- public TimestreamWriteClient getTimestreamWriteClient() {
- TimestreamWriteClient client = null;
- TimestreamWriteClientBuilder clientBuilder = TimestreamWriteClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- 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;
- }
-
- /**
- * Getting the TimestreamQuery aws client that is used.
- *
- * @return TimestreamQueryClient.
- */
- @Override
- public TimestreamQueryClient getTimestreamQueryClient() {
- TimestreamQueryClient client = null;
- TimestreamQueryClientBuilder clientBuilder = TimestreamQueryClient.builder();
- ProxyConfiguration.Builder proxyConfig = null;
- ApacheHttpClient.Builder httpClientBuilder = null;
- 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());
- 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-timestream/src/main/java/org/apache/camel/component/aws2/timestream/client/impl/Timestream2ClientStandardImpl.java b/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/client/impl/Timestream2ClientStandardImpl.java
deleted file mode 100644
index 8318a1917e72..000000000000
--- a/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/client/impl/Timestream2ClientStandardImpl.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * 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.timestream.client.impl;
-
-import java.net.URI;
-
-import org.apache.camel.component.aws2.timestream.Timestream2Configuration;
-import org.apache.camel.component.aws2.timestream.client.Timestream2InternalClient;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-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.timestreamquery.TimestreamQueryClient;
-import software.amazon.awssdk.services.timestreamquery.TimestreamQueryClientBuilder;
-import software.amazon.awssdk.services.timestreamwrite.TimestreamWriteClient;
-import software.amazon.awssdk.services.timestreamwrite.TimestreamWriteClientBuilder;
-import software.amazon.awssdk.utils.AttributeMap;
-
-/**
- * Manage an AWS Timestream client for all users to use. This implementation is for local instances to use a static and
- * solid credential set.
- */
-public class Timestream2ClientStandardImpl implements Timestream2InternalClient {
- private static final Logger LOG = LoggerFactory.getLogger(Timestream2ClientStandardImpl.class);
- private Timestream2Configuration configuration;
-
- /**
- * Constructor that uses the config file.
- */
- public Timestream2ClientStandardImpl(Timestream2Configuration configuration) {
- LOG.trace("Creating an AWS Timestream manager using static credentials.");
- this.configuration = configuration;
- }
-
- /**
- * Getting the TimestreamWrite AWS client that is used.
- *
- * @return Amazon TimestreamWrite Client.
- */
- @Override
- public TimestreamWriteClient getTimestreamWriteClient() {
- TimestreamWriteClient client = null;
- TimestreamWriteClientBuilder clientBuilder = TimestreamWriteClient.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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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;
- }
-
- /**
- * Getting the TimestreamQuery AWS client that is used.
- *
- * @return Amazon TimestreamQuery Client.
- */
- @Override
- public TimestreamQueryClient getTimestreamQueryClient() {
- TimestreamQueryClient client = null;
- TimestreamQueryClientBuilder clientBuilder = TimestreamQueryClient.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) {
- AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
- 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-timestream/src/main/java/org/apache/camel/component/aws2/timestream/query/Timestream2QueryEndpoint.java b/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/query/Timestream2QueryEndpoint.java
index 41316ed9d072..4e820518e4b8 100644
--- a/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/query/Timestream2QueryEndpoint.java
+++ b/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/query/Timestream2QueryEndpoint.java
@@ -51,7 +51,7 @@ public class Timestream2QueryEndpoint extends Timestream2AbstractEndpoint implem
super.doStart();
awsTimestreamQueryClient = getConfiguration().getAwsTimestreamQueryClient() != null
? getConfiguration().getAwsTimestreamQueryClient()
- : Timestream2ClientFactory.getTimestreamClient(getConfiguration()).getTimestreamQueryClient();
+ : Timestream2ClientFactory.getTimestreamQueryClient(getConfiguration());
}
@Override
diff --git a/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/write/Timestream2WriteEndpoint.java b/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/write/Timestream2WriteEndpoint.java
index 61f05fa6dc39..19adc2804e48 100644
--- a/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/write/Timestream2WriteEndpoint.java
+++ b/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/write/Timestream2WriteEndpoint.java
@@ -52,7 +52,7 @@ public class Timestream2WriteEndpoint extends Timestream2AbstractEndpoint implem
super.doStart();
awsTimestreamWriteClient = getConfiguration().getAwsTimestreamWriteClient() != null
? getConfiguration().getAwsTimestreamWriteClient()
- : Timestream2ClientFactory.getTimestreamClient(getConfiguration()).getTimestreamWriteClient();
+ : Timestream2ClientFactory.getTimestreamWriteClient(getConfiguration());
}
@Override
diff --git a/components/camel-aws/camel-aws2-timestream/src/test/java/org/apache/camel/component/aws2/timestream/Timestream2ClientFactoryTest.java b/components/camel-aws/camel-aws2-timestream/src/test/java/org/apache/camel/component/aws2/timestream/Timestream2ClientFactoryTest.java
deleted file mode 100644
index 2c5cfa65ae54..000000000000
--- a/components/camel-aws/camel-aws2-timestream/src/test/java/org/apache/camel/component/aws2/timestream/Timestream2ClientFactoryTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.timestream;
-
-import org.apache.camel.component.aws2.timestream.client.Timestream2ClientFactory;
-import org.apache.camel.component.aws2.timestream.client.Timestream2InternalClient;
-import org.apache.camel.component.aws2.timestream.client.impl.Timestream2ClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.timestream.client.impl.Timestream2ClientStandardImpl;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class Timestream2ClientFactoryTest {
-
- @Test
- public void getStandardTimestreamClientDefault() {
- Timestream2Configuration timestream2Configuration = new Timestream2Configuration();
- Timestream2InternalClient timestreamClient = Timestream2ClientFactory.getTimestreamClient(timestream2Configuration);
- assertTrue(timestreamClient instanceof Timestream2ClientStandardImpl);
- }
-
- @Test
- public void getStandardTimestreamClient() {
- Timestream2Configuration timestream2Configuration = new Timestream2Configuration();
- timestream2Configuration.setUseDefaultCredentialsProvider(false);
- Timestream2InternalClient timestreamClient = Timestream2ClientFactory.getTimestreamClient(timestream2Configuration);
- assertTrue(timestreamClient instanceof Timestream2ClientStandardImpl);
- }
-
- @Test
- public void getIAMOptimizedTimestreamClient() {
- Timestream2Configuration timestream2Configuration = new Timestream2Configuration();
- timestream2Configuration.setUseDefaultCredentialsProvider(true);
- Timestream2InternalClient timestream2InternalClient
- = Timestream2ClientFactory.getTimestreamClient(timestream2Configuration);
- assertTrue(timestream2InternalClient instanceof Timestream2ClientIAMOptimizedImpl);
- }
-}
diff --git a/components/camel-aws/camel-aws2-transcribe/pom.xml b/components/camel-aws/camel-aws2-transcribe/pom.xml
index 2a8f04856169..a8d667cdd6c4 100644
--- a/components/camel-aws/camel-aws2-transcribe/pom.xml
+++ b/components/camel-aws/camel-aws2-transcribe/pom.xml
@@ -42,6 +42,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-aws-common</artifactId>
+ </dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>transcribe</artifactId>
diff --git a/components/camel-aws/camel-aws2-transcribe/src/generated/java/org/apache/camel/component/aws2/transcribe/Transcribe2ComponentConfigurer.java b/components/camel-aws/camel-aws2-transcribe/src/generated/java/org/apache/camel/component/aws2/transcribe/Transcribe2ComponentConfigurer.java
index e9a9afda65b3..438c1ed03967 100644
--- a/components/camel-aws/camel-aws2-transcribe/src/generated/java/org/apache/camel/component/aws2/transcribe/Transcribe2ComponentConfigurer.java
+++ b/components/camel-aws/camel-aws2-transcribe/src/generated/java/org/apache/camel/component/aws2/transcribe/Transcribe2ComponentConfigurer.java
@@ -52,7 +52,7 @@ public class Transcribe2ComponentConfigurer extends PropertyConfigurerSupport im
case "proxyport":
case "proxyPort": getOrCreateConfiguration(target).setProxyPort(property(camelContext, java.lang.Integer.class, value)); return true;
case "proxyprotocol":
- case "proxyProtocol": getOrCreateConfiguration(target).setProxyProtocol(property(camelContext, java.lang.String.class, value)); return true;
+ case "proxyProtocol": getOrCreateConfiguration(target).setProxyProtocol(property(camelContext, software.amazon.awssdk.core.Protocol.class, value)); return true;
case "proxyusername":
case "proxyUsername": getOrCreateConfiguration(target).setProxyUsername(property(camelContext, java.lang.String.class, value)); return true;
case "region": getOrCreateConfiguration(target).setRegion(property(camelContext, java.lang.String.class, value)); return true;
@@ -101,7 +101,7 @@ public class Transcribe2ComponentConfigurer extends PropertyConfigurerSupport im
case "proxyport":
case "proxyPort": return java.lang.Integer.class;
case "proxyprotocol":
- case "proxyProtocol": return java.lang.String.class;
+ case "proxyProtocol": return software.amazon.awssdk.core.Protocol.class;
case "proxyusername":
case "proxyUsername": return java.lang.String.class;
case "region": return java.lang.String.class;
diff --git a/components/camel-aws/camel-aws2-transcribe/src/generated/java/org/apache/camel/component/aws2/transcribe/Transcribe2EndpointConfigurer.java b/components/camel-aws/camel-aws2-transcribe/src/generated/java/org/apache/camel/component/aws2/transcribe/Transcribe2EndpointConfigurer.java
index 8dc845e2dc8e..4ff3adecb458 100644
--- a/components/camel-aws/camel-aws2-transcribe/src/generated/java/org/apache/camel/component/aws2/transcribe/Transcribe2EndpointConfigurer.java
+++ b/components/camel-aws/camel-aws2-transcribe/src/generated/java/org/apache/camel/component/aws2/transcribe/Transcribe2EndpointConfigurer.java
@@ -42,7 +42,7 @@ public class Transcribe2EndpointConfigurer extends PropertyConfigurerSupport imp
case "proxyport":
case "proxyPort": target.getConfiguration().setProxyPort(property(camelContext, java.lang.Integer.class, value)); return true;
case "proxyprotocol":
- case "proxyProtocol": target.getConfiguration().setProxyProtocol(property(camelContext, java.lang.String.class, value)); return true;
+ case "proxyProtocol": target.getConfiguration().setProxyProtocol(property(camelContext, software.amazon.awssdk.core.Protocol.class, value)); return true;
case "proxyusername":
case "proxyUsername": target.getConfiguration().setProxyUsername(property(camelContext, java.lang.String.class, value)); return true;
case "region": target.getConfiguration().setRegion(property(camelContext, java.lang.String.class, value)); return true;
@@ -88,7 +88,7 @@ public class Transcribe2EndpointConfigurer extends PropertyConfigurerSupport imp
case "proxyport":
case "proxyPort": return java.lang.Integer.class;
case "proxyprotocol":
- case "proxyProtocol": return java.lang.String.class;
+ case "proxyProtocol": return software.amazon.awssdk.core.Protocol.class;
case "proxyusername":
case "proxyUsername": return java.lang.String.class;
case "region": return java.lang.String.class;
diff --git a/components/camel-aws/camel-aws2-transcribe/src/generated/resources/META-INF/org/apache/camel/component/aws2/transcribe/aws2-transcribe.json b/components/camel-aws/camel-aws2-transcribe/src/generated/resources/META-INF/org/apache/camel/component/aws2/transcribe/aws2-transcribe.json
index a8b1088ede3b..9da016371f30 100644
--- a/components/camel-aws/camel-aws2-transcribe/src/generated/resources/META-INF/org/apache/camel/component/aws2/transcribe/aws2-transcribe.json
+++ b/components/camel-aws/camel-aws2-transcribe/src/generated/resources/META-INF/org/apache/camel/component/aws2/transcribe/aws2-transcribe.json
@@ -33,7 +33,7 @@
"protocol": { "index": 6, "kind": "property", "displayName": "Protocol", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol when in [...]
"proxyHost": { "index": 7, "kind": "property", "displayName": "Proxy Host", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Transcribe client" },
"proxyPort": { "index": 8, "kind": "property", "displayName": "Proxy Port", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Transcribe client" },
- "proxyProtocol": { "index": 9, "kind": "property", "displayName": "Proxy Protocol", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol when instantiating the Transcribe client" },
+ "proxyProtocol": { "index": 9, "kind": "property", "displayName": "Proxy Protocol", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy proto [...]
"region": { "index": 10, "kind": "property", "displayName": "Region", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "The region in which Transcribe client needs to work. When using this parameter, the configuration will expect [...]
"transcribeClient": { "index": 11, "kind": "property", "displayName": "Transcribe Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.transcribe.TranscribeClient", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To use a existing configured AWS Transcribe a [...]
"trustAllCertificates": { "index": 12, "kind": "property", "displayName": "Trust All Certificates", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of overriding the en [...]
@@ -73,7 +73,7 @@
"protocol": { "index": 5, "kind": "parameter", "displayName": "Protocol", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol when i [...]
"proxyHost": { "index": 6, "kind": "parameter", "displayName": "Proxy Host", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Transcribe client" },
"proxyPort": { "index": 7, "kind": "parameter", "displayName": "Proxy Port", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Transcribe client" },
- "proxyProtocol": { "index": 8, "kind": "parameter", "displayName": "Proxy Protocol", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy protocol when instantiating the Transcribe client" },
+ "proxyProtocol": { "index": 8, "kind": "parameter", "displayName": "Proxy Protocol", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To define a proxy prot [...]
"region": { "index": 9, "kind": "parameter", "displayName": "Region", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "The region in which Transcribe client needs to work. When using this parameter, the configuration will expect [...]
"transcribeClient": { "index": 10, "kind": "parameter", "displayName": "Transcribe Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.transcribe.TranscribeClient", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "To use a existing configured AWS Transcribe [...]
"trustAllCertificates": { "index": 11, "kind": "parameter", "displayName": "Trust All Certificates", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws2.transcribe.Transcribe2Configuration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of overriding the e [...]
diff --git a/components/camel-aws/camel-aws2-transcribe/src/main/java/org/apache/camel/component/aws2/transcribe/Transcribe2ClientFactory.java b/components/camel-aws/camel-aws2-transcribe/src/main/java/org/apache/camel/component/aws2/transcribe/Transcribe2ClientFactory.java
index ba101f40175a..9d55ee6df53c 100644
--- a/components/camel-aws/camel-aws2-transcribe/src/main/java/org/apache/camel/component/aws2/transcribe/Transcribe2ClientFactory.java
+++ b/components/camel-aws/camel-aws2-transcribe/src/main/java/org/apache/camel/component/aws2/transcribe/Transcribe2ClientFactory.java
@@ -16,58 +16,26 @@
*/
package org.apache.camel.component.aws2.transcribe;
-import java.net.URI;
-
-import org.apache.camel.component.aws2.transcribe.client.Transcribe2InternalClient;
-import org.apache.camel.component.aws2.transcribe.client.impl.Transcribe2ClientIAMOptimizedImpl;
-import org.apache.camel.component.aws2.transcribe.client.impl.Transcribe2ClientIAMProfileOptimizedImpl;
-import org.apache.camel.component.aws2.transcribe.client.impl.Transcribe2ClientSessionTokenImpl;
-import org.apache.camel.component.aws2.transcribe.client.impl.Transcribe2ClientStandardImpl;
-import org.apache.camel.util.ObjectHelper;
-import software.amazon.awssdk.http.apache.ApacheHttpClient;
-import software.amazon.awssdk.http.apache.ProxyConfiguration;
+import org.apache.camel.component.aws.common.AwsClientBuilderUtil;
import software.amazon.awssdk.services.transcribe.TranscribeClient;
+/**
+ * Factory class to create AWS Transcribe clients using common configuration.
+ */
public final class Transcribe2ClientFactory {
private Transcribe2ClientFactory() {
}
+ /**
+ * Create a TranscribeClient based on configuration.
+ *
+ * @param configuration The Transcribe configuration
+ * @return Configured TranscribeClient
+ */
public static TranscribeClient getTranscribeClient(Transcribe2Configuration configuration) {
- TranscribeClient client = null;
- Transcribe2InternalClient transcribeInternalClient = null;
- if (ObjectHelper.isNotEmpty(configuration.getProxyHost()) && ObjectHelper.isNotEmpty(configuration.getProxyPort())) {
- ProxyConfiguration.Builder proxyConfig = ProxyConfiguration.builder();
- proxyConfig = proxyConfig.endpoint(URI.create(configuration.getProxyProtocol() + "://"
- + configuration.getProxyHost() + ":" + configuration.getProxyPort()));
- if (ObjectHelper.isNotEmpty(configuration.getProxyUsername())
- && ObjectHelper.isNotEmpty(configuration.getProxyPassword())) {
- proxyConfig.username(configuration.getProxyUsername());
- proxyConfig.password(configuration.getProxyPassword());
- }
- ApacheHttpClient.Builder httpClientBuilder = ApacheHttpClient.builder().proxyConfiguration(proxyConfig.build());
- if (configuration.isUseDefaultCredentialsProvider()) {
- transcribeInternalClient = new Transcribe2ClientIAMOptimizedImpl(httpClientBuilder.build(), configuration);
- } else if (configuration.isUseProfileCredentialsProvider()) {
- transcribeInternalClient
- = new Transcribe2ClientIAMProfileOptimizedImpl(httpClientBuilder.build(), configuration);
- } else if (configuration.isUseSessionCredentials()) {
- transcribeInternalClient = new Transcribe2ClientSessionTokenImpl(httpClientBuilder.build(), configuration);
- } else {
- transcribeInternalClient = new Transcribe2ClientStandardImpl(httpClientBuilder.build(), configuration);
- }
- } else {
- if (configuration.isUseDefaultCredentialsProvider()) {
- transcribeInternalClient = new Transcribe2ClientIAMOptimizedImpl(configuration);
- } else if (configuration.isUseProfileCredentialsProvider()) {
- transcribeInternalClient = new Transcribe2ClientIAMProfileOptimizedImpl(configuration);
- } else if (configuration.isUseSessionCredentials()) {
- transcribeInternalClient = new Transcribe2ClientSessionTokenImpl(configuration);
- } else {
- transcribeInternalClient = new Transcribe2ClientStandardImpl(configuration);
- }
- }
- client = transcribeInternalClient.getTranscribeClient();
- return client;
+ return AwsClientBuilderUtil.buildClient(
+ configuration,
+ TranscribeClient::builder);
}
}
diff --git a/components/camel-aws/camel-aws2-transcribe/src/main/java/org/apache/camel/component/aws2/transcribe/Transcribe2Configuration.java b/components/camel-aws/camel-aws2-transcribe/src/main/java/org/apache/camel/component/aws2/transcribe/Transcribe2Configuration.java
index 0b03d638c78b..2085186dfca8 100644
--- a/components/camel-aws/camel-aws2-transcribe/src/main/java/org/apache/camel/component/aws2/transcribe/Transcribe2Configuration.java
+++ b/components/camel-aws/camel-aws2-transcribe/src/main/java/org/apache/camel/component/aws2/transcribe/Transcribe2Configuration.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.aws2.transcribe;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.aws.common.AwsCommonConfiguration;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -25,7 +26,7 @@ import software.amazon.awssdk.core.Protocol;
import software.amazon.awssdk.services.transcribe.TranscribeClient;
@UriParams
-public class Transcribe2Configuration implements Cloneable {
+public class Transcribe2Configuration implements Cloneable, AwsCommonConfiguration {
@UriPath(description = "Logical name")
@Metadata(required = true)
@@ -64,8 +65,8 @@ public class Transcribe2Configuration implements Cloneable {
private String proxyHost;
@UriParam
private Integer proxyPort;
- @UriParam(defaultValue = "HTTPS")
- private String proxyProtocol = "HTTPS";
+ @UriParam(enums = "HTTP,HTTPS", defaultValue = "HTTPS")
+ private Protocol proxyProtocol = Protocol.HTTPS;
@UriParam(label = "security", secret = true)
private String proxyUsername;
@UriParam(label = "security", secret = true)
@@ -334,14 +335,14 @@ public class Transcribe2Configuration implements Cloneable {
/**
* To define a proxy protocol when instantiating the Transcribe client
*/
- public String getProxyProtocol() {
+ public Protocol getProxyProtocol() {
return proxyProtocol;
}
/**
* To define a proxy protocol when instantiating the Transcribe client
*/
- public void setProxyProtocol(String proxyProtocol) {
+ public void setProxyProtocol(Protocol proxyProtocol) {
this.proxyProtocol = proxyProtocol;
}
diff --git a/components/camel-aws/camel-aws2-transcribe/src/main/java/org/apache/camel/component/aws2/transcribe/client/Transcribe2InternalClient.java b/components/camel-aws/camel-aws2-transcribe/src/main/java/org/apache/camel/component/aws2/transcribe/client/Transcribe2InternalClient.java
deleted file mode 100644
index 3a3bbf2ff8e8..000000000000
--- a/components/camel-aws/camel-aws2-transcribe/src/main/java/org/apache/camel/component/aws2/transcribe/client/Transcribe2InternalClient.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.transcribe.client;
-
-import software.amazon.awssdk.services.transcribe.TranscribeClient;
-
-public interface Transcribe2InternalClient {
-
- TranscribeClient getTranscribeClient();
-}
diff --git a/components/camel-aws/camel-aws2-transcribe/src/main/java/org/apache/camel/component/aws2/transcribe/client/impl/Transcribe2ClientIAMOptimizedImpl.java b/components/camel-aws/camel-aws2-transcribe/src/main/java/org/apache/camel/component/aws2/transcribe/client/impl/Transcribe2ClientIAMOptimizedImpl.java
deleted file mode 100644
index 9ef544d17fac..000000000000
--- a/components/camel-aws/camel-aws2-transcribe/src/main/java/org/apache/camel/component/aws2/transcribe/client/impl/Transcribe2ClientIAMOptimizedImpl.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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
... 1481 lines suppressed ...