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

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


The following commit(s) were added to refs/heads/main by this push:
     new 4f1dd7b8 chore: Remove experimental data type Kamelets
4f1dd7b8 is described below

commit 4f1dd7b8d11b3f965ace8342174f09f678a3e68f
Author: Christoph Deppisch <cdeppi...@redhat.com>
AuthorDate: Thu Mar 2 19:18:04 2023 +0100

    chore: Remove experimental data type Kamelets
    
    Remove AWS S3 and AWS DDB experimental Kamelets in favor of using the 
data-type-action Kamelet
---
 docs/modules/ROOT/nav.adoc                         |   2 -
 kamelets/aws-ddb-experimental-sink.kamelet.yaml    | 149 ---------------
 kamelets/aws-ddb-sink.kamelet.yaml                 |  21 ++-
 kamelets/aws-s3-experimental-source.kamelet.yaml   | 168 -----------------
 .../kamelets/catalog/KameletsCatalogTest.java      |  40 ++--
 .../transform/aws/ddb/JsonToDdbModelConverter.java | 201 ---------------------
 .../aws/ddb/JsonToDdbModelConverterTest.java       | 184 -------------------
 .../aws-ddb-experimental-sink.kamelet.yaml         | 149 ---------------
 .../resources/kamelets/aws-ddb-sink.kamelet.yaml   |  21 ++-
 .../aws-s3-experimental-source.kamelet.yaml        | 168 -----------------
 .../aws-ddb-sink-exp/amazonDDBClient.groovy        |  53 ------
 .../aws-ddb-sink-exp/aws-ddb-sink-binding.yaml     |  50 -----
 .../aws-ddb-sink-deleteItem.feature                |  61 -------
 .../aws-ddb-sink-exp/aws-ddb-sink-putItem.feature  |  60 ------
 .../aws-ddb-sink-updateItem.feature                |  64 -------
 test/experimental/aws-ddb-sink-exp/putItem.groovy  |  30 ---
 .../aws-ddb-sink-exp/verifyItems.groovy            |  30 ---
 .../experimental/aws-ddb-sink-exp/yaks-config.yaml |  65 -------
 test/experimental/aws-s3-exp/amazonS3Client.groovy |  36 ----
 .../aws-s3-exp/aws-s3-cloudevents.feature          |  50 -----
 .../experimental/aws-s3-exp/aws-s3-knative.feature |  49 -----
 .../experimental/aws-s3-exp/aws-s3-to-knative.yaml |  47 -----
 test/experimental/aws-s3-exp/yaks-config.yaml      |  67 -------
 23 files changed, 48 insertions(+), 1717 deletions(-)

diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index f09da690..3d1249e9 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -3,7 +3,6 @@
 * xref:avro-serialize-action.adoc[]
 * xref:aws-cloudtrail-source.adoc[]
 * xref:aws-cloudwatch-sink.adoc[]
-* xref:aws-ddb-experimental-sink.adoc[]
 * xref:aws-ddb-sink.adoc[]
 * xref:aws-ddb-streams-source.adoc[]
 * xref:aws-ec2-sink.adoc[]
@@ -15,7 +14,6 @@
 * xref:aws-redshift-sink.adoc[]
 * xref:aws-redshift-source.adoc[]
 * xref:aws-s3-cdc-source.adoc[]
-* xref:aws-s3-experimental-source.adoc[]
 * xref:aws-s3-sink.adoc[]
 * xref:aws-s3-source.adoc[]
 * xref:aws-s3-streaming-upload-sink.adoc[]
diff --git a/kamelets/aws-ddb-experimental-sink.kamelet.yaml 
b/kamelets/aws-ddb-experimental-sink.kamelet.yaml
deleted file mode 100644
index d2739afa..00000000
--- a/kamelets/aws-ddb-experimental-sink.kamelet.yaml
+++ /dev/null
@@ -1,149 +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.
-# ---------------------------------------------------------------------------
-
-apiVersion: camel.apache.org/v1alpha1
-kind: Kamelet
-metadata:
-  name: aws-ddb-experimental-sink
-  annotations:
-    camel.apache.org/kamelet.support.level: "Experimental"
-    camel.apache.org/catalog.version: "4.0.0-SNAPSHOT"
-    camel.apache.org/kamelet.icon: 
"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNNzQuMTc0IDMxLjgwN2w3LjQzNyA1LjM2N3YtNy42MDJsLTcuNDgtOC43NjV2MTAuOTU3bC4wNDMuMDE1eiIvPjxwYXRoIGZpbGw9IiM1Mjk0Q0YiIGQ9Ik01OS44MzggODUuNjY2bDE0LjI5My03LjE0NlYyMC43OTFsLTE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMjA1Qjk4IiBkPSJNMzkuNDk2IDg1LjY2NkwyNS4yMDMgNzguNTJWMjAuNzkxbDE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMkQ3Mk
 [...]
-    camel.apache.org/provider: "Apache Software Foundation"
-    camel.apache.org/kamelet.group: "AWS DynamoDB Streams"
-    camel.apache.org/kamelet.namespace: "AWS"
-  labels:
-    camel.apache.org/kamelet.type: "sink"
-spec:
-  definition:
-    title: "AWS DynamoDB Experimental Sink"
-    description: |-
-      Send data to Amazon DynamoDB. The sent data inserts, updates, or deletes 
an item on the specified AWS DynamoDB table.
-
-      The basic authentication method for the AWS DynamoDB service is to 
specify an access key and a secret key. These parameters are optional because 
the Kamelet provides a default credentials provider.
-
-      If you use the default credentials provider, the DynamoDB client loads 
the credentials through this provider and doesn't use the basic authentication 
method.
-
-      This Kamelet expects a JSON-formatted body and it must include the 
primary key values that define the DynamoDB item. The mapping between the JSON 
fields and table attribute values is done by key. For example, for  
'{"username":"oscerd", "city":"Rome"}' input, the Kamelet inserts or update an 
item in the specified AWS DynamoDB table and sets the values for the 'username' 
and 'city' attributes.
-      
-      This Kamelet supports experimental input format to specify the data type 
that that is given to this sink. The Kamelet will do best effort to convert the 
provided input type to the required input for the sink.
-    required:
-      - table
-      - region
-    type: object
-    properties:
-      table:
-        title: Table
-        description: The name of the DynamoDB table.
-        type: string
-      accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
-        x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
-      secretKey:
-        title: Secret Key
-        description: The secret key obtained from AWS.
-        type: string
-        format: password
-        x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
-      region:
-        title: AWS Region
-        description: The AWS region to access.
-        type: string
-        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", 
"ca-central-1", "eu-central-1", "us-iso-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", "us-gov-west-1", "ap-southeast-1", 
"ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", 
"cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
-      operation:
-        title: Operation
-        description: "The operation to perform. The options are PutItem, 
UpdateItem, or DeleteItem."
-        type: string
-        default: PutItem
-        example: PutItem
-      writeCapacity:
-        title: Write Capacity
-        description: The provisioned throughput to reserve for writing 
resources to your table.
-        type: integer
-        default: 1
-      useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the DynamoDB client loads credentials through a 
default credentials provider. If false, it uses the basic authentication method 
(access key and secret key).
-        type: boolean
-        x-descriptors:
-          - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false
-      uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must 
also select the `overrideEndpoint` option.
-        type: string
-      overrideEndpoint:
-        title: Endpoint Overwrite
-        description: Select this option to override the endpoint URI. To use 
this option, you must also provide a URI for the `uriEndpointOverride` option.
-        type: boolean
-        x-descriptors:
-          - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false
-      inputFormat:
-        title: Input Type
-        description: Specify the input type for this Kamelet. The Kamelet will 
automatically apply conversion logic in order to transform message content to 
this data type.
-        type: string
-        default: json
-        example: json
-  types:
-    in:
-      mediaType: application/json
-  dependencies:
-  - mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.0-SNAPSHOT
-  - "camel:core"
-  - "camel:jackson"
-  - "camel:aws2-ddb"
-  - "camel:kamelet"
-  template:
-    beans:
-    - name: dataTypeRegistry
-      type: 
"#class:org.apache.camel.kamelets.utils.format.DefaultDataTypeRegistry"
-    - name: inputTypeProcessor
-      type: "#class:org.apache.camel.kamelets.utils.format.DataTypeProcessor"
-      property:
-        - key: scheme
-          value: 'aws2-ddb'
-        - key: format
-          value: '{{inputFormat}}'
-        - key: registry
-          value: '#bean:{{dataTypeRegistry}}'
-    from:
-      uri: "kamelet:source"
-      steps:
-      - set-property:
-          name: operation
-          constant: "{{operation}}"
-      - process:
-          ref: "{{inputTypeProcessor}}"
-      - to:
-          uri: "aws2-ddb:{{table}}"
-          parameters:
-            secretKey: "{{?secretKey}}"
-            accessKey: "{{?accessKey}}"
-            region: "{{region}}"
-            operation: "{{operation}}"
-            writeCapacity: "{{?writeCapacity}}"
-            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
-            uriEndpointOverride: "{{?uriEndpointOverride}}"
-            overrideEndpoint: "{{overrideEndpoint}}"
diff --git a/kamelets/aws-ddb-sink.kamelet.yaml 
b/kamelets/aws-ddb-sink.kamelet.yaml
index bc7a2933..07a7c3cb 100644
--- a/kamelets/aws-ddb-sink.kamelet.yaml
+++ b/kamelets/aws-ddb-sink.kamelet.yaml
@@ -38,7 +38,7 @@ spec:
 
       If you use the default credentials provider, the DynamoDB client loads 
the credentials through this provider and doesn't use the basic authentication 
method.
 
