You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/03/15 07:11:50 UTC

[camel] branch master updated: CAMEL-16323 - Create a Camel-AWS-Secret-Manager component - createSecret operation

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 5c18cd6  CAMEL-16323 - Create a Camel-AWS-Secret-Manager component - createSecret operation
5c18cd6 is described below

commit 5c18cd6349742bd89e769808cd68c98f433b06ea
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Mon Mar 15 06:58:16 2021 +0100

    CAMEL-16323 - Create a Camel-AWS-Secret-Manager component - createSecret operation
---
 .../docs/aws-secrets-manager-component.adoc        | 10 ++--
 .../SecretsManagerComponentConfigurer.java         |  6 +++
 .../SecretsManagerEndpointConfigurer.java          |  6 +++
 .../SecretsManagerEndpointUriFactory.java          |  3 +-
 .../aws/secretsmanager/aws-secrets-manager.json    |  6 ++-
 .../main/docs/aws-secrets-manager-component.adoc   | 10 ++--
 .../SecretsManagerConfiguration.java               | 13 +++++
 .../secretsmanager/SecretsManagerConstants.java    |  2 +
 .../secretsmanager/SecretsManagerOperations.java   |  3 +-
 .../aws/secretsmanager/SecretsManagerProducer.java | 53 ++++++++++++++++++
 ...ManagerCreateSecretProducerIntegrationTest.java | 63 ++++++++++++++++++++++
 .../java/org/apache/camel/coap/CoAPComponent.java  |  2 +-
 .../apache/camel/coap/CoAPComponentTCPTLSTest.java |  2 +-
 .../camel/coap/CoAPRestComponentTCPTLSTest.java    |  2 +-
 .../camel/coap/CoAPRestComponentTCPTest.java       |  2 +-
 .../AwsSecretsManagerComponentBuilderFactory.java  | 17 ++++++
 .../dsl/SecretsManagerEndpointBuilderFactory.java  | 35 +++++++++++-
 .../ROOT/pages/aws-secrets-manager-component.adoc  | 10 ++--
 18 files changed, 224 insertions(+), 21 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-secrets-manager-component.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-secrets-manager-component.adoc
index dcabbbc..bfa361d 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-secrets-manager-component.adoc
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-secrets-manager-component.adoc
@@ -42,16 +42,17 @@ You can append query options to the URI in the following format,
 
 
 // component options: START
-The AWS Secrets Manager component supports 15 options, which are listed below.
+The AWS Secrets Manager component supports 16 options, which are listed below.
 
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
+| *binaryPayload* (producer) | Set if the secret is binary or not | false | boolean
 | *configuration* (producer) | Component configuration |  | SecretsManagerConfiguration
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *operation* (producer) | *Required* The operation to perform. There are 1 enums and the value can be one of: listSecrets |  | SecretsManagerOperations
+| *operation* (producer) | *Required* The operation to perform. There are 2 enums and the value can be one of: listSecrets, createSecret |  | SecretsManagerOperations
 | *overrideEndpoint* (producer) | Set the need for overidding the endpoint. This option needs to be used in combination with uriEndpointOverride option | false | boolean
 | *pojoRequest* (producer) | If we want to use a POJO request as body or not | false | boolean
 | *proxyHost* (producer) | To define a proxy host when instantiating the Secrets Manager client |  | String
