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/26 06:11:28 UTC

[camel] 01/04: CAMEL-16406 - Camel-AWS-Secrets-Manager: Add replica to multiple regions 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

commit fb497a761f4da66b123c6f4eb528bb595721c7ea
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Mar 26 06:59:59 2021 +0100

    CAMEL-16406 - Camel-AWS-Secrets-Manager: Add replica to multiple regions operation
---
 .../docs/aws-secrets-manager-component.adoc        |  4 +-
 .../aws/secretsmanager/aws-secrets-manager.json    |  4 +-
 .../main/docs/aws-secrets-manager-component.adoc   |  4 +-
 .../secretsmanager/SecretsManagerConstants.java    |  1 +
 .../secretsmanager/SecretsManagerOperations.java   |  3 +-
 .../aws/secretsmanager/SecretsManagerProducer.java | 43 ++++++++++++++++++++++
 .../dsl/SecretsManagerEndpointBuilderFactory.java  |  3 +-
 .../ROOT/pages/aws-secrets-manager-component.adoc  |  4 +-
 8 files changed, 56 insertions(+), 10 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 00bcf4f..ae6f8f3 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
@@ -52,7 +52,7 @@ The AWS Secrets Manager component supports 16 options, which are listed below.
 | *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 7 enums and the value can be one of: listSecrets, createSecret, getSecret, describeSecret, deleteSecret, rotateSecret, updateSecret |  | SecretsManagerOperations
+| *operation* (producer) | *Required* The operation to perform. There are 8 enums and the value can be one of: listSecrets, createSecret, getSecret, describeSecret, deleteSecret, rotateSecret, updateSecret, replicateSecretToRegions |  | 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
@@ -98,7 +98,7 @@ with the following path and query parameters:
 | 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 7 enums and the value can be one of: listSecrets, createSecret, getSecret, describeSecret, deleteSecret, rotateSecret, updateSecret |  | SecretsManagerOperations
+| *operation* (producer) | *Required* The operation to perform. There are 8 enums and the value can be one of: listSecrets, createSecret, getSecret, describeSecret, deleteSecret, rotateSecret, updateSecret, replicateSecretToRegions |  | 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/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 d731472..646bbc6 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
@@ -25,7 +25,7 @@
     "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", "createSecret", "getSecret", "describeSecret", "deleteSecret", "rotateSecret", "updateSecret" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.secretsmanag [...]