-      This Kamelet expects a JSON-formatted body and it must include the 
primary key values that define the DynamoDB item. The mapping between the JSON 
fields and table attribute values is done by key. For example, for  
'{"username":"oscerd", "city":"Rome"}' input, the Kamelet inserts or update an 
item in the specified AWS DynamoDB table and sets the values for the 'username' 
and 'city' attributes. 
+      This Kamelet expects a JSON-formatted body and it must include the 
primary key values that define the DynamoDB item. The mapping between the JSON 
fields and table attribute values is done by key. For example, for  
'{"username":"oscerd", "city":"Rome"}' input, the Kamelet inserts or update an 
item in the specified AWS DynamoDB table and sets the values for the 'username' 
and 'city' attributes.
     required:
       - table
       - region
@@ -108,17 +108,26 @@ spec:
   - "camel:aws2-ddb"
   - "camel:kamelet"
   template:
+    beans:
+      - name: dataTypeRegistry
+        type: 
"#class:org.apache.camel.kamelets.utils.format.DefaultDataTypeRegistry"
+      - name: dataTypeProcessor
+        type: "#class:org.apache.camel.kamelets.utils.format.DataTypeProcessor"
+        property:
+          - key: scheme
+            value: 'aws2-ddb'
+          - key: format
+            value: 'json'
+          - key: registry
+            value: '#bean:{{dataTypeRegistry}}'
     from:
       uri: "kamelet:source"
       steps:
       - set-property:
           name: operation
           constant: "{{operation}}"
-      - unmarshal:
-          json:
-            library: Jackson
-            unmarshalType: com.fasterxml.jackson.databind.JsonNode
-      - bean: 
"org.apache.camel.kamelets.utils.transform.aws.ddb.JsonToDdbModelConverter"
+      - process:
+          ref: "{{dataTypeProcessor}}"
       - to:
           uri: "aws2-ddb:{{table}}"
           parameters:
diff --git a/kamelets/aws-s3-experimental-source.kamelet.yaml 
b/kamelets/aws-s3-experimental-source.kamelet.yaml
deleted file mode 100644
index af435540..00000000
--- a/kamelets/aws-s3-experimental-source.kamelet.yaml
+++ /dev/null
@@ -1,168 +0,0 @@
-apiVersion: camel.apache.org/v1alpha1
-kind: Kamelet
-metadata:
-  name: aws-s3-experimental-source
-  annotations:
-    camel.apache.org/kamelet.support.level: "Experimental"
-    camel.apache.org/catalog.version: "4.0.0-SNAPSHOT"
-    camel.apache.org/kamelet.icon: 
"data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIG
 [...]
-    camel.apache.org/provider: "Apache Software Foundation"
-    camel.apache.org/kamelet.group: "AWS S3"
-    camel.apache.org/kamelet.namespace: "AWS"
-  labels:
-    camel.apache.org/kamelet.type: "source"
-spec:
-  definition:
-    title: "AWS S3 Experimental Source"
-    description: |-
-      Receive data from an Amazon S3 Bucket.
-
-      The basic authentication method for the S3 service is to specify an 
access key and a secret key. These parameters are optional because the Kamelet 
provides a default credentials provider.
-      
-      If you use the default credentials provider, the S3 client loads the 
credentials through this provider and doesn't use the basic authentication 
method.
-
-      Two headers will be duplicated with different names for clarity at sink 
level, CamelAwsS3Key will be duplicated into aws.s3.key and 
CamelAwsS3BucketName will be duplicated in aws.s3.bucket.name.
-      
-      This Kamelet supports experimental output format to specify the data 
type produced by this source. Users of the Kamelet are able to choose from 
different output types.
-    required:
-      - bucketNameOrArn
-      - region
-    type: object
-    properties:
-      bucketNameOrArn:
-        title: Bucket Name
-        description: The S3 Bucket name or Amazon Resource Name (ARN).
-        type: string
-      deleteAfterRead:
-        title: Auto-delete Objects
-        description: Specifies to delete objects after consuming them.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: true
-      accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
-        x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
-      secretKey:
-        title: Secret Key
-        description: The secret key obtained from AWS.
-        type: string
-        format: password
-        x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
-      region:
-        title: AWS Region
-        description: The AWS region to access.
-        type: string
-        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", 
"ca-central-1", "eu-central-1", "us-iso-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", "us-gov-west-1", "ap-southeast-1", 
"ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", 
"cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
-      autoCreateBucket:
-        title: Autocreate Bucket
-        description: Specifies to automatically create the S3 bucket.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false
-      includeBody:
-        title: Include Body
-        description: If true, the exchange is consumed and put into the body 
and closed. If false, the S3Object stream is put raw into the body and the 
headers are set with the S3 object metadata.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: true
-      prefix:
-        title: Prefix
-        description: The AWS S3 bucket prefix to consider while searching.
-        type: string
-        example: 'folder/'
-      ignoreBody:
-        title: Ignore Body
-        description: If true, the S3 Object body is ignored. Setting this to 
true overrides any behavior defined by the `includeBody` option. If false, the 
S3 object is put in the body.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false
-      useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the S3 client loads credentials through a 
default credentials provider. If false, it uses the basic authentication method 
(access key and secret key).
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false
-      uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must 
also select the `overrideEndpoint` option.
-        type: string
-      overrideEndpoint:
-        title: Endpoint Overwrite
-        description: Select this option to override the endpoint URI. To use 
this option, you must also provide a URI for the `uriEndpointOverride` option.
-        type: boolean
-        x-descriptors:
-          - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false
-      delay:
-        title: Delay
-        description: The number of milliseconds before the next poll of the 
selected bucket.
-        type: integer
-        default: 500
-      outputFormat:
-        title: Output Type
-        description: Choose the output type for this Kamelet. The Kamelet 
supports different output types and performs automatic message conversion 
according to this data type.
-        type: string
-        default: binary
-        example: binary
-  dependencies:
-    - "camel:core"
-    - "camel:aws2-s3"
-    - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.0-SNAPSHOT"
-    - "camel:kamelet"
-  template:
-    beans:
-      - name: dataTypeRegistry
-        type: 
"#class:org.apache.camel.kamelets.utils.format.DefaultDataTypeRegistry"
-      - name: outputTypeProcessor
-        type: "#class:org.apache.camel.kamelets.utils.format.DataTypeProcessor"
-        property:
-          - key: scheme
-            value: 'aws2-s3'
-          - key: format
-            value: '{{outputFormat}}'
-          - key: registry
-            value: '#bean:{{dataTypeRegistry}}'
-      - name: renameHeaders
-        type: 
"#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders"
-        property:
-          - key: prefix
-            value: 'CamelAwsS3'
-          - key: renamingPrefix
-            value: 'aws.s3.'
-          - key: mode
-            value: 'filtering'
-          - key: selectedHeaders
-            value: 'CamelAwsS3Key,CamelAwsS3BucketName'
-    from:
-      uri: "aws2-s3:{{bucketNameOrArn}}"
-      parameters:
-        autoCreateBucket: "{{autoCreateBucket}}"
-        secretKey: "{{?secretKey}}"
-        accessKey: "{{?accessKey}}"
-        region: "{{region}}"
-        includeBody: "{{includeBody}}"
-        ignoreBody: "{{ignoreBody}}"
-        deleteAfterRead: "{{deleteAfterRead}}"
-        prefix: "{{?prefix}}"
-        useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
-        uriEndpointOverride: "{{?uriEndpointOverride}}"
-        overrideEndpoint: "{{overrideEndpoint}}"
-        delay: "{{delay}}"
-      steps:
-      - process:
-          ref: "{{renameHeaders}}"
-      - process:
-          ref: "{{outputTypeProcessor}}"
-      - to: "kamelet:sink"
diff --git 
a/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
 
b/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
index 74d06922..e38d8e9d 100644
--- 
a/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
+++ 
b/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
@@ -16,21 +16,18 @@
  */
 package org.apache.camel.kamelets.catalog;
 
-import io.fabric8.camelk.v1alpha1.Kamelet;
+import java.util.List;
+import java.util.Map;
+
 import io.fabric8.camelk.v1alpha1.JSONSchemaProps;
+import io.fabric8.camelk.v1alpha1.Kamelet;
 import io.github.classgraph.ClassGraph;
 import org.apache.camel.kamelets.catalog.model.KameletTypeEnum;
 import org.apache.camel.tooling.model.ComponentModel;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.util.List;