@@ -89,14 +90,15 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (13 parameters):
+=== Query Parameters (14 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
+| *binaryPayload* (producer) | Set if the secret is binary or not | false | boolean
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *operation* (producer) | *Required* The operation to perform. There are 1 enums and the value can be one of: listSecrets |  | SecretsManagerOperations
+| *operation* (producer) | *Required* The operation to perform. There are 2 enums and the value can be one of: listSecrets, createSecret |  | SecretsManagerOperations
 | *overrideEndpoint* (producer) | Set the need for overidding the endpoint. This option needs to be used in combination with uriEndpointOverride option | false | boolean
 | *pojoRequest* (producer) | If we want to use a POJO request as body or not | false | boolean
 | *proxyHost* (producer) | To define a proxy host when instantiating the Secrets Manager client |  | String
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/generated/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerComponentConfigurer.java b/components/camel-aws/camel-aws-secrets-manager/src/generated/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerComponentConfigurer.java
index ae2a635..b996850 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/generated/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerComponentConfigurer.java
+++ b/components/camel-aws/camel-aws-secrets-manager/src/generated/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerComponentConfigurer.java
@@ -32,6 +32,8 @@ public class SecretsManagerComponentConfigurer extends PropertyConfigurerSupport
         case "accessKey": getOrCreateConfiguration(target).setAccessKey(property(camelContext, java.lang.String.class, value)); return true;
         case "autowiredenabled":
         case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
+        case "binarypayload":
+        case "binaryPayload": getOrCreateConfiguration(target).setBinaryPayload(property(camelContext, boolean.class, value)); return true;
         case "configuration": target.setConfiguration(property(camelContext, org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
@@ -71,6 +73,8 @@ public class SecretsManagerComponentConfigurer extends PropertyConfigurerSupport
         case "accessKey": return java.lang.String.class;
         case "autowiredenabled":
         case "autowiredEnabled": return boolean.class;
+        case "binarypayload":
+        case "binaryPayload": return boolean.class;
         case "configuration": return org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration.class;
         case "lazystartproducer":
         case "lazyStartProducer": return boolean.class;
@@ -106,6 +110,8 @@ public class SecretsManagerComponentConfigurer extends PropertyConfigurerSupport
         case "accessKey": return getOrCreateConfiguration(target).getAccessKey();
         case "autowiredenabled":
         case "autowiredEnabled": return target.isAutowiredEnabled();
+        case "binarypayload":
+        case "binaryPayload": return getOrCreateConfiguration(target).isBinaryPayload();
         case "configuration": return target.getConfiguration();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/generated/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerEndpointConfigurer.java b/components/camel-aws/camel-aws-secrets-manager/src/generated/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerEndpointConfigurer.java
index fd0a0e3..55115b8 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/generated/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerEndpointConfigurer.java
+++ b/components/camel-aws/camel-aws-secrets-manager/src/generated/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerEndpointConfigurer.java
@@ -23,6 +23,8 @@ public class SecretsManagerEndpointConfigurer extends PropertyConfigurerSupport
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "accesskey":
         case "accessKey": target.getConfiguration().setAccessKey(property(camelContext, java.lang.String.class, value)); return true;
+        case "binarypayload":
+        case "binaryPayload": target.getConfiguration().setBinaryPayload(property(camelContext, boolean.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
         case "operation": target.getConfiguration().setOperation(property(camelContext, org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations.class, value)); return true;
@@ -59,6 +61,8 @@ public class SecretsManagerEndpointConfigurer extends PropertyConfigurerSupport
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "accesskey":
         case "accessKey": return java.lang.String.class;
+        case "binarypayload":
+        case "binaryPayload": return boolean.class;
         case "lazystartproducer":
         case "lazyStartProducer": return boolean.class;
         case "operation": return org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations.class;
@@ -91,6 +95,8 @@ public class SecretsManagerEndpointConfigurer extends PropertyConfigurerSupport
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "accesskey":
         case "accessKey": return target.getConfiguration().getAccessKey();
+        case "binarypayload":
+        case "binaryPayload": return target.getConfiguration().isBinaryPayload();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
         case "operation": return target.getConfiguration().getOperation();
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/generated/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerEndpointUriFactory.java b/components/camel-aws/camel-aws-secrets-manager/src/generated/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerEndpointUriFactory.java
index 95a3253..4c9fec5 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/generated/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerEndpointUriFactory.java
+++ b/components/camel-aws/camel-aws-secrets-manager/src/generated/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerEndpointUriFactory.java
@@ -20,7 +20,7 @@ public class SecretsManagerEndpointUriFactory extends org.apache.camel.support.c
     private static final Set<String> PROPERTY_NAMES;
     private static final Set<String> SECRET_PROPERTY_NAMES;
     static {
-        Set<String> props = new HashSet<>(14);
+        Set<String> props = new HashSet<>(15);
         props.add("proxyProtocol");
         props.add("secretKey");
         props.add("uriEndpointOverride");
@@ -32,6 +32,7 @@ public class SecretsManagerEndpointUriFactory extends org.apache.camel.support.c
         props.add("secretsManagerClient");
         props.add("lazyStartProducer");
         props.add("accessKey");
+        props.add("binaryPayload");
         props.add("overrideEndpoint");
         props.add("region");
         props.add("operation");
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json b/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json
index 497d29e..bf598eb 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json
+++ b/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json
@@ -22,9 +22,10 @@
     "lenientProperties": false
   },
   "componentProperties": {
+    "binaryPayload": { "kind": "property", "displayName": "Binary Payload", "group": "producer", "label": "", "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 if the secret is binary or not" },
     "configuration": { "kind": "property", "displayName": "Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "Component configuration" },
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during star [...]
-    "operation": { "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations", "enum": [ "listSecrets" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "The ope [...]
+    "operation": { "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations", "enum": [ "listSecrets", "createSecret" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "descri [...]
     "overrideEndpoint": { "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set the need for overidding the endpoint. This option needs to be used in combin [...]
     "pojoRequest": { "kind": "property", "displayName": "Pojo Request", "group": "producer", "label": "", "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 use a POJO request as body or not" },
     "proxyHost": { "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Secrets Manager client" },
@@ -40,8 +41,9 @@
   },
   "properties": {
     "label": { "kind": "path", "displayName": "Label", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Logical name" },
+    "binaryPayload": { "kind": "parameter", "displayName": "Binary Payload", "group": "producer", "label": "", "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 if the secret is binary or not" },
     "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during sta [...]
-    "operation": { "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations", "enum": [ "listSecrets" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "The op [...]
+    "operation": { "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations", "enum": [ "listSecrets", "createSecret" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "descr [...]
     "overrideEndpoint": { "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set the need for overidding the endpoint. This option needs to be used in combi [...]
     "pojoRequest": { "kind": "parameter", "displayName": "Pojo Request", "group": "producer", "label": "", "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 use a POJO request as body or not" },
     "proxyHost": { "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.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Secrets Manager client" },
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/docs/aws-secrets-manager-component.adoc b/components/camel-aws/camel-aws-secrets-manager/src/main/docs/aws-secrets-manager-component.adoc
index dcabbbc..bfa361d 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/docs/aws-secrets-manager-component.adoc
+++ b/components/camel-aws/camel-aws-secrets-manager/src/main/docs/aws-secrets-manager-component.adoc
@@ -42,16 +42,17 @@ You can append query options to the URI in the following format,
 
 
 // component options: START
-The AWS Secrets Manager component supports 15 options, which are listed below.
+The AWS Secrets Manager component supports 16 options, which are listed below.
 
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
+| *binaryPayload* (producer) | Set if the secret is binary or not | false | boolean
 | *configuration* (producer) | Component configuration |  | SecretsManagerConfiguration
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *operation* (producer) | *Required* The operation to perform. There are 1 enums and the value can be one of: listSecrets |  | SecretsManagerOperations
+| *operation* (producer) | *Required* The operation to perform. There are 2 enums and the value can be one of: listSecrets, createSecret |  | SecretsManagerOperations
 | *overrideEndpoint* (producer) | Set the need for overidding the endpoint. This option needs to be used in combination with uriEndpointOverride option | false | boolean
 | *pojoRequest* (producer) | If we want to use a POJO request as body or not | false | boolean
 | *proxyHost* (producer) | To define a proxy host when instantiating the Secrets Manager client |  | String
@@ -89,14 +90,15 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (13 parameters):
+=== Query Parameters (14 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
+| *binaryPayload* (producer) | Set if the secret is binary or not | false | boolean
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *operation* (producer) | *Required* The operation to perform. There are 1 enums and the value can be one of: listSecrets |  | SecretsManagerOperations
+| *operation* (producer) | *Required* The operation to perform. There are 2 enums and the value can be one of: listSecrets, createSecret |  | SecretsManagerOperations
 | *overrideEndpoint* (producer) | Set the need for overidding the endpoint. This option needs to be used in combination with uriEndpointOverride option | false | boolean
 | *pojoRequest* (producer) | If we want to use a POJO request as body or not | false | boolean
 | *proxyHost* (producer) | To define a proxy host when instantiating the Secrets Manager client |  | String
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 24737f0..7c60977 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
@@ -56,6 +56,8 @@ public class SecretsManagerConfiguration implements Cloneable {
     private boolean overrideEndpoint;
     @UriParam
     private String uriEndpointOverride;
+    @UriParam(defaultValue = "false")
+    private boolean binaryPayload;
 
     public SecretsManagerClient getSecretsManagerClient() {
         return secretsManagerClient;
@@ -191,6 +193,17 @@ public class SecretsManagerConfiguration implements Cloneable {
         this.uriEndpointOverride = uriEndpointOverride;
     }
 
+    public boolean isBinaryPayload() {
+        return binaryPayload;
+    }
+
+    /**
+     * Set if the secret is binary or not
+     */
+    public void setBinaryPayload(boolean binaryPayload) {
+        this.binaryPayload = binaryPayload;
+    }
+
     // *************************************************
     //
     // *************************************************
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerConstants.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerConstants.java
index ed0b00c..2fadf94 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerConstants.java
+++ b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerConstants.java
@@ -22,4 +22,6 @@ package org.apache.camel.component.aws.secretsmanager;
 public interface SecretsManagerConstants {
     String OPERATION = "CamelAwsSecretsManagerOperation";
     String MAX_RESULTS = "CamelAwsSecretsManagerMaxResults";
+    String SECRET_NAME = "CamelAwsSecretsManagerSecretName";
+    String SECRET_DESCRIPTION = "CamelAwsSecretsManagerSecretDescription";
 }
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerOperations.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerOperations.java
index 7daf9bd..2065077 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerOperations.java
+++ b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerOperations.java
@@ -18,5 +18,6 @@ package org.apache.camel.component.aws.secretsmanager;
 
 public enum SecretsManagerOperations {
 
-    listSecrets
+    listSecrets,
+    createSecret
 }
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerProducer.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerProducer.java
index 881a607..c805a62 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerProducer.java
+++ b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerProducer.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.aws.secretsmanager;
 
+import java.util.Base64;
+
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.InvalidPayloadException;
@@ -26,7 +28,10 @@ import org.apache.camel.util.URISupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import software.amazon.awssdk.awscore.exception.AwsServiceException;
+import software.amazon.awssdk.core.SdkBytes;
 import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
+import software.amazon.awssdk.services.secretsmanager.model.CreateSecretRequest;
+import software.amazon.awssdk.services.secretsmanager.model.CreateSecretResponse;
 import software.amazon.awssdk.services.secretsmanager.model.ListSecretsRequest;
 import software.amazon.awssdk.services.secretsmanager.model.ListSecretsRequest.Builder;
 import software.amazon.awssdk.services.secretsmanager.model.ListSecretsResponse;
@@ -51,6 +56,9 @@ public class SecretsManagerProducer extends DefaultProducer {
             case listSecrets:
                 listSecrets(getEndpoint().getSecretsManagerClient(), exchange);
                 break;
+            case createSecret:
+                createSecret(getEndpoint().getSecretsManagerClient(), exchange);
+                break;
             default:
                 throw new IllegalArgumentException("Unsupported operation");
         }
@@ -117,6 +125,51 @@ public class SecretsManagerProducer extends DefaultProducer {
         }
     }
 
+    private void createSecret(SecretsManagerClient secretsManagerClient, Exchange exchange) throws InvalidPayloadException {
+        if (getConfiguration().isPojoRequest()) {
+            Object payload = exchange.getIn().getMandatoryBody();
+            if (payload instanceof CreateSecretRequest) {
+                CreateSecretResponse result;
+                try {
+                    CreateSecretRequest request = (CreateSecretRequest) payload;
+                    result = secretsManagerClient.createSecret(request);
+                } catch (AwsServiceException ase) {
+                    LOG.trace("Create Secret command returned the error code {}", ase.awsErrorDetails().errorCode());
+                    throw ase;
+                }
+                Message message = getMessageForResponse(exchange);
+                message.setBody(result);
+            }
+        } else {
+            CreateSecretRequest.Builder builder = CreateSecretRequest.builder();
+            CreateSecretResponse result;
+            try {
+                String payload = exchange.getIn().getMandatoryBody(String.class);
+                if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(SecretsManagerConstants.SECRET_NAME))) {
+                    String secretName = exchange.getIn().getHeader(SecretsManagerConstants.SECRET_NAME, String.class);
+                    builder.name(secretName);
+                } else {
+                    throw new IllegalArgumentException("Secret Name must be specified");
+                }
+                if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(SecretsManagerConstants.SECRET_DESCRIPTION))) {
+                    String descr = exchange.getIn().getHeader(SecretsManagerConstants.SECRET_DESCRIPTION, String.class);
+                    builder.description(descr);
+                }
+                if (getConfiguration().isBinaryPayload()) {
+                    builder.secretBinary(SdkBytes.fromUtf8String(Base64.getEncoder().encodeToString(payload.getBytes())));
+                } else {
+                    builder.secretString((String) payload);
+                }
+                result = secretsManagerClient.createSecret(builder.build());
+            } catch (AwsServiceException ase) {
+                LOG.trace("Create Secret command returned the error code {}", ase.awsErrorDetails().errorCode());
+                throw ase;
+            }
+            Message message = getMessageForResponse(exchange);
+            message.setBody(result);
+        }
+    }
+
     public static Message getMessageForResponse(final Exchange exchange) {
         return exchange.getMessage();
     }
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerCreateSecretProducerIntegrationTest.java b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerCreateSecretProducerIntegrationTest.java
new file mode 100644
index 0000000..a40f46f
--- /dev/null
+++ b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerCreateSecretProducerIntegrationTest.java
@@ -0,0 +1,63 @@
+/*
+ * 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.integration;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import software.amazon.awssdk.services.secretsmanager.model.CreateSecretResponse;
+
+@Disabled("This test must be manually started, you need to specify AWS Credentials")
+public class SecretsManagerCreateSecretProducerIntegrationTest extends CamelTestSupport {
+
+    @EndpointInject("mock:result")
+    private MockEndpoint mock;
+
+    @Test
+    public void translateTextTest() throws Exception {
+
+        mock.expectedMessageCount(1);
+        Exchange exchange = template.request("direct:listSecrets", new Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setHeader(SecretsManagerConstants.SECRET_NAME, "TestSecret4");
+                exchange.getIn().setBody("Body");
+            }
+        });
+
+        CreateSecretResponse resultGet = (CreateSecretResponse) exchange.getIn().getBody();
+        System.err.println(resultGet);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:listSecrets")
+                        .to("aws-secrets-manager://test?accessKey=RAW(xxxx)&secretKey=RAW(yyyy)&region=eu-west-1&operation=createSecret")
+                        .to("mock:result");
+            }
+        };
+    }
+}
diff --git a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java
index 826e837..9789cea 100644
--- a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java
+++ b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java
@@ -51,7 +51,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Represents the component that manages {@link CoAPEndpoint}.
  */
-@Component("coap,coaps,coap+tcp,coaps+tcp")
+@Component("coap,coaps,coap-tcp,coaps-tcp")
 public class CoAPComponent extends DefaultComponent implements RestConsumerFactory {
     static final int DEFAULT_PORT = 5684;
     private static final Logger LOG = LoggerFactory.getLogger(CoAPComponent.class);
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTCPTLSTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTCPTLSTest.java
index 8582613..8752c0f 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTCPTLSTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTCPTLSTest.java
@@ -23,7 +23,7 @@ public class CoAPComponentTCPTLSTest extends CoAPComponentTLSTestBase {
 
     @Override
     protected String getProtocol() {
-        return "coaps+tcp";
+        return "coaps-tcp";
     }
 
     @Override
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTCPTLSTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTCPTLSTest.java
index cc9ed65..6c30b55 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTCPTLSTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTCPTLSTest.java
@@ -39,7 +39,7 @@ public class CoAPRestComponentTCPTLSTest extends CoAPRestComponentTestBase {
 
     @Override
     protected String getProtocol() {
-        return "coaps+tcp";
+        return "coaps-tcp";
     }
 
     @Override
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTCPTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTCPTest.java
index 25d0f7d..94bc6f7 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTCPTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTCPTest.java
@@ -32,7 +32,7 @@ public class CoAPRestComponentTCPTest extends CoAPRestComponentTestBase {
 
     @Override
     protected String getProtocol() {
-        return "coap+tcp";
+        return "coap-tcp";
     }
 
     @Override
diff --git a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsSecretsManagerComponentBuilderFactory.java b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsSecretsManagerComponentBuilderFactory.java
index a41ea55..0b15054 100644
--- a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsSecretsManagerComponentBuilderFactory.java
+++ b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsSecretsManagerComponentBuilderFactory.java
@@ -51,6 +51,22 @@ public interface AwsSecretsManagerComponentBuilderFactory {
             extends
                 ComponentBuilder<SecretsManagerComponent> {
         /**
+         * Set if the secret is binary or not.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param binaryPayload the value to set
+         * @return the dsl builder
+         */
+        default AwsSecretsManagerComponentBuilder binaryPayload(
+                boolean binaryPayload) {
+            doSetProperty("binaryPayload", binaryPayload);
+            return this;
+        }
+        /**
          * Component configuration.
          * 
          * The option is a:
@@ -328,6 +344,7 @@ public interface AwsSecretsManagerComponentBuilderFactory {
                 String name,
                 Object value) {
             switch (name) {
+            case "binaryPayload": getOrCreateConfiguration((SecretsManagerComponent) component).setBinaryPayload((boolean) value); return true;
             case "configuration": ((SecretsManagerComponent) component).setConfiguration((org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration) value); return true;
             case "lazyStartProducer": ((SecretsManagerComponent) component).setLazyStartProducer((boolean) value); return true;
             case "operation": getOrCreateConfiguration((SecretsManagerComponent) component).setOperation((org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations) value); return true;
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SecretsManagerEndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SecretsManagerEndpointBuilderFactory.java
index 06a0580..ee23d6b 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SecretsManagerEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SecretsManagerEndpointBuilderFactory.java
@@ -37,6 +37,38 @@ public interface SecretsManagerEndpointBuilderFactory {
             extends
                 EndpointProducerBuilder {
         /**
+         * Set if the secret is binary or not.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param binaryPayload the value to set
+         * @return the dsl builder
+         */
+        default SecretsManagerEndpointBuilder binaryPayload(
+                boolean binaryPayload) {
+            doSetProperty("binaryPayload", binaryPayload);
+            return this;
+        }
+        /**
+         * Set if the secret is binary or not.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param binaryPayload the value to set
+         * @return the dsl builder
+         */
+        default SecretsManagerEndpointBuilder binaryPayload(String binaryPayload) {
+            doSetProperty("binaryPayload", binaryPayload);
+            return this;
+        }
+        /**
          * Whether the producer should be started lazy (on the first message).
          * By starting lazy you can use this to allow CamelContext and routes to
          * startup in situations where a producer may otherwise fail during
@@ -397,7 +429,8 @@ public interface SecretsManagerEndpointBuilderFactory {
      * <code>org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations</code> enum.
      */
     enum SecretsManagerOperations {
-        listSecrets;
+        listSecrets,
+        createSecret;
     }
 
     /**
diff --git a/docs/components/modules/ROOT/pages/aws-secrets-manager-component.adoc b/docs/components/modules/ROOT/pages/aws-secrets-manager-component.adoc
index 1241eb1..8517ee5 100644
--- a/docs/components/modules/ROOT/pages/aws-secrets-manager-component.adoc
+++ b/docs/components/modules/ROOT/pages/aws-secrets-manager-component.adoc
@@ -44,16 +44,17 @@ You can append query options to the URI in the following format,
 
 
 // component options: START
-The AWS Secrets Manager component supports 15 options, which are listed below.
+The AWS Secrets Manager component supports 16 options, which are listed below.
 
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
+| *binaryPayload* (producer) | Set if the secret is binary or not | false | boolean
 | *configuration* (producer) | Component configuration |  | SecretsManagerConfiguration
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *operation* (producer) | *Required* The operation to perform. There are 1 enums and the value can be one of: listSecrets |  | SecretsManagerOperations
+| *operation* (producer) | *Required* The operation to perform. There are 2 enums and the value can be one of: listSecrets, createSecret |  | SecretsManagerOperations
 | *overrideEndpoint* (producer) | Set the need for overidding the endpoint. This option needs to be used in combination with uriEndpointOverride option | false | boolean
 | *pojoRequest* (producer) | If we want to use a POJO request as body or not | false | boolean
 | *proxyHost* (producer) | To define a proxy host when instantiating the Secrets Manager client |  | String
@@ -91,14 +92,15 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (13 parameters):
+=== Query Parameters (14 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
+| *binaryPayload* (producer) | Set if the secret is binary or not | false | boolean
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *operation* (producer) | *Required* The operation to perform. There are 1 enums and the value can be one of: listSecrets |  | SecretsManagerOperations
+| *operation* (producer) | *Required* The operation to perform. There are 2 enums and the value can be one of: listSecrets, createSecret |  | SecretsManagerOperations
 | *overrideEndpoint* (producer) | Set the need for overidding the endpoint. This option needs to be used in combination with uriEndpointOverride option | false | boolean
 | *pojoRequest* (producer) | If we want to use a POJO request as body or not | false | boolean
 | *proxyHost* (producer) | To define a proxy host when instantiating the Secrets Manager client |  | String