+    "operation": { "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations", "enum": [ "listSecrets", "createSecret", "getSecret", "describeSecret", "deleteSecret", "rotateSecret", "updateSecret", "replicateSecretToRegions" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.came [...]
     "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" },
@@ -43,7 +43,7 @@
     "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", "createSecret", "getSecret", "describeSecret", "deleteSecret", "rotateSecret", "updateSecret" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.secretsmana [...]
+    "operation": { "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations", "enum": [ "listSecrets", "createSecret", "getSecret", "describeSecret", "deleteSecret", "rotateSecret", "updateSecret", "replicateSecretToRegions" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.cam [...]
     "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 00bcf4f..ae6f8f3 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
@@ -52,7 +52,7 @@ The AWS Secrets Manager component supports 16 options, which are listed below.
 | *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 7 enums and the value can be one of: listSecrets, createSecret, getSecret, describeSecret, deleteSecret, rotateSecret, updateSecret |  | SecretsManagerOperations
+| *operation* (producer) | *Required* The operation to perform. There are 8 enums and the value can be one of: listSecrets, createSecret, getSecret, describeSecret, deleteSecret, rotateSecret, updateSecret, replicateSecretToRegions |  | 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
@@ -98,7 +98,7 @@ with the following path and query parameters:
 | 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 7 enums and the value can be one of: listSecrets, createSecret, getSecret, describeSecret, deleteSecret, rotateSecret, updateSecret |  | SecretsManagerOperations
+| *operation* (producer) | *Required* The operation to perform. There are 8 enums and the value can be one of: listSecrets, createSecret, getSecret, describeSecret, deleteSecret, rotateSecret, updateSecret, replicateSecretToRegions |  | 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/SecretsManagerConstants.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerConstants.java
index 43240ce..495dd7d 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
@@ -27,4 +27,5 @@ public interface SecretsManagerConstants {
     String SECRET_ID = "CamelAwsSecretsManagerSecretId";
     String LAMBDA_ROTATION_FUNCTION_ARN = "CamelAwsSecretsManagerLambdaRotationFunctionArn";
     String SECRET_VERSION_ID = "CamelAwsSecretsManagerSecretVersionId";
+    String SECRET_REPLICATION_REGIONS = "CamelAwsSecretsManagerSecretReplicationRegions";
 }
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 22579b0..7dbafed 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
@@ -24,5 +24,6 @@ public enum SecretsManagerOperations {
     describeSecret,
     deleteSecret,
     rotateSecret,
-    updateSecret
+    updateSecret,
+    replicateSecretToRegions
 }
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 46fe0e3..223840d 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
@@ -41,6 +41,9 @@ import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRespon
 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;
+import software.amazon.awssdk.services.secretsmanager.model.ReplicaRegionType;
+import software.amazon.awssdk.services.secretsmanager.model.ReplicateSecretToRegionsRequest;
+import software.amazon.awssdk.services.secretsmanager.model.ReplicateSecretToRegionsResponse;
 import software.amazon.awssdk.services.secretsmanager.model.RotateSecretRequest;
 import software.amazon.awssdk.services.secretsmanager.model.RotateSecretResponse;
 import software.amazon.awssdk.services.secretsmanager.model.UpdateSecretRequest;
@@ -84,6 +87,9 @@ public class SecretsManagerProducer extends DefaultProducer {
             case updateSecret:
                 updateSecret(getEndpoint().getSecretsManagerClient(), exchange);
                 break;
+            case replicateSecretToRegions:
+                replicateSecretToRegions(getEndpoint().getSecretsManagerClient(), exchange);
+                break;
             default:
                 throw new IllegalArgumentException("Unsupported operation");
         }
@@ -343,6 +349,43 @@ public class SecretsManagerProducer extends DefaultProducer {
         message.setBody(result);
     }
 
+    private void replicateSecretToRegions(SecretsManagerClient secretsManagerClient, Exchange exchange)
+            throws InvalidPayloadException {
+        ReplicateSecretToRegionsRequest request = null;
+        ReplicateSecretToRegionsResponse result;
+        if (getConfiguration().isPojoRequest()) {
+            request = exchange.getIn().getMandatoryBody(ReplicateSecretToRegionsRequest.class);
+        } else {
+            ReplicateSecretToRegionsRequest.Builder builder = ReplicateSecretToRegionsRequest.builder();
+            if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(SecretsManagerConstants.SECRET_ID))) {
+                String secretId = exchange.getIn().getHeader(SecretsManagerConstants.SECRET_ID, String.class);
+                builder.secretId(secretId);
+            } else {
+                throw new IllegalArgumentException("Secret Id must be specified");
+            }
+            if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(SecretsManagerConstants.SECRET_REPLICATION_REGIONS))) {
+                String regions = exchange.getIn().getHeader(SecretsManagerConstants.SECRET_REPLICATION_REGIONS, String.class);
+                String[] s = regions.split(",");
+                for (String region : s) {
+                    ReplicaRegionType.Builder regionType = ReplicaRegionType.builder();
+                    regionType.region(region);
+                    builder.addReplicaRegions(regionType.build());
+                }
+            } else {
+                throw new IllegalArgumentException("Replica Regions must be specified");
+            }
+            request = builder.build();
+        }
+        try {
+            result = secretsManagerClient.replicateSecretToRegions(request);
+        } catch (AwsServiceException ase) {
+            LOG.trace("Replicate Secret to region 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/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 d63386e..3ad0e90 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
@@ -435,7 +435,8 @@ public interface SecretsManagerEndpointBuilderFactory {
         describeSecret,
         deleteSecret,
         rotateSecret,
-        updateSecret;
+        updateSecret,
+        replicateSecretToRegions;
     }
 
     /**
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 a338b4a..6a80aac 100644
--- a/docs/components/modules/ROOT/pages/aws-secrets-manager-component.adoc
+++ b/docs/components/modules/ROOT/pages/aws-secrets-manager-component.adoc
@@ -54,7 +54,7 @@ The AWS Secrets Manager component supports 16 options, which are listed below.
 | *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 7 enums and the value can be one of: listSecrets, createSecret, getSecret, describeSecret, deleteSecret, rotateSecret, updateSecret |  | SecretsManagerOperations
+| *operation* (producer) | *Required* The operation to perform. There are 8 enums and the value can be one of: listSecrets, createSecret, getSecret, describeSecret, deleteSecret, rotateSecret, updateSecret, replicateSecretToRegions |  | 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
@@ -100,7 +100,7 @@ with the following path and query parameters:
 | 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 7 enums and the value can be one of: listSecrets, createSecret, getSecret, describeSecret, deleteSecret, rotateSecret, updateSecret |  | SecretsManagerOperations
+| *operation* (producer) | *Required* The operation to perform. There are 8 enums and the value can be one of: listSecrets, createSecret, getSecret, describeSecret, deleteSecret, rotateSecret, updateSecret, replicateSecretToRegions |  | 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