-import java.util.Map;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class KameletsCatalogTest {
     static KameletsCatalog catalog;
@@ -43,20 +40,20 @@ public class KameletsCatalogTest {
     @Test
     void testGetKameletsName() throws Exception {
         List<String> names = catalog.getKameletsName();
-        assertTrue(!names.isEmpty());
+        assertFalse(names.isEmpty());
     }
 
     @Test
     void testGetKamelets() throws Exception {
         Map<String, Kamelet> kamelets = catalog.getKamelets();
-        assertTrue(!kamelets.isEmpty());
+        assertFalse(kamelets.isEmpty());
     }
-    
+
     @Test
     void testGetKameletsDefinition() throws Exception {
         JSONSchemaProps props = catalog.getKameletDefinition("aws-sqs-source");
         assertEquals(14, props.getProperties().keySet().size());
-        assertTrue(props.getProperties().keySet().contains("queueNameOrArn"));
+        assertTrue(props.getProperties().containsKey("queueNameOrArn"));
     }
 
     @Test
@@ -75,7 +72,7 @@ public class KameletsCatalogTest {
     @Test
     void testGetKameletsByProvider() throws Exception {
         List<Kamelet> c = catalog.getKameletByProvider("Apache Software 
Foundation");
-        assertTrue(!c.isEmpty());
+        assertFalse(c.isEmpty());
         c = catalog.getKameletByProvider("Eclipse");
         assertTrue(c.isEmpty());
     }
@@ -83,19 +80,19 @@ public class KameletsCatalogTest {
     @Test
     void testGetKameletsByType() throws Exception {
         List<Kamelet> c = 
catalog.getKameletsByType(KameletTypeEnum.SOURCE.type());
-        assertTrue(!c.isEmpty());
+        assertFalse(c.isEmpty());
         c = catalog.getKameletsByType(KameletTypeEnum.SINK.type());
-        assertTrue(!c.isEmpty());
+        assertFalse(c.isEmpty());
         c = catalog.getKameletsByType(KameletTypeEnum.ACTION.type());
-        assertTrue(!c.isEmpty());
+        assertFalse(c.isEmpty());
     }
 
     @Test
     void testGetKameletsByGroup() throws Exception {
         List<Kamelet> c = catalog.getKameletsByGroups("AWS S3");
-        assertTrue(!c.isEmpty());
+        assertFalse(c.isEmpty());
         c = catalog.getKameletsByGroups("AWS SQS");
-        assertTrue(!c.isEmpty());
+        assertFalse(c.isEmpty());
         c = catalog.getKameletsByGroups("Not-existing-group");
         assertTrue(c.isEmpty());
     }
@@ -103,8 +100,8 @@ public class KameletsCatalogTest {
     @Test
     void testGetKameletsByNamespace() throws Exception {
         List<Kamelet> c = catalog.getKameletsByNamespace("AWS");
-        assertTrue(!c.isEmpty());
-        assertTrue(c.size() == 27);
+        assertFalse(c.isEmpty());
+        assertEquals(25, c.size());
         c = catalog.getKameletsByGroups("Not-existing-group");
         assertTrue(c.isEmpty());
     }
@@ -123,7 +120,7 @@ public class KameletsCatalogTest {
         Map<String, Object> template = 
catalog.getKameletTemplate("aws-sqs-source");
         assertNotNull(template);
     }
-    
+
     @Test
     void testAllKameletFilesLoaded() throws Exception {
         int numberOfKameletFiles = new ClassGraph().acceptPaths("/" + 
KameletsCatalog.KAMELETS_DIR + "/").scan().getAllResources().size();
@@ -263,7 +260,6 @@ public class KameletsCatalogTest {
         assertEquals(expected, headers.size());
     }
 
-
     @Test
     void testGetKameletScheme() throws Exception {
         assertEquals("aws2-s3", catalog.getKameletScheme("aws-s3"));
diff --git 
a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/aws/ddb/JsonToDdbModelConverter.java
 
b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/aws/ddb/JsonToDdbModelConverter.java
deleted file mode 100644
index 2a203ed0..00000000
--- 
a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/aws/ddb/JsonToDdbModelConverter.java
+++ /dev/null
@@ -1,201 +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.kamelets.utils.transform.aws.ddb;
-
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangeProperty;
-import org.apache.camel.InvalidPayloadException;
-import org.apache.camel.component.aws2.ddb.Ddb2Constants;
-import org.apache.camel.component.aws2.ddb.Ddb2Operations;
-import software.amazon.awssdk.services.dynamodb.model.AttributeAction;
-import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
-import software.amazon.awssdk.services.dynamodb.model.AttributeValueUpdate;
-import software.amazon.awssdk.services.dynamodb.model.ReturnValue;
-
-/**
- * Maps Json body to DynamoDB attribute value map and sets the attribute map 
as Camel DynamoDB header entries.
- *
- * Json property names map to attribute keys and Json property values map to 
attribute values.
- *
- * During mapping the Json property types resolve to the respective attribute 
types ({@code String, StringSet, Boolean, Number, NumberSet, Map, Null}).
- * Primitive typed arrays in Json get mapped to {@code StringSet} or {@code 
NumberSet} attribute values.
- *
- * For PutItem operation the Json body defines all item attributes.
- *
- * For DeleteItem operation the Json body defines only the primary key 
attributes that identify the item to delete.
- *
- * For UpdateItem operation the Json body defines both key attributes to 
identify the item to be updated and all item attributes tht get updated on the 
item.
- *
- * The given Json body can use "key" and "item" as top level properties.
- * Both define a Json object that will be mapped to respective attribute value 
maps:
- * <pre>{@code
- * {
- *   "key": {},
- *   "item": {}
- * }
- * }
- * </pre>
- * The converter will extract the objects and set respective attribute value 
maps as header entries.
- * This is a comfortable way to define different key and item attribute value 
maps e.g. on UpdateItem operation.
- *
- * In case key and item attribute value maps are identical you can omit the 
special top level properties completely.
- * The converter will map the whole Json body as is then and use it as source 
for the attribute value map.
- */
-public class JsonToDdbModelConverter {
-
-    public String process(@ExchangeProperty("operation") String operation, 
Exchange exchange) throws InvalidPayloadException {
-        if (exchange.getMessage().getHeaders().containsKey(Ddb2Constants.ITEM) 
||
-                
exchange.getMessage().getHeaders().containsKey(Ddb2Constants.KEY)) {
-            return "";
-        }
-
-        ObjectMapper mapper = new ObjectMapper();
-
-        JsonNode jsonBody = 
exchange.getMessage().getMandatoryBody(JsonNode.class);
-
-        JsonNode key = jsonBody.get("key");
-        JsonNode item = jsonBody.get("item");
-
-        Map<String, Object> keyProps;
-        if (key != null) {
-            keyProps = mapper.convertValue(key, new TypeReference<Map<String, 
Object>>(){});
-        } else {
-            keyProps = mapper.convertValue(jsonBody, new 
TypeReference<Map<String, Object>>(){});
-        }
-
-        Map<String, Object> itemProps;
-        if (item != null) {
-            itemProps = mapper.convertValue(item, new 
TypeReference<Map<String, Object>>(){});
-        } else {
-            itemProps = keyProps;
-        }
-
-        final Map<String, AttributeValue> keyMap = 
getAttributeValueMap(keyProps);
-
-        switch (Ddb2Operations.valueOf(operation)) {
-            case PutItem:
-                exchange.getMessage().setHeader(Ddb2Constants.OPERATION, 
Ddb2Operations.PutItem);
-                exchange.getMessage().setHeader(Ddb2Constants.ITEM, 
getAttributeValueMap(itemProps));
-                setHeaderIfNotPresent(Ddb2Constants.RETURN_VALUES, 
ReturnValue.ALL_OLD.toString(), exchange);
-                break;
-            case UpdateItem:
-                exchange.getMessage().setHeader(Ddb2Constants.OPERATION, 
Ddb2Operations.UpdateItem);
-                exchange.getMessage().setHeader(Ddb2Constants.KEY, keyMap);
-                exchange.getMessage().setHeader(Ddb2Constants.UPDATE_VALUES, 
getAttributeValueUpdateMap(itemProps));
-                setHeaderIfNotPresent(Ddb2Constants.RETURN_VALUES, 
ReturnValue.ALL_NEW.toString(), exchange);
-                break;
-            case DeleteItem:
-                exchange.getMessage().setHeader(Ddb2Constants.OPERATION, 
Ddb2Operations.DeleteItem);
-                exchange.getMessage().setHeader(Ddb2Constants.KEY, keyMap);
-                setHeaderIfNotPresent(Ddb2Constants.RETURN_VALUES, 
ReturnValue.ALL_OLD.toString(), exchange);
-                break;
-            default:
-                throw new 
UnsupportedOperationException(String.format("Unsupported operation '%s'", 
operation));
-        }
-
-        return "";
-    }
-
-    private void setHeaderIfNotPresent(String headerName, Object value, 
Exchange exchange) {
-        exchange.getMessage().setHeader(headerName, value);
-    }
-
-    private Map<String, AttributeValue> getAttributeValueMap(Map<String, 
Object> body) {
-        final Map<String, AttributeValue> attributeValueMap = new 
LinkedHashMap<>();
-
-        for (Map.Entry<String, Object> attribute : body.entrySet()) {
-            attributeValueMap.put(attribute.getKey(), 
getAttributeValue(attribute.getValue()));
-        }
-
-        return attributeValueMap;
-    }
-
-    private Map<String, AttributeValueUpdate> 
getAttributeValueUpdateMap(Map<String, Object> body) {
-        final Map<String, AttributeValueUpdate> attributeValueMap = new 
LinkedHashMap<>();
-
-        for (Map.Entry<String, Object> attribute : body.entrySet()) {
-            attributeValueMap.put(attribute.getKey(), 
getAttributeValueUpdate(attribute.getValue()));
-        }
-
-        return attributeValueMap;
-    }
-
-    private static AttributeValue getAttributeValue(Object value) {
-        if (value == null) {
-            return AttributeValue.builder().nul(true).build();
-        }
-
-        if (value instanceof String) {
-            return AttributeValue.builder().s(value.toString()).build();
-        }
-
-        if (value instanceof Integer) {
-            return AttributeValue.builder().n(value.toString()).build();
-        }
-
-        if (value instanceof Boolean) {
-            return AttributeValue.builder().bool((Boolean) value).build();
-        }
-
-        if (value instanceof String[]) {
-            return AttributeValue.builder().ss((String[]) value).build();
-        }
-
-        if (value instanceof int[]) {
-            return AttributeValue.builder().ns(Stream.of((int[]) 
value).map(Object::toString).collect(Collectors.toList())).build();
-        }
-
-        if (value instanceof List) {
-            List<?> values = ((List<?>) value);
-
-            if (values.isEmpty()) {
-                return AttributeValue.builder().ss().build();
-            } else if (values.get(0) instanceof Integer) {
-                return 
AttributeValue.builder().ns(values.stream().map(Object::toString).collect(Collectors.toList())).build();
-            } else {
-                return 
AttributeValue.builder().ss(values.stream().map(Object::toString).collect(Collectors.toList())).build();
-            }
-        }
-
-        if (value instanceof Map) {
-            Map<String, AttributeValue> nestedAttributes = new 
LinkedHashMap<>();
-
-            for (Map.Entry<?, ?> nested : ((Map<?, ?>) value).entrySet()) {
-                nestedAttributes.put(nested.getKey().toString(), 
getAttributeValue(nested.getValue()));
-            }
-
-            return AttributeValue.builder().m(nestedAttributes).build();
-        }
-
-        return AttributeValue.builder().s(value.toString()).build();
-    }
-
-    private static AttributeValueUpdate getAttributeValueUpdate(Object value) {
-        return AttributeValueUpdate.builder()
-                .action(AttributeAction.PUT)
-                .value(getAttributeValue(value)).build();
-    }
-}
\ No newline at end of file
diff --git 
a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/aws/ddb/JsonToDdbModelConverterTest.java
 
b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/aws/ddb/JsonToDdbModelConverterTest.java
deleted file mode 100644
index e88dce4e..00000000
--- 
a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/aws/ddb/JsonToDdbModelConverterTest.java
+++ /dev/null
@@ -1,184 +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.kamelets.utils.transform.aws.ddb;
-
-import java.util.Map;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.camel.Exchange;
-import org.apache.camel.component.aws2.ddb.Ddb2Constants;
-import org.apache.camel.component.aws2.ddb.Ddb2Operations;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.support.DefaultExchange;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import software.amazon.awssdk.services.dynamodb.model.AttributeAction;
-import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
-import software.amazon.awssdk.services.dynamodb.model.AttributeValueUpdate;
-import software.amazon.awssdk.services.dynamodb.model.ReturnValue;
-
-class JsonToDdbModelConverterTest {
-
-    private DefaultCamelContext camelContext;
-
-    private final ObjectMapper mapper = new ObjectMapper();
-
-    private final JsonToDdbModelConverter processor = new 
JsonToDdbModelConverter();
-
-    private final String keyJson = "{" +
-            "\"name\": \"Rajesh Koothrappali\"" +
-            "}";
-
-    private final String itemJson = "{" +
-            "\"name\": \"Rajesh Koothrappali\"," +
-            "\"age\": 29," +
-            "\"super-heroes\": [\"batman\", \"spiderman\", \"wonderwoman\"]," +
-            "\"issues\": [5, 3, 9, 1]," +
-            "\"girlfriend\": null," +
-            "\"doctorate\": true" +
-            "}";
-
-    @BeforeEach
-    void setup() {
-        this.camelContext = new DefaultCamelContext();
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    void shouldMapPutItemHeaders() throws Exception {
-        Exchange exchange = new DefaultExchange(camelContext);
-
-        exchange.getMessage().setBody(mapper.readTree(itemJson));
-
-        processor.process(Ddb2Operations.PutItem.name(), exchange);
-
-        Assertions.assertTrue(exchange.getMessage().hasHeaders());
-        Assertions.assertEquals(Ddb2Operations.PutItem, 
exchange.getMessage().getHeader(Ddb2Constants.OPERATION));
-        Assertions.assertEquals(ReturnValue.ALL_OLD.toString(), 
exchange.getMessage().getHeader(Ddb2Constants.RETURN_VALUES));
-
-        
assertAttributeValueMap(exchange.getMessage().getHeader(Ddb2Constants.ITEM, 
Map.class));
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    void shouldMapUpdateItemHeaders() throws Exception {
-        Exchange exchange = new DefaultExchange(camelContext);
-
-        exchange.getMessage().setBody(mapper.readTree("{\"key\": " + keyJson + 
", \"item\": " + itemJson + "}"));
-
-        processor.process(Ddb2Operations.UpdateItem.name(), exchange);
-
-        Assertions.assertTrue(exchange.getMessage().hasHeaders());
-        Assertions.assertEquals(Ddb2Operations.UpdateItem, 
exchange.getMessage().getHeader(Ddb2Constants.OPERATION));
-        Assertions.assertEquals(ReturnValue.ALL_NEW.toString(), 
exchange.getMessage().getHeader(Ddb2Constants.RETURN_VALUES));
-
-        Map<String, AttributeValue> attributeValueMap = 
exchange.getMessage().getHeader(Ddb2Constants.KEY, Map.class);
-        Assertions.assertEquals(1L, attributeValueMap.size());
-        Assertions.assertEquals(AttributeValue.builder().s("Rajesh 
Koothrappali").build(), attributeValueMap.get("name"));
-
-        
assertAttributeValueUpdateMap(exchange.getMessage().getHeader(Ddb2Constants.UPDATE_VALUES,
 Map.class));
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    void shouldMapDeleteItemHeaders() throws Exception {
-        Exchange exchange = new DefaultExchange(camelContext);
-
-        exchange.getMessage().setBody(mapper.readTree("{\"key\": " + keyJson + 
"}"));
-
-        processor.process(Ddb2Operations.DeleteItem.name(), exchange);
-
-        Assertions.assertTrue(exchange.getMessage().hasHeaders());
-        Assertions.assertEquals(Ddb2Operations.DeleteItem, 
exchange.getMessage().getHeader(Ddb2Constants.OPERATION));
-        Assertions.assertEquals(ReturnValue.ALL_OLD.toString(), 
exchange.getMessage().getHeader(Ddb2Constants.RETURN_VALUES));
-
-        Map<String, AttributeValue> attributeValueMap = 
exchange.getMessage().getHeader(Ddb2Constants.KEY, Map.class);
-        Assertions.assertEquals(1L, attributeValueMap.size());
-        Assertions.assertEquals(AttributeValue.builder().s("Rajesh 
Koothrappali").build(), attributeValueMap.get("name"));
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    void shouldMapNestedObjects() throws Exception {
-        Exchange exchange = new DefaultExchange(camelContext);
-
-        exchange.getMessage().setBody(mapper.readTree("{\"user\":" + itemJson 
+ "}"));
-
-        processor.process(Ddb2Operations.PutItem.name(), exchange);
-
-        Assertions.assertTrue(exchange.getMessage().hasHeaders());
-        Assertions.assertEquals(Ddb2Operations.PutItem, 
exchange.getMessage().getHeader(Ddb2Constants.OPERATION));
-        Assertions.assertEquals(ReturnValue.ALL_OLD.toString(), 
exchange.getMessage().getHeader(Ddb2Constants.RETURN_VALUES));
-
-        Map<String, AttributeValue> attributeValueMap = 
exchange.getMessage().getHeader(Ddb2Constants.ITEM, Map.class);
-        Assertions.assertEquals(1L, attributeValueMap.size());
-
-        
Assertions.assertEquals("AttributeValue(M={name=AttributeValue(S=Rajesh 
Koothrappali), " +
-                "age=AttributeValue(N=29), " +
-                "super-heroes=AttributeValue(SS=[batman, spiderman, 
wonderwoman]), " +
-                "issues=AttributeValue(NS=[5, 3, 9, 1]), " +
-                "girlfriend=AttributeValue(NUL=true), " +
-                "doctorate=AttributeValue(BOOL=true)})", 
attributeValueMap.get("user").toString());
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    void shouldMapEmptyJson() throws Exception {
-        Exchange exchange = new DefaultExchange(camelContext);
-
-        exchange.getMessage().setBody(mapper.readTree("{}"));
-
-        processor.process(Ddb2Operations.PutItem.name(), exchange);
-
-        Assertions.assertTrue(exchange.getMessage().hasHeaders());
-        Assertions.assertEquals(Ddb2Operations.PutItem, 
exchange.getMessage().getHeader(Ddb2Constants.OPERATION));
-        Assertions.assertEquals(ReturnValue.ALL_OLD.toString(), 
exchange.getMessage().getHeader(Ddb2Constants.RETURN_VALUES));
-
-        Map<String, AttributeValue> attributeValueMap = 
exchange.getMessage().getHeader(Ddb2Constants.ITEM, Map.class);
-        Assertions.assertEquals(0L, attributeValueMap.size());
-    }
-
-    @Test()
-    void shouldFailForUnsupportedOperation() throws Exception {
-        Exchange exchange = new DefaultExchange(camelContext);
-
-        exchange.getMessage().setBody(mapper.readTree("{}"));
-
-        Assertions.assertThrows(UnsupportedOperationException.class, () -> 
processor.process(Ddb2Operations.BatchGetItems.name(), exchange));
-    }
-
-    private void assertAttributeValueMap(Map<String, AttributeValue> 
attributeValueMap) {
-        Assertions.assertEquals(6L, attributeValueMap.size());
-        Assertions.assertEquals(AttributeValue.builder().s("Rajesh 
Koothrappali").build(), attributeValueMap.get("name"));
-        Assertions.assertEquals(AttributeValue.builder().n("29").build(), 
attributeValueMap.get("age"));
-        Assertions.assertEquals(AttributeValue.builder().ss("batman", 
"spiderman", "wonderwoman").build(), attributeValueMap.get("super-heroes"));
-        Assertions.assertEquals(AttributeValue.builder().ns("5", "3", "9", 
"1").build(), attributeValueMap.get("issues"));
-        Assertions.assertEquals(AttributeValue.builder().nul(true).build(), 
attributeValueMap.get("girlfriend"));
-        Assertions.assertEquals(AttributeValue.builder().bool(true).build(), 
attributeValueMap.get("doctorate"));
-    }
-
-    private void assertAttributeValueUpdateMap(Map<String, 
AttributeValueUpdate> attributeValueMap) {
-        Assertions.assertEquals(6L, attributeValueMap.size());
-        
Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().s("Rajesh
 Koothrappali").build()).action(AttributeAction.PUT).build(), 
attributeValueMap.get("name"));
-        
Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().n("29").build()).action(AttributeAction.PUT).build(),
 attributeValueMap.get("age"));
-        
Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().ss("batman",
 "spiderman", "wonderwoman").build()).action(AttributeAction.PUT).build(), 
attributeValueMap.get("super-heroes"));
-        
Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().ns("5",
 "3", "9", "1").build()).action(AttributeAction.PUT).build(), 
attributeValueMap.get("issues"));
-        
Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().nul(true).build()).action(AttributeAction.PUT).build(),
 attributeValueMap.get("girlfriend"));
-        
Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().bool(true).build()).action(AttributeAction.PUT).build(),
 attributeValueMap.get("doctorate"));
-    }
-}
\ No newline at end of file
diff --git 
a/library/camel-kamelets/src/main/resources/kamelets/aws-ddb-experimental-sink.kamelet.yaml
 
b/library/camel-kamelets/src/main/resources/kamelets/aws-ddb-experimental-sink.kamelet.yaml
deleted file mode 100644
index d2739afa..00000000
--- 
a/library/camel-kamelets/src/main/resources/kamelets/aws-ddb-experimental-sink.kamelet.yaml
+++ /dev/null
@@ -1,149 +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.
-# ---------------------------------------------------------------------------
-
-apiVersion: camel.apache.org/v1alpha1
-kind: Kamelet
-metadata:
-  name: aws-ddb-experimental-sink
-  annotations:
-    camel.apache.org/kamelet.support.level: "Experimental"
-    camel.apache.org/catalog.version: "4.0.0-SNAPSHOT"
-    camel.apache.org/kamelet.icon: 
"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNNzQuMTc0IDMxLjgwN2w3LjQzNyA1LjM2N3YtNy42MDJsLTcuNDgtOC43NjV2MTAuOTU3bC4wNDMuMDE1eiIvPjxwYXRoIGZpbGw9IiM1Mjk0Q0YiIGQ9Ik01OS44MzggODUuNjY2bDE0LjI5My03LjE0NlYyMC43OTFsLTE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMjA1Qjk4IiBkPSJNMzkuNDk2IDg1LjY2NkwyNS4yMDMgNzguNTJWMjAuNzkxbDE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMkQ3Mk
 [...]
-    camel.apache.org/provider: "Apache Software Foundation"
-    camel.apache.org/kamelet.group: "AWS DynamoDB Streams"
-    camel.apache.org/kamelet.namespace: "AWS"
-  labels:
-    camel.apache.org/kamelet.type: "sink"
-spec:
-  definition:
-    title: "AWS DynamoDB Experimental Sink"
-    description: |-
-      Send data to Amazon DynamoDB. The sent data inserts, updates, or deletes 
an item on the specified AWS DynamoDB table.
-
-      The basic authentication method for the AWS DynamoDB service is to 
specify an access key and a secret key. These parameters are optional because 
the Kamelet provides a default credentials provider.
-
-      If you use the default credentials provider, the DynamoDB client loads 
the credentials through this provider and doesn't use the basic authentication 
method.
-
-      This Kamelet expects a JSON-formatted body and it must include the 
primary key values that define the DynamoDB item. The mapping between the JSON 
fields and table attribute values is done by key. For example, for  
'{"username":"oscerd", "city":"Rome"}' input, the Kamelet inserts or update an 
item in the specified AWS DynamoDB table and sets the values for the 'username' 
and 'city' attributes.
-      
-      This Kamelet supports experimental input format to specify the data type 
that that is given to this sink. The Kamelet will do best effort to convert the 
provided input type to the required input for the sink.
-    required:
-      - table
-      - region
-    type: object
-    properties:
-      table:
-        title: Table
-        description: The name of the DynamoDB table.
-        type: string
-      accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
-        x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
-      secretKey:
-        title: Secret Key
-        description: The secret key obtained from AWS.
-        type: string
-        format: password
-        x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
-      region:
-        title: AWS Region
-        description: The AWS region to access.
-        type: string
-        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", 
"ca-central-1", "eu-central-1", "us-iso-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", "us-gov-west-1", "ap-southeast-1", 
"ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", 
"cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
-      operation:
-        title: Operation
-        description: "The operation to perform. The options are PutItem, 
UpdateItem, or DeleteItem."
-        type: string
-        default: PutItem
-        example: PutItem
-      writeCapacity:
-        title: Write Capacity
-        description: The provisioned throughput to reserve for writing 
resources to your table.
-        type: integer
-        default: 1
-      useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the DynamoDB client loads credentials through a 
default credentials provider. If false, it uses the basic authentication method 
(access key and secret key).
-        type: boolean
-        x-descriptors:
-          - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false
-      uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must 
also select the `overrideEndpoint` option.
-        type: string
-      overrideEndpoint:
-        title: Endpoint Overwrite
-        description: Select this option to override the endpoint URI. To use 
this option, you must also provide a URI for the `uriEndpointOverride` option.
-        type: boolean
-        x-descriptors:
-          - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false
-      inputFormat:
-        title: Input Type
-        description: Specify the input type for this Kamelet. The Kamelet will 
automatically apply conversion logic in order to transform message content to 
this data type.
-        type: string
-        default: json
-        example: json
-  types:
-    in:
-      mediaType: application/json
-  dependencies:
-  - mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.0-SNAPSHOT
-  - "camel:core"
-  - "camel:jackson"
-  - "camel:aws2-ddb"
-  - "camel:kamelet"
-  template:
-    beans:
-    - name: dataTypeRegistry
-      type: 
"#class:org.apache.camel.kamelets.utils.format.DefaultDataTypeRegistry"
-    - name: inputTypeProcessor
-      type: "#class:org.apache.camel.kamelets.utils.format.DataTypeProcessor"
-      property:
-        - key: scheme
-          value: 'aws2-ddb'
-        - key: format
-          value: '{{inputFormat}}'
-        - key: registry
-          value: '#bean:{{dataTypeRegistry}}'
-    from:
-      uri: "kamelet:source"
-      steps:
-      - set-property:
-          name: operation
-          constant: "{{operation}}"
-      - process:
-          ref: "{{inputTypeProcessor}}"
-      - to:
-          uri: "aws2-ddb:{{table}}"
-          parameters:
-            secretKey: "{{?secretKey}}"
-            accessKey: "{{?accessKey}}"
-            region: "{{region}}"
-            operation: "{{operation}}"
-            writeCapacity: "{{?writeCapacity}}"
-            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
-            uriEndpointOverride: "{{?uriEndpointOverride}}"
-            overrideEndpoint: "{{overrideEndpoint}}"
diff --git 
a/library/camel-kamelets/src/main/resources/kamelets/aws-ddb-sink.kamelet.yaml 
b/library/camel-kamelets/src/main/resources/kamelets/aws-ddb-sink.kamelet.yaml
index bc7a2933..07a7c3cb 100644
--- 
a/library/camel-kamelets/src/main/resources/kamelets/aws-ddb-sink.kamelet.yaml
+++ 
b/library/camel-kamelets/src/main/resources/kamelets/aws-ddb-sink.kamelet.yaml
@@ -38,7 +38,7 @@ spec:
 
       If you use the default credentials provider, the DynamoDB client loads 
the credentials through this provider and doesn't use the basic authentication 
method.
 
-      This Kamelet expects a JSON-formatted body and it must include the 
primary key values that define the DynamoDB item. The mapping between the JSON 
fields and table attribute values is done by key. For example, for  
'{"username":"oscerd", "city":"Rome"}' input, the Kamelet inserts or update an 
item in the specified AWS DynamoDB table and sets the values for the 'username' 
and 'city' attributes. 
+      This Kamelet expects a JSON-formatted body and it must include the 
primary key values that define the DynamoDB item. The mapping between the JSON 
fields and table attribute values is done by key. For example, for  
'{"username":"oscerd", "city":"Rome"}' input, the Kamelet inserts or update an 
item in the specified AWS DynamoDB table and sets the values for the 'username' 
and 'city' attributes.
     required:
       - table
       - region
@@ -108,17 +108,26 @@ spec:
   - "camel:aws2-ddb"
   - "camel:kamelet"
   template:
+    beans:
+      - name: dataTypeRegistry
+        type: 
"#class:org.apache.camel.kamelets.utils.format.DefaultDataTypeRegistry"
+      - name: dataTypeProcessor
+        type: "#class:org.apache.camel.kamelets.utils.format.DataTypeProcessor"
+        property:
+          - key: scheme
+            value: 'aws2-ddb'
+          - key: format
+            value: 'json'
+          - key: registry
+            value: '#bean:{{dataTypeRegistry}}'
     from:
       uri: "kamelet:source"
       steps:
       - set-property:
           name: operation
           constant: "{{operation}}"
-      - unmarshal:
-          json:
-            library: Jackson
-            unmarshalType: com.fasterxml.jackson.databind.JsonNode
-      - bean: 
"org.apache.camel.kamelets.utils.transform.aws.ddb.JsonToDdbModelConverter"
+      - process:
+          ref: "{{dataTypeProcessor}}"
       - to:
           uri: "aws2-ddb:{{table}}"
           parameters:
diff --git 
a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-experimental-source.kamelet.yaml
 
b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-experimental-source.kamelet.yaml
deleted file mode 100644
index af435540..00000000
--- 
a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-experimental-source.kamelet.yaml
+++ /dev/null
@@ -1,168 +0,0 @@
-apiVersion: camel.apache.org/v1alpha1
-kind: Kamelet
-metadata:
-  name: aws-s3-experimental-source
-  annotations:
-    camel.apache.org/kamelet.support.level: "Experimental"
-    camel.apache.org/catalog.version: "4.0.0-SNAPSHOT"
-    camel.apache.org/kamelet.icon: 
"data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIG
 [...]
-    camel.apache.org/provider: "Apache Software Foundation"
-    camel.apache.org/kamelet.group: "AWS S3"
-    camel.apache.org/kamelet.namespace: "AWS"
-  labels:
-    camel.apache.org/kamelet.type: "source"
-spec:
-  definition:
-    title: "AWS S3 Experimental Source"
-    description: |-
-      Receive data from an Amazon S3 Bucket.
-
-      The basic authentication method for the S3 service is to specify an 
access key and a secret key. These parameters are optional because the Kamelet 
provides a default credentials provider.
-      
-      If you use the default credentials provider, the S3 client loads the 
credentials through this provider and doesn't use the basic authentication 
method.
-
-      Two headers will be duplicated with different names for clarity at sink 
level, CamelAwsS3Key will be duplicated into aws.s3.key and 
CamelAwsS3BucketName will be duplicated in aws.s3.bucket.name.
-      
-      This Kamelet supports experimental output format to specify the data 
type produced by this source. Users of the Kamelet are able to choose from 
different output types.
-    required:
-      - bucketNameOrArn
-      - region
-    type: object
-    properties:
-      bucketNameOrArn:
-        title: Bucket Name
-        description: The S3 Bucket name or Amazon Resource Name (ARN).
-        type: string
-      deleteAfterRead:
-        title: Auto-delete Objects
-        description: Specifies to delete objects after consuming them.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: true
-      accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
-        x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
-      secretKey:
-        title: Secret Key
-        description: The secret key obtained from AWS.
-        type: string
-        format: password
-        x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
-      region:
-        title: AWS Region
-        description: The AWS region to access.
-        type: string
-        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", 
"ca-central-1", "eu-central-1", "us-iso-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", "us-gov-west-1", "ap-southeast-1", 
"ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", 
"cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
-      autoCreateBucket:
-        title: Autocreate Bucket
-        description: Specifies to automatically create the S3 bucket.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false
-      includeBody:
-        title: Include Body
-        description: If true, the exchange is consumed and put into the body 
and closed. If false, the S3Object stream is put raw into the body and the 
headers are set with the S3 object metadata.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: true
-      prefix:
-        title: Prefix
-        description: The AWS S3 bucket prefix to consider while searching.
-        type: string
-        example: 'folder/'
-      ignoreBody:
-        title: Ignore Body
-        description: If true, the S3 Object body is ignored. Setting this to 
true overrides any behavior defined by the `includeBody` option. If false, the 
S3 object is put in the body.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false
-      useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the S3 client loads credentials through a 
default credentials provider. If false, it uses the basic authentication method 
(access key and secret key).
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false
-      uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must 
also select the `overrideEndpoint` option.
-        type: string
-      overrideEndpoint:
-        title: Endpoint Overwrite
-        description: Select this option to override the endpoint URI. To use 
this option, you must also provide a URI for the `uriEndpointOverride` option.
-        type: boolean
-        x-descriptors:
-          - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false
-      delay:
-        title: Delay
-        description: The number of milliseconds before the next poll of the 
selected bucket.
-        type: integer
-        default: 500
-      outputFormat:
-        title: Output Type
-        description: Choose the output type for this Kamelet. The Kamelet 
supports different output types and performs automatic message conversion 
according to this data type.
-        type: string
-        default: binary
-        example: binary
-  dependencies:
-    - "camel:core"
-    - "camel:aws2-s3"
-    - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.0-SNAPSHOT"
-    - "camel:kamelet"
-  template:
-    beans:
-      - name: dataTypeRegistry
-        type: 
"#class:org.apache.camel.kamelets.utils.format.DefaultDataTypeRegistry"
-      - name: outputTypeProcessor
-        type: "#class:org.apache.camel.kamelets.utils.format.DataTypeProcessor"
-        property:
-          - key: scheme
-            value: 'aws2-s3'
-          - key: format
-            value: '{{outputFormat}}'
-          - key: registry
-            value: '#bean:{{dataTypeRegistry}}'
-      - name: renameHeaders
-        type: 
"#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders"
-        property:
-          - key: prefix
-            value: 'CamelAwsS3'
-          - key: renamingPrefix
-            value: 'aws.s3.'
-          - key: mode
-            value: 'filtering'
-          - key: selectedHeaders
-            value: 'CamelAwsS3Key,CamelAwsS3BucketName'
-    from:
-      uri: "aws2-s3:{{bucketNameOrArn}}"
-      parameters:
-        autoCreateBucket: "{{autoCreateBucket}}"
-        secretKey: "{{?secretKey}}"
-        accessKey: "{{?accessKey}}"
-        region: "{{region}}"
-        includeBody: "{{includeBody}}"
-        ignoreBody: "{{ignoreBody}}"
-        deleteAfterRead: "{{deleteAfterRead}}"
-        prefix: "{{?prefix}}"
-        useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
-        uriEndpointOverride: "{{?uriEndpointOverride}}"
-        overrideEndpoint: "{{overrideEndpoint}}"
-        delay: "{{delay}}"
-      steps:
-      - process:
-          ref: "{{renameHeaders}}"
-      - process:
-          ref: "{{outputTypeProcessor}}"
-      - to: "kamelet:sink"
diff --git a/test/experimental/aws-ddb-sink-exp/amazonDDBClient.groovy 
b/test/experimental/aws-ddb-sink-exp/amazonDDBClient.groovy
deleted file mode 100644
index 2d332366..00000000
--- a/test/experimental/aws-ddb-sink-exp/amazonDDBClient.groovy
+++ /dev/null
@@ -1,53 +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.
- */
-
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials
-import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
-import software.amazon.awssdk.regions.Region
-import software.amazon.awssdk.services.dynamodb.DynamoDbClient
-import software.amazon.awssdk.services.dynamodb.model.AttributeDefinition
-import software.amazon.awssdk.services.dynamodb.model.KeySchemaElement
-import software.amazon.awssdk.services.dynamodb.model.KeyType
-import software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput
-import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType
-
-DynamoDbClient amazonDDBClient = DynamoDbClient
-        .builder()
-        
.endpointOverride(URI.create("${YAKS_TESTCONTAINERS_LOCALSTACK_DYNAMODB_LOCAL_URL}"))
-        .credentialsProvider(StaticCredentialsProvider.create(
-                AwsBasicCredentials.create(
-                        "${YAKS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}",
-                        "${YAKS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}")
-        ))
-        .region(Region.of("${YAKS_TESTCONTAINERS_LOCALSTACK_REGION}"))
-        .build()
-
-amazonDDBClient.createTable(b -> {
-        b.tableName("${aws.ddb.tableName}")
-        b.keySchema(
-                
KeySchemaElement.builder().attributeName("id").keyType(KeyType.HASH).build(),
-        )
-        b.attributeDefinitions(
-                
AttributeDefinition.builder().attributeName("id").attributeType(ScalarAttributeType.N).build(),
-        )
-        b.provisionedThroughput(
-                ProvisionedThroughput.builder()
-                        .readCapacityUnits(1L)
-                        .writeCapacityUnits(1L).build())
-})
-
-return amazonDDBClient
diff --git a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-binding.yaml 
b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-binding.yaml
deleted file mode 100644
index e8588422..00000000
--- a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-binding.yaml
+++ /dev/null
@@ -1,50 +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.
-# ---------------------------------------------------------------------------
-
-apiVersion: camel.apache.org/v1alpha1
-kind: KameletBinding
-metadata:
-  name: aws-ddb-sink-binding
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
-      name: timer-source
-    properties:
-      period: ${timer.source.period}
-      message: '${aws.ddb.json.data}'
-  steps:
-    - ref:
-        kind: Kamelet
-        apiVersion: camel.apache.org/v1alpha1
-        name: log-action
-        properties:
-          showHeaders: true
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
-      name: aws-ddb-experimental-sink
-    properties:
-      table: ${aws.ddb.tableName}
-      operation: ${aws.ddb.operation}
-      overrideEndpoint: true
-      uriEndpointOverride: ${YAKS_TESTCONTAINERS_LOCALSTACK_DYNAMODB_LOCAL_URL}
-      accessKey: ${YAKS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}
-      secretKey: ${YAKS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}
-      region: ${YAKS_TESTCONTAINERS_LOCALSTACK_REGION}
diff --git a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-deleteItem.feature 
b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-deleteItem.feature
deleted file mode 100644
index fc9f641a..00000000
--- a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-deleteItem.feature
+++ /dev/null
@@ -1,61 +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.
-# ---------------------------------------------------------------------------
-@experimental
-Feature: AWS DDB Sink - DeleteItem
-
-  Background:
-    Given variables
-      | timer.source.period  | 10000 |
-      | aws.ddb.operation    | DeleteItem |
-      | aws.ddb.tableName    | movies |
-      | aws.ddb.item.id      | 1 |
-      | aws.ddb.item.year    | 1985 |
-      | aws.ddb.item.title   | Back to the future |
-      | aws.ddb.json.data    | {"id": ${aws.ddb.item.id}} |
-
-  Scenario: Create infrastructure
-    # Start LocalStack container
-    Given Enable service DYNAMODB
-    Given start LocalStack container
-    # Create AWS-DDB client
-    Given New global Camel context
-    Given load to Camel registry amazonDDBClient.groovy
-
-  Scenario: Create item on AWS-DDB
-    Given run script putItem.groovy
-    Given variables
-      | maxRetryAttempts  | 20 |
-      | aws.ddb.items     | [[year:AttributeValue(N=${aws.ddb.item.year}), 
id:AttributeValue(N=${aws.ddb.item.id}), 
title:AttributeValue(S=${aws.ddb.item.title})]] |
-    Then apply actions verifyItems.groovy
-
-  Scenario: Verify AWS-DDB Kamelet sink binding
-    # Create binding
-    When load KameletBinding aws-ddb-sink-binding.yaml
-    And KameletBinding aws-ddb-sink-binding is available
-    And Camel K integration aws-ddb-sink-binding is running
-    And Camel K integration aws-ddb-sink-binding should print Started 
aws-ddb-sink-binding
-    # Verify Kamelet sink
-    Given variables
-      | maxRetryAttempts  | 20 |
-      | aws.ddb.items     | [] |
-    Then apply actions verifyItems.groovy
-
-  Scenario: Remove resources
-    # Remove Camel K resources
-    Given delete KameletBinding aws-ddb-sink-binding
-    # Stop LocalStack container
-    Given stop LocalStack container
diff --git a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-putItem.feature 
b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-putItem.feature
deleted file mode 100644
index 49460659..00000000
--- a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-putItem.feature
+++ /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.
-# ---------------------------------------------------------------------------
-@experimental
-Feature: AWS DDB Sink - PutItem
-
-  Background:
-    Given variables
-      | timer.source.period  | 10000 |
-      | aws.ddb.operation    | PutItem |
-      | aws.ddb.tableName    | movies |
-      | aws.ddb.item.id      | 1 |
-      | aws.ddb.item.year    | 1977 |
-      | aws.ddb.item.title   | Star Wars IV |
-      | aws.ddb.json.data    | { "id":${aws.ddb.item.id}, 
"year":${aws.ddb.item.year}, "title":"${aws.ddb.item.title}" } |
-
-  Scenario: Create infrastructure
-    # Start LocalStack container
-    Given Enable service DYNAMODB
-    Given start LocalStack container
-    # Create AWS-DDB client
-    Given New global Camel context
-    Given load to Camel registry amazonDDBClient.groovy
-
-  Scenario: Verify empty items on AWS-DDB
-    Given variables
-      | maxRetryAttempts  | 20 |
-      | aws.ddb.items | [] |
-    Then apply actions verifyItems.groovy
-
-  Scenario: Verify AWS-DDB Kamelet sink binding
-    # Create binding
-    When load KameletBinding aws-ddb-sink-binding.yaml
-    And KameletBinding aws-ddb-sink-binding is available
-    And Camel K integration aws-ddb-sink-binding is running
-    And Camel K integration aws-ddb-sink-binding should print Started 
aws-ddb-sink-binding
-    # Verify Kamelet sink
-    Given variables
-      | maxRetryAttempts  | 20 |
-      | aws.ddb.items     | [[year:AttributeValue(N=${aws.ddb.item.year}), 
id:AttributeValue(N=${aws.ddb.item.id}), 
title:AttributeValue(S=${aws.ddb.item.title})]] |
-    Then apply actions verifyItems.groovy
-
-  Scenario: Remove resources
-    # Remove Camel K binding
-    Given delete KameletBinding aws-ddb-sink-binding
-    # Stop LocalStack container
-    Given stop LocalStack container
diff --git a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-updateItem.feature 
b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-updateItem.feature
deleted file mode 100644
index be5a4c7e..00000000
--- a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-updateItem.feature
+++ /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.
-# ---------------------------------------------------------------------------
-@experimental
-Feature: AWS DDB Sink - UpdateItem
-
-  Background:
-    Given variables
-      | timer.source.period    | 10000 |
-      | aws.ddb.operation      | UpdateItem |
-      | aws.ddb.tableName      | movies |
-      | aws.ddb.item.id        | 1 |
-      | aws.ddb.item.year      | 1933 |
-      | aws.ddb.item.title     | King Kong |
-      | aws.ddb.item.title.new | King Kong - Historical |
-      | aws.ddb.item.directors | ["Merian C. Cooper", "Ernest B. Schoedsack"] |
-      | aws.ddb.json.data      | { "key": {"id": ${aws.ddb.item.id}}, "item": 
{"title": "${aws.ddb.item.title.new}", "year": ${aws.ddb.item.year}, 
"directors": ${aws.ddb.item.directors}} } |
-
-  Scenario: Create infrastructure
-    # Start LocalStack container
-    Given Enable service DYNAMODB
-    Given start LocalStack container
-    # Create AWS-DDB client
-    Given New global Camel context
-    Given load to Camel registry amazonDDBClient.groovy
-
-  Scenario: Create item on AWS-DDB
-    Given run script putItem.groovy
-    Given variables
-      | maxRetryAttempts  | 20 |
-      | aws.ddb.items | [[year:AttributeValue(N=${aws.ddb.item.year}), 
id:AttributeValue(N=${aws.ddb.item.id}), 
title:AttributeValue(S=${aws.ddb.item.title})]] |
-    Then apply actions verifyItems.groovy
-
-  Scenario: Verify AWS-DDB Kamelet sink binding
-    # Create binding
-    When load KameletBinding aws-ddb-sink-binding.yaml
-    And KameletBinding aws-ddb-sink-binding is available
-    And Camel K integration aws-ddb-sink-binding is running
-    And Camel K integration aws-ddb-sink-binding should print Started 
aws-ddb-sink-binding
-    # Verify Kamelet sink
-    Given variables
-      | maxRetryAttempts  | 200 |
-      | aws.ddb.item.directors | [Ernest B. Schoedsack, Merian C. Cooper] |
-      | aws.ddb.items | [[year:AttributeValue(N=${aws.ddb.item.year}), 
directors:AttributeValue(SS=${aws.ddb.item.directors}), 
id:AttributeValue(N=${aws.ddb.item.id}), 
title:AttributeValue(S=${aws.ddb.item.title.new})]] |
-    Then apply actions verifyItems.groovy
-
-  Scenario: Remove resources
-    # Remove Camel K resources
-    Given delete KameletBinding aws-ddb-sink-binding
-    # Stop LocalStack container
-    Given stop LocalStack container
diff --git a/test/experimental/aws-ddb-sink-exp/putItem.groovy 
b/test/experimental/aws-ddb-sink-exp/putItem.groovy
deleted file mode 100644
index fd482f90..00000000
--- a/test/experimental/aws-ddb-sink-exp/putItem.groovy
+++ /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.
- */
-
-import software.amazon.awssdk.services.dynamodb.model.AttributeValue
-import software.amazon.awssdk.services.dynamodb.model.ReturnValue
-
-Map<String, AttributeValue> item = new HashMap<>()
-item.put("id", AttributeValue.builder().n("${aws.ddb.item.id}").build())
-item.put("year", AttributeValue.builder().n("${aws.ddb.item.year}").build())
-item.put("title", AttributeValue.builder().s("${aws.ddb.item.title}").build())
-
-amazonDDBClient.putItem(b -> {
-    b.tableName("${aws.ddb.tableName}")
-    b.item(item)
-    b.returnValues(ReturnValue.ALL_OLD)
-})
diff --git a/test/experimental/aws-ddb-sink-exp/verifyItems.groovy 
b/test/experimental/aws-ddb-sink-exp/verifyItems.groovy
deleted file mode 100644
index b89dad5a..00000000
--- a/test/experimental/aws-ddb-sink-exp/verifyItems.groovy
+++ /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.
- */
-
-$(repeatOnError()
-    .until('i > ${maxRetryAttempts}')
-    .actions(new com.consol.citrus.TestAction() {
-        @Override
-        void execute(com.consol.citrus.context.TestContext context) {
-            try {
-                assert 
context.getVariable('aws.ddb.items').equals(amazonDDBClient.scan(b -> 
b.tableName(context.getVariable('aws.ddb.tableName')))?.items()?.toListString())
-            } catch (AssertionError e) {
-                throw new 
com.consol.citrus.exceptions.CitrusRuntimeException("AWS DDB item verification 
failed", e)
-            }
-        }
-    })
-)
diff --git a/test/experimental/aws-ddb-sink-exp/yaks-config.yaml 
b/test/experimental/aws-ddb-sink-exp/yaks-config.yaml
deleted file mode 100644
index c3fe0232..00000000
--- a/test/experimental/aws-ddb-sink-exp/yaks-config.yaml
+++ /dev/null
@@ -1,65 +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.
-# ---------------------------------------------------------------------------
-
-config:
-  namespace:
-    temporary: false
-  runtime:
-    testcontainers:
-      enabled: true
-    env:
-      - name: YAKS_CAMEL_AUTO_REMOVE_RESOURCES
-        value: false
-      - name: YAKS_CAMELK_AUTO_REMOVE_RESOURCES
-        value: false
-      - name: YAKS_KAMELETS_AUTO_REMOVE_RESOURCES
-        value: false
-      - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT
-        value: true
-      - name: YAKS_TESTCONTAINERS_AUTO_REMOVE_RESOURCES
-        value: false
-      - name: CITRUS_TYPE_CONVERTER
-        value: camel
-    resources:
-      - putItem.groovy
-      - verifyItems.groovy
-      - amazonDDBClient.groovy
-      - aws-ddb-sink-binding.yaml
-    cucumber:
-      tags:
-        - "not @ignored"
-    settings:
-      loggers:
-        - name: INTEGRATION_STATUS
-          level: INFO
-        - name: INTEGRATION_LOGS
-          level: INFO
-      dependencies:
-        - groupId: org.apache.camel
-          artifactId: camel-aws2-ddb
-          version: "@camel.version@"
-        - groupId: software.amazon.awssdk
-          artifactId: dynamodb
-          version: "@aws-java-sdk2.version@"
-        - groupId: org.apache.camel
-          artifactId: camel-jackson
-          version: "@camel.version@"
-  dump:
-    enabled: true
-    failedOnly: true
-    includes:
-      - app=camel-k
diff --git a/test/experimental/aws-s3-exp/amazonS3Client.groovy 
b/test/experimental/aws-s3-exp/amazonS3Client.groovy
deleted file mode 100644
index e0d21074..00000000
--- a/test/experimental/aws-s3-exp/amazonS3Client.groovy
+++ /dev/null
@@ -1,36 +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.
- */
-
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials
-import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
-import software.amazon.awssdk.regions.Region
-import software.amazon.awssdk.services.s3.S3Client
-
-S3Client s3 = S3Client
-        .builder()
-        
.endpointOverride(URI.create("${YAKS_TESTCONTAINERS_LOCALSTACK_S3_LOCAL_URL}"))
-        .credentialsProvider(StaticCredentialsProvider.create(
-                AwsBasicCredentials.create(
-                        "${YAKS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}",
-                        "${YAKS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}")
-        ))
-        .region(Region.of("${YAKS_TESTCONTAINERS_LOCALSTACK_REGION}"))
-        .build()
-
-s3.createBucket(b -> b.bucket("${aws.s3.bucketNameOrArn}"))
-
-return s3
diff --git a/test/experimental/aws-s3-exp/aws-s3-cloudevents.feature 
b/test/experimental/aws-s3-exp/aws-s3-cloudevents.feature
deleted file mode 100644
index 6885c58d..00000000
--- a/test/experimental/aws-s3-exp/aws-s3-cloudevents.feature
+++ /dev/null
@@ -1,50 +0,0 @@
-@knative
-@experimental
-Feature: AWS S3 Kamelet - cloud events data type
-
-  Background:
-    Given Knative event consumer timeout is 20000 ms
-    Given variables
-      | aws.s3.output | cloudevents |
-      | aws.s3.bucketNameOrArn | mybucket |
-      | aws.s3.message | Hello from S3 Kamelet |
-      | aws.s3.key | hello.txt |
-
-  Scenario: Create infrastructure
-    # Start LocalStack container
-    Given Enable service S3
-    Given start LocalStack container
-    # Create AWS-S3 client
-    Given New global Camel context
-    Given load to Camel registry amazonS3Client.groovy
-    # Create Knative broker
-    Given create Knative broker default
-    And Knative broker default is running
-
-  Scenario: Verify AWS-S3 Kamelet to Knative binding
-    # Create binding
-    When load KameletBinding aws-s3-to-knative.yaml
-    And KameletBinding aws-s3-to-knative-binding is available
-    And Camel K integration aws-s3-to-knative-binding is running
-    Then Camel K integration aws-s3-to-knative-binding should print Started 
aws-s3-to-knative-binding
-    # Verify Kamelet source
-    Given create Knative event consumer service event-consumer-service
-    Given create Knative trigger event-service-trigger on service 
event-consumer-service with filter on attributes
-      | type   | org.apache.camel.event.aws.s3.getObject |
-    Given Camel exchange message header CamelAwsS3Key="${aws.s3.key}"
-    Given send Camel exchange 
to("aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#amazonS3Client") with 
body: ${aws.s3.message}
-    Then expect Knative event data: ${aws.s3.message}
-    And verify Knative event
-      | type            | org.apache.camel.event.aws.s3.getObject |
-      | source          | aws.s3.bucket.${aws.s3.bucketNameOrArn} |
-      | subject         | ${aws.s3.key} |
-      | id              | @ignore@ |
-
-  Scenario: Remove resources
-    # Remove Camel K resources
-    Given delete KameletBinding aws-s3-to-knative-binding
-    Given delete Kubernetes service event-consumer-service
-    # Remove Knative resources
-    Given delete Knative broker default
-    # Stop LocalStack container
-    Given stop LocalStack container
diff --git a/test/experimental/aws-s3-exp/aws-s3-knative.feature 
b/test/experimental/aws-s3-exp/aws-s3-knative.feature
deleted file mode 100644
index 10ad5264..00000000
--- a/test/experimental/aws-s3-exp/aws-s3-knative.feature
+++ /dev/null
@@ -1,49 +0,0 @@
-@knative
-@experimental
-Feature: AWS S3 Kamelet - Knative binding
-
-  Background:
-    Given Knative event consumer timeout is 20000 ms
-    Given variables
-      | aws.s3.output | string |
-      | aws.s3.bucketNameOrArn | mybucket |
-      | aws.s3.message | Hello from S3 Kamelet |
-      | aws.s3.key | hello.txt |
-
-  Scenario: Create infrastructure
-    # Start LocalStack container
-    Given Enable service S3
-    Given start LocalStack container
-    # Create AWS-S3 client
-    Given New global Camel context
-    Given load to Camel registry amazonS3Client.groovy
-    # Create Knative broker
-    Given create Knative broker default
-    And Knative broker default is running
-
-  Scenario: Verify AWS-S3 Kamelet to Knative binding
-    # Create binding
-    When load KameletBinding aws-s3-to-knative.yaml
-    And KameletBinding aws-s3-to-knative-binding is available
-    And Camel K integration aws-s3-to-knative-binding is running
-    Then Camel K integration aws-s3-to-knative-binding should print Started 
aws-s3-to-knative-binding
-    # Verify Kamelet source
-    Given create Knative event consumer service event-consumer-service
-    Given create Knative trigger event-service-trigger on service 
event-consumer-service with filter on attributes
-      | type   | org.apache.camel.event |
-    Given Camel exchange message header CamelAwsS3Key="${aws.s3.key}"
-    Given send Camel exchange 
to("aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#amazonS3Client") with 
body: ${aws.s3.message}
-    Then expect Knative event data: ${aws.s3.message}
-    And verify Knative event
-      | type            | org.apache.camel.event |
-      | source          | @ignore@ |
-      | id              | @ignore@ |
-
-  Scenario: Remove resources
-    # Remove Camel K resources
-    Given delete KameletBinding aws-s3-to-knative-binding
-    Given delete Kubernetes service event-consumer-service
-    # Remove Knative resources
-    Given delete Knative broker default
-    # Stop LocalStack container
-    Given stop LocalStack container
diff --git a/test/experimental/aws-s3-exp/aws-s3-to-knative.yaml 
b/test/experimental/aws-s3-exp/aws-s3-to-knative.yaml
deleted file mode 100644
index 117c3332..00000000
--- a/test/experimental/aws-s3-exp/aws-s3-to-knative.yaml
+++ /dev/null
@@ -1,47 +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.
-# ---------------------------------------------------------------------------
-
-apiVersion: camel.apache.org/v1alpha1
-kind: KameletBinding
-metadata:
-  name: aws-s3-to-knative-binding
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
-      name: aws-s3-experimental-source
-    properties:
-      bucketNameOrArn: ${aws.s3.bucketNameOrArn}
-      overrideEndpoint: true
-      outputFormat: ${aws.s3.output}
-      uriEndpointOverride: ${YAKS_TESTCONTAINERS_LOCALSTACK_S3_URL}
-      accessKey: ${YAKS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}
-      secretKey: ${YAKS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}
-      region: ${YAKS_TESTCONTAINERS_LOCALSTACK_REGION}
-  steps:
-    - ref:
-        kind: Kamelet
-        apiVersion: camel.apache.org/v1alpha1
-        name: log-sink
-      properties:
-        showHeaders: true
-  sink:
-    ref:
-      kind: Broker
-      apiVersion: eventing.knative.dev/v1
-      name: default
diff --git a/test/experimental/aws-s3-exp/yaks-config.yaml 
b/test/experimental/aws-s3-exp/yaks-config.yaml
deleted file mode 100644
index ce37838a..00000000
--- a/test/experimental/aws-s3-exp/yaks-config.yaml
+++ /dev/null
@@ -1,67 +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.
-# ---------------------------------------------------------------------------
-
-config:
-  namespace:
-    temporary: false
-  runtime:
-    testcontainers:
-      enabled: true
-    env:
-      - name: YAKS_CAMEL_AUTO_REMOVE_RESOURCES
-        value: false
-      - name: YAKS_CAMELK_AUTO_REMOVE_RESOURCES
-        value: false
-      - name: YAKS_KAMELETS_AUTO_REMOVE_RESOURCES
-        value: false
-      - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES
-        value: false
-      - name: YAKS_KNATIVE_AUTO_REMOVE_RESOURCES
-        value: false
-      - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT
-        value: true
-      - name: YAKS_TESTCONTAINERS_AUTO_REMOVE_RESOURCES
-        value: false
-      - name: CITRUS_TYPE_CONVERTER
-        value: camel
-    resources:
-      - amazonS3Client.groovy
-      - aws-s3-to-knative.yaml
-    cucumber:
-      tags:
-        - "not @ignored and not @knative"
-    settings:
-      loggers:
-        - name: INTEGRATION_STATUS
-          level: INFO
-        - name: INTEGRATION_LOGS
-          level: INFO
-      dependencies:
-        - groupId: org.apache.camel
-          artifactId: camel-aws2-s3
-          version: "@camel.version@"
-        - groupId: software.amazon.awssdk
-          artifactId: s3
-          version: "@aws-java-sdk2.version@"
-        - groupId: org.apache.camel
-          artifactId: camel-jackson
-          version: "@camel.version@"
-  dump:
-    enabled: true
-    failedOnly: true
-    includes:
-      - app=camel-k


Reply via email to