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

[camel-kamelets] branch enricher-maven-plugin created (now 708a45ee)

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

acosentino pushed a change to branch enricher-maven-plugin
in repository https://gitbox.apache.org/repos/asf/camel-kamelets.git


      at 708a45ee Kamelets Enricher Maven Plugin for improving Kamelets metadata

This branch includes the following new commits:

     new ccf07846 Kamelets Enricher Maven Plugin for improving Kamelets metadata
     new 8d93aa79 Kamelets Enricher Maven Plugin for improving Kamelets metadata
     new 9a3f8928 Kamelets Enricher Maven Plugin for improving Kamelets metadata - Generate Headers Metadata for AWS Kamelets
     new 708a45ee Kamelets Enricher Maven Plugin for improving Kamelets metadata

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



[camel-kamelets] 02/04: Kamelets Enricher Maven Plugin for improving Kamelets metadata

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

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

commit 8d93aa79ac7f7ef95d5b4b61577a56920248416d
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Oct 14 12:03:30 2022 +0200

    Kamelets Enricher Maven Plugin for improving Kamelets metadata
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 kamelets/aws-s3-sink.kamelet.yaml                  | 235 ++++++++----------
 kamelets/aws-s3-source.kamelet.yaml                | 248 ++++++++-----------
 kamelets/aws-s3-streaming-upload-sink.kamelet.yaml | 234 +++++++++++-------
 kamelets/aws-sqs-sink.kamelet.yaml                 | 173 +++++++------
 kamelets/aws-sqs-source.kamelet.yaml               | 252 +++++++++++--------
 .../resources/kamelets/aws-s3-sink.kamelet.yaml    | 260 ++++++++++----------
 .../resources/kamelets/aws-s3-source.kamelet.yaml  | 269 ++++++++++-----------
 .../aws-s3-streaming-upload-sink.kamelet.yaml      | 263 +++++++++++++-------
 .../resources/kamelets/aws-sqs-sink.kamelet.yaml   | 182 ++++++++------
 .../resources/kamelets/aws-sqs-source.kamelet.yaml | 252 +++++++++++--------
 .../kamelets/maven/plugin/EnrichKameletsMojo.java  |  81 +++++--
 .../maven/plugin/KameletPrefixSchemeEnum.java      |  43 ++++
 12 files changed, 1405 insertions(+), 1087 deletions(-)

diff --git a/kamelets/aws-s3-sink.kamelet.yaml b/kamelets/aws-s3-sink.kamelet.yaml
index 670feea5..76b1e7db 100644
--- a/kamelets/aws-s3-sink.kamelet.yaml
+++ b/kamelets/aws-s3-sink.kamelet.yaml
@@ -1,4 +1,19 @@
----
+# ---------------------------------------------------------------------------
+# 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:
@@ -11,79 +26,35 @@ metadata:
   labels:
     camel.apache.org/kamelet.type: "sink"
   name: "aws-s3-sink"
-  Headers:
-    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object\
-      \ in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
-    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying\
-      \ what content encodings have been applied to the object and what decoding mechanisms\
-      \ must be applied in order to obtain the media-type referenced by the Content-Type\
-      \ field."
-    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer)\
-      \ The hex encoded 128-bit MD5 digest of the associated object according to RFC\
-      \ 1864. This data is used as an integrity check to verify that the data received\
-      \ by the caller is the same data that was sent by Amazon S3."
-    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject,\
-      \ deleteObject, listBuckets, deleteBucket, listObjects"
-    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link\
-      \ in milliseconds"
-    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the\
-      \ service (not needed when BrowserCompatible is true)"
-    CamelAwsS3DestinationKey: "The Destination key which will be used for the current\
-      \ operation"
-    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used\
-      \ for the current operation"
-    CamelMessageTimestamp: "The timestamp of the message"
-    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which\
-      \ specifies presentational information such as the recommended filename for\
-      \ the object to be saved as."
-    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type\
-      \ of content stored in the associated object. The value of this header is a\
-      \ standard MIME type."
-    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the\
-      \ date and time at which Amazon S3 last recorded a modification to the associated\
-      \ object."
-    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket\
-      \ lifecycle), the response includes this header."
-    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows\
-      \ the user to specify caching behavior along the HTTP request/reply chain."
-    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when\
-      \ encrypting the object using AWS-managed keys. For example use AES256."
-    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the\
-      \ service (not needed when BrowserCompatible is true)"
-    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded\
-      \ object. (consumer) The version ID of the associated Amazon S3 object if available.\
-      \ Version IDs are only assigned to objects when an object is uploaded to an\
-      \ Amazon S3 bucket that has object versioning enabled."
-    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves\
-      \ a bucket that is either a source or destination in a replication rule."
+  headers:
+    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
+    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
+    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
+    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
+    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link in milliseconds"
+    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the service (not needed when BrowserCompatible is true)"
+    CamelAwsS3DestinationKey: "The Destination key which will be used for the current operation"
+    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used for the current operation"
+    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
+    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
+    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
+    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
+    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
+    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the service (not needed when BrowserCompatible is true)"
+    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
     CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
     CamelAwsS3RangeStart: "The position of the first byte to get"
-    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL\
-      \ for allowed values."
-    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser\
-      \ compatible"
-    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which\
-      \ will be used for the current operation or in which this object is contained."
-    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated\
-      \ object (content - not including headers) according to RFC 1864. This data\
-      \ is used as a message integrity check to verify that the data received by Amazon\
-      \ S3 is the same data that the caller sent."
-    CamelAwsS3Key: "The key under which this object is stored or will be stored or\
-      \ which will be used for the current operation"
-    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of\
-      \ the associated object in bytes."
+    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL for allowed values."
+    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser compatible"
+    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
+    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
+    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
+    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
     CamelAwsS3StorageClass: "The storage class of this object."
     CamelAwsS3RangeEnd: "The position of the last byte to get"
 spec:
   definition:
-    description: "Upload data to an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads\
-      \ the credentials through this provider and doesn't use the basic authentication\
-      \ method.\n\nIn the header, you can optionally set the `file` / `ce-partition`\
-      \ property to specify the name of the file to upload.\n\nIf you do not set the\
-      \ property in the header, the Kamelet uses the exchange ID for the file name."
+    description: "Upload data to an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method.\n\nIn the header, you can optionally set the `file` / `ce-partition` property to specify the [...]
     properties:
       bucketNameOrArn:
         description: "The S3 Bucket name or Amazon Resource Name (ARN)."
@@ -95,54 +66,54 @@ spec:
         title: "Access Key"
         type: "string"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:password"
-        - "urn:camel:group:credentials"
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
       secretKey:
         description: "The secret key obtained from AWS."
         format: "password"
         title: "Secret Key"
         type: "string"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:password"
-        - "urn:camel:group:credentials"
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
       region:
         description: "The AWS region to access."
         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"
-        - "aws-cn-global"
-        - "aws-us-gov-global"
-        - "aws-iso-global"
-        - "aws-iso-b-global"
+         - "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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
         title: "AWS Region"
         type: "string"
       autoCreateBucket:
@@ -151,64 +122,68 @@ spec:
         title: "Autocreate Bucket"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       useDefaultCredentialsProvider:
         default: false
-        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)."
+        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)."
         title: "Default Credentials Provider"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        description: "The overriding endpoint URI. To use this option, you must also\
-          \ select the `overrideEndpoint` option."
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
         title: "Overwrite Endpoint URI"
         type: "string"
       overrideEndpoint:
         default: false
-        description: "Select this option to override the endpoint URI. To use this\
-          \ option, you must also provide a URI for the `uriEndpointOverride` option."
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
         title: "Endpoint Overwrite"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       keyName:
         description: "The key name for saving an element in the bucket."
         title: "Key Name"
         type: "string"
     required:
-    - "bucketNameOrArn"
-    - "region"
+     - "bucketNameOrArn"
+     - "region"
     title: "AWS S3 Sink"
     type: "object"
   dependencies:
-  - "camel:core"
-  - "camel:aws2-s3"
-  - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-s3"
+   - "camel:kamelet"
   template:
     from:
       uri: "kamelet:source"
       steps:
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[file]}"
+           -
+            simple: "${header[file]}"
             steps:
-            - set-header:
+             -
+              set-header:
                 name: "CamelAwsS3Key"
                 simple: "${header[file]}"
-          - simple: "${header[ce-file]}"
+           -
+            simple: "${header[ce-file]}"
             steps:
-            - set-header:
+             -
+              set-header:
                 name: "CamelAwsS3Key"
                 simple: "${header[ce-file]}"
-          - simple: "'{{?keyName}}' == ''"
+           -
+            simple: "'{{?keyName}}' == ''"
             steps:
-            - set-header:
+             -
+              set-header:
                 name: "CamelAwsS3Key"
                 simple: "${exchangeId}"
-      - to:
+       -
+        to:
           uri: "aws2-s3:{{bucketNameOrArn}}"
           parameters:
             secretKey: "{{?secretKey}}"
diff --git a/kamelets/aws-s3-source.kamelet.yaml b/kamelets/aws-s3-source.kamelet.yaml
index 78f85fbb..d65ef008 100644
--- a/kamelets/aws-s3-source.kamelet.yaml
+++ b/kamelets/aws-s3-source.kamelet.yaml
@@ -1,4 +1,19 @@
----
+# ---------------------------------------------------------------------------
+# 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:
@@ -11,79 +26,28 @@ metadata:
   labels:
     camel.apache.org/kamelet.type: "source"
   name: "aws-s3-source"
-  Headers:
-    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object\
-      \ in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
-    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying\
-      \ what content encodings have been applied to the object and what decoding mechanisms\
-      \ must be applied in order to obtain the media-type referenced by the Content-Type\
-      \ field."
-    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer)\
-      \ The hex encoded 128-bit MD5 digest of the associated object according to RFC\
-      \ 1864. This data is used as an integrity check to verify that the data received\
-      \ by the caller is the same data that was sent by Amazon S3."
-    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject,\
-      \ deleteObject, listBuckets, deleteBucket, listObjects"
-    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link\
-      \ in milliseconds"
-    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the\
-      \ service (not needed when BrowserCompatible is true)"
-    CamelAwsS3DestinationKey: "The Destination key which will be used for the current\
-      \ operation"
-    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used\
-      \ for the current operation"
+  headers:
+    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
+    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
+    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
+    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves a bucket that is either a source or destination in a replication rule."
+    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
+    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
     CamelMessageTimestamp: "The timestamp of the message"
-    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which\
-      \ specifies presentational information such as the recommended filename for\
-      \ the object to be saved as."
-    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type\
-      \ of content stored in the associated object. The value of this header is a\
-      \ standard MIME type."
-    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the\
-      \ date and time at which Amazon S3 last recorded a modification to the associated\
-      \ object."
-    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket\
-      \ lifecycle), the response includes this header."
-    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows\
-      \ the user to specify caching behavior along the HTTP request/reply chain."
-    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when\
-      \ encrypting the object using AWS-managed keys. For example use AES256."
-    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the\
-      \ service (not needed when BrowserCompatible is true)"
-    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded\
-      \ object. (consumer) The version ID of the associated Amazon S3 object if available.\
-      \ Version IDs are only assigned to objects when an object is uploaded to an\
-      \ Amazon S3 bucket that has object versioning enabled."
-    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves\
-      \ a bucket that is either a source or destination in a replication rule."
-    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
-    CamelAwsS3RangeStart: "The position of the first byte to get"
-    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL\
-      \ for allowed values."
-    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser\
-      \ compatible"
-    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which\
-      \ will be used for the current operation or in which this object is contained."
-    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated\
-      \ object (content - not including headers) according to RFC 1864. This data\
-      \ is used as a message integrity check to verify that the data received by Amazon\
-      \ S3 is the same data that the caller sent."
-    CamelAwsS3Key: "The key under which this object is stored or will be stored or\
-      \ which will be used for the current operation"
-    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of\
-      \ the associated object in bytes."
+    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
+    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
+    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
+    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
+    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
+    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
+    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket lifecycle), the response includes this header."
+    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
+    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
+    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
     CamelAwsS3StorageClass: "The storage class of this object."
-    CamelAwsS3RangeEnd: "The position of the last byte to get"
 spec:
   definition:
-    description: "Receive data from an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads\
-      \ the credentials through this provider and doesn't use the basic authentication\
-      \ method.\n\nTwo 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"
+    description: "Receive data from an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method.\n\nTwo headers will be duplicated with different names for clarity at sink level, CamelAw [...]
     properties:
       bucketNameOrArn:
         description: "The S3 Bucket name or Amazon Resource Name (ARN)."
@@ -95,61 +59,61 @@ spec:
         title: "Auto-delete Objects"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       accessKey:
         description: "The access key obtained from AWS."
         format: "password"
         title: "Access Key"
         type: "string"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:password"
-        - "urn:camel:group:credentials"
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
       secretKey:
         description: "The secret key obtained from AWS."
         format: "password"
         title: "Secret Key"
         type: "string"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:password"
-        - "urn:camel:group:credentials"
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
       region:
         description: "The AWS region to access."
         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"
-        - "aws-cn-global"
-        - "aws-us-gov-global"
-        - "aws-iso-global"
-        - "aws-iso-b-global"
+         - "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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
         title: "AWS Region"
         type: "string"
       autoCreateBucket:
@@ -158,16 +122,14 @@ spec:
         title: "Autocreate Bucket"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       includeBody:
         default: true
-        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."
+        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."
         title: "Include Body"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       prefix:
         description: "The AWS S3 bucket prefix to consider while searching."
         example: "folder/"
@@ -175,63 +137,61 @@ spec:
         type: "string"
       ignoreBody:
         default: false
-        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."
+        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."
         title: "Ignore Body"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       useDefaultCredentialsProvider:
         default: false
-        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)."
+        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)."
         title: "Default Credentials Provider"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        description: "The overriding endpoint URI. To use this option, you must also\
-          \ select the `overrideEndpoint` option."
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
         title: "Overwrite Endpoint URI"
         type: "string"
       overrideEndpoint:
         default: false
-        description: "Select this option to override the endpoint URI. To use this\
-          \ option, you must also provide a URI for the `uriEndpointOverride` option."
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
         title: "Endpoint Overwrite"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       delay:
         default: 500
-        description: "The number of milliseconds before the next poll of the selected\
-          \ bucket."
+        description: "The number of milliseconds before the next poll of the selected bucket."
         title: "Delay"
         type: "integer"
     required:
-    - "bucketNameOrArn"
-    - "region"
+     - "bucketNameOrArn"
+     - "region"
     title: "AWS S3 Source"
     type: "object"
   dependencies:
-  - "camel:core"
-  - "camel:aws2-s3"
-  - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
-  - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-s3"
+   - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
+   - "camel:kamelet"
   template:
     beans:
-    - name: "renameHeaders"
+     -
+      name: "renameHeaders"
       type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders"
       property:
-      - key: "prefix"
+       -
+        key: "prefix"
         value: "CamelAwsS3"
-      - key: "renamingPrefix"
+       -
+        key: "renamingPrefix"
         value: "aws.s3."
-      - key: "mode"
+       -
+        key: "mode"
         value: "filtering"
-      - key: "selectedHeaders"
+       -
+        key: "selectedHeaders"
         value: "CamelAwsS3Key,CamelAwsS3BucketName"
     from:
       uri: "aws2-s3:{{bucketNameOrArn}}"
@@ -249,6 +209,8 @@ spec:
         overrideEndpoint: "{{overrideEndpoint}}"
         delay: "{{delay}}"
       steps:
-      - process:
+       -
+        process:
           ref: "{{renameHeaders}}"
-      - to: "kamelet:sink"
+       -
+        to: "kamelet:sink"
diff --git a/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml b/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml
index e327a23b..76b1e7db 100644
--- a/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml
+++ b/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-s3-streaming-upload-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -27,120 +25,172 @@ metadata:
     camel.apache.org/kamelet.group: "AWS S3"
   labels:
     camel.apache.org/kamelet.type: "sink"
+  name: "aws-s3-sink"
+  headers:
+    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
+    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
+    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
+    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
+    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link in milliseconds"
+    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the service (not needed when BrowserCompatible is true)"
+    CamelAwsS3DestinationKey: "The Destination key which will be used for the current operation"
+    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used for the current operation"
+    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
+    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
+    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
+    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
+    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
+    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the service (not needed when BrowserCompatible is true)"
+    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
+    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
+    CamelAwsS3RangeStart: "The position of the first byte to get"
+    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL for allowed values."
+    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser compatible"
+    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
+    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
+    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
+    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
+    CamelAwsS3StorageClass: "The storage class of this object."
+    CamelAwsS3RangeEnd: "The position of the last byte to get"
 spec:
   definition:
-    title: "AWS S3 Streaming upload Sink"
-    description: |-
-      Upload data to AWS S3 in streaming upload mode.
-
-      Access Key/Secret Key are the basic method for authenticating to the AWS S3 Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
-      
-      When using a default Credentials Provider the S3 client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
-    required:
-      - bucketNameOrArn
-      - region
-      - keyName
-    type: object
+    description: "Upload data to an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method.\n\nIn the header, you can optionally set the `file` / `ce-partition` property to specify the [...]
     properties:
       bucketNameOrArn:
-        title: Bucket Name
-        description: The S3 Bucket name or Amazon Resource Name (ARN)..
-        type: string
+        description: "The S3 Bucket name or Amazon Resource Name (ARN)."
+        title: "Bucket Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       autoCreateBucket:
-        title: Autocreate Bucket
-        description: Setting the autocreation of the S3 bucket bucketName.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
-      restartingPolicy:
-        title: Restarting Policy
-        description: The restarting policy to use in streaming upload mode. There are 2 enums and the value can be one of override, lastPart
-        type: string
-        default: "lastPart"
-      batchMessageNumber:
-        title: Batch Message Number
-        description: The number of messages composing a batch in streaming upload mode
-        type: integer
-        default: 10
-      batchSize:
-        title: Batch Size
-        description: The batch size (in bytes) in streaming upload mode
-        type: integer
-        default: 1000000
-      streamingUploadTimeout:
-        title: Streaming Upload Timeout
-        description: While streaming upload mode is true, this option set the timeout to complete upload
-        type: integer
-      namingStrategy:
-        title: Naming Strategy
-        description: The naming strategy to use in streaming upload mode. There are 2 enums and the value can be one of progressive, random
-        type: string
-        default: "progressive"
-      keyName: 
-        title: Key Name
-        description: Setting the key name for an element in the bucket through endpoint parameter. In Streaming Upload, with the default configuration, this will be the base for the progressive creation of files.
-        type: string
-      useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: Set whether the S3 client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
-        type: boolean
+        description: "Specifies to automatically create the S3 bucket."
+        title: "Autocreate Bucket"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+      useDefaultCredentialsProvider:
         default: false
+        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)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+      keyName:
+        description: "The key name for saving an element in the bucket."
+        title: "Key Name"
+        type: "string"
+    required:
+     - "bucketNameOrArn"
+     - "region"
+    title: "AWS S3 Sink"
+    type: "object"
   dependencies:
-    - "camel:aws2-s3"
-    - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-s3"
+   - "camel:kamelet"
   template:
     from:
       uri: "kamelet:source"
       steps:
-      - to:
+       -
+        choice:
+          when:
+           -
+            simple: "${header[file]}"
+            steps:
+             -
+              set-header:
+                name: "CamelAwsS3Key"
+                simple: "${header[file]}"
+           -
+            simple: "${header[ce-file]}"
+            steps:
+             -
+              set-header:
+                name: "CamelAwsS3Key"
+                simple: "${header[ce-file]}"
+           -
+            simple: "'{{?keyName}}' == ''"
+            steps:
+             -
+              set-header:
+                name: "CamelAwsS3Key"
+                simple: "${exchangeId}"
+       -
+        to:
           uri: "aws2-s3:{{bucketNameOrArn}}"
           parameters:
             secretKey: "{{?secretKey}}"
             accessKey: "{{?accessKey}}"
             region: "{{region}}"
             autoCreateBucket: "{{autoCreateBucket}}"
-            streamingUploadMode: "true"
-            restartingPolicy: "{{restartingPolicy}}"
-            batchMessageNumber: "{{batchMessageNumber}}"
-            batchSize: "{{batchSize}}"
-            namingStrategy: "{{namingStrategy}}"
-            keyName: "{{keyName}}"
-            streamingUploadTimeout: "{{?streamingUploadTimeout}}"
             useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
             uriEndpointOverride: "{{?uriEndpointOverride}}"
             overrideEndpoint: "{{overrideEndpoint}}"
+            keyName: "{{?keyName}}"
diff --git a/kamelets/aws-sqs-sink.kamelet.yaml b/kamelets/aws-sqs-sink.kamelet.yaml
index 81f952e0..25e6010d 100644
--- a/kamelets/aws-sqs-sink.kamelet.yaml
+++ b/kamelets/aws-sqs-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-sqs-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,90 +24,129 @@ metadata:
     camel.apache.org/provider: "Apache Software Foundation"
     camel.apache.org/kamelet.group: "AWS SQS"
   labels:
-    camel.apache.org/kamelet.type: sink
+    camel.apache.org/kamelet.type: "sink"
+  name: "aws-sqs-sink"
+  headers:
+    CamelAwsSqsPrefix: "A string to use for filtering the list results."
+    CamelAwsSqsReceiptHandle: "The Amazon SQS message receipt handle."
+    CamelAwsSqsMessageId: "The Amazon SQS message ID."
+    CamelAwsSqsMD5OfBody: "The MD5 checksum of the Amazon SQS message."
+    CamelAwsSqsDelaySeconds: "The delay seconds that the Amazon SQS message can be see by others."
+    CamelAwsSqsOperation: "The operation we want to perform"
 spec:
   definition:
-    title: AWS SQS Sink
-    description: |-
-      Send messages to an Amazon Simple Queue Service (SQS) queue.
-
-      The basic authentication method for the SQS 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 SQS client loads the credentials through this provider and doesn't use the basic authentication method.
-    required:
-      - queueNameOrArn
-      - region
-    type: object
+    description: "Send messages to an Amazon Simple Queue Service (SQS) queue.\n\nThe basic authentication method for the SQS service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.\n\nIf you use the default credentials provider, the SQS client loads the credentials through this provider and doesn't use the basic authentication method."
     properties:
       queueNameOrArn:
-        title: Queue Name
-        description: The SQS Queue name or or Amazon Resource Name (ARN).
-        type: string
+        description: "The SQS Queue name or or Amazon Resource Name (ARN)."
+        title: "Queue Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       autoCreateQueue:
-        title: Autocreate Queue
-        description: Automatically create the SQS queue. 
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "Automatically create the SQS queue."
+        title: "Autocreate Queue"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       amazonAWSHost:
-        title: AWS Host
-        description: The hostname of the Amazon AWS cloud. 
-        type: string
-        default: amazonaws.com
+        default: "amazonaws.com"
+        description: "The hostname of the Amazon AWS cloud."
+        title: "AWS Host"
+        type: "string"
       protocol:
-        title: Protocol
-        description: The underlying protocol used to communicate with SQS.
-        type: string
-        example: http or https
-        default: https
+        default: "https"
+        description: "The underlying protocol used to communicate with SQS."
+        example: "http or https"
+        title: "Protocol"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the SQS 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
+        description: "If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        default: false
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
         x-descriptors:
-          - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false    
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "queueNameOrArn"
+     - "region"
+    title: "AWS SQS Sink"
+    type: "object"
   dependencies:
-    - "camel:aws2-sqs"
-    - "camel:kamelet"
+   - "camel:aws2-sqs"
+   - "camel:kamelet"
   template:
     from:
-      uri: kamelet:source
+      uri: "kamelet:source"
       steps:
-      - to:
+       -
+        to:
           uri: "aws2-sqs:{{queueNameOrArn}}"
           parameters:
             autoCreateQueue: "{{autoCreateQueue}}"
@@ -120,4 +157,4 @@ spec:
             protocol: "{{?protocol}}"
             useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
             uriEndpointOverride: "{{?uriEndpointOverride}}"
-            overrideEndpoint: "{{overrideEndpoint}}"            
+            overrideEndpoint: "{{overrideEndpoint}}"
diff --git a/kamelets/aws-sqs-source.kamelet.yaml b/kamelets/aws-sqs-source.kamelet.yaml
index 00846eb1..1b00d339 100644
--- a/kamelets/aws-sqs-source.kamelet.yaml
+++ b/kamelets/aws-sqs-source.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-sqs-source
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -28,134 +26,176 @@ metadata:
     camel.apache.org/keda.type: "aws-sqs-queue"
   labels:
     camel.apache.org/kamelet.type: "source"
+  name: "aws-sqs-source"
+  headers:
+    CamelAwsSqsPrefix: "A string to use for filtering the list results."
+    CamelAwsSqsReceiptHandle: "The Amazon SQS message receipt handle."
+    CamelAwsSqsMessageId: "The Amazon SQS message ID."
+    CamelAwsSqsMessageAttributes: "The Amazon SQS message attributes."
+    CamelAwsSqsMD5OfBody: "The MD5 checksum of the Amazon SQS message."
+    CamelAwsSqsAttributes: "A map of the attributes requested in ReceiveMessage to their respective values."
+    CamelAwsSqsOperation: "The operation we want to perform"
 spec:
   definition:
-    title: "AWS SQS Source"
-    description: |-
-      Receive data from AWS SQS.
-
-      Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
-      
-      When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
-
-      Two headers will be duplicated with different names for clarity at sink level, CamelAwsSqsMessageId will be duplicated into aws.sqs.message.id and CamelAwsSqsReceiptHandle will be duplicated in aws.sqs.receipt.handle
-    required:
-      - queueNameOrArn
-      - region
-    type: object
+    description: "Receive data from AWS SQS.\n\nAccess Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.\n\nWhen using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.\n\nTwo headers w [...]
     properties:
       queueNameOrArn:
-        title: Queue Name
-        description: The SQS Queue Name or ARN
-        type: string
+        description: "The SQS Queue Name or ARN"
+        title: "Queue Name"
+        type: "string"
       deleteAfterRead:
-        title: Auto-delete Messages
-        description: Delete messages after consuming them
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: true
+        description: "Delete messages after consuming them"
+        title: "Auto-delete Messages"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
-        - urn:keda:authentication:awsAccessKeyID
-        - urn:keda:required
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
+         - "urn:keda:authentication:awsAccessKeyID"
+         - "urn:keda:required"
       secretKey:
-        title: Secret Key
-        description: The secret key obtained from AWS.
-        type: string
-        format: password
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
-        - urn:keda:authentication:awsSecretAccessKey
-        - urn:keda:required
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
+         - "urn:keda:authentication:awsSecretAccessKey"
+         - "urn:keda:required"
       region:
-        title: AWS Region
-        description: The AWS region to access.
-        type: string
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
         x-descriptors:
-        - urn:keda:metadata:awsRegion
-        - urn:keda:required
-        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 [...]
+         - "urn:keda:metadata:awsRegion"
+         - "urn:keda:required"
       autoCreateQueue:
-        title: Autocreate Queue
-        description: Setting the autocreation of the SQS queue. 
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "Setting the autocreation of the SQS queue."
+        title: "Autocreate Queue"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       amazonAWSHost:
-        title: AWS Host
-        description: The hostname of the Amazon AWS cloud. 
-        type: string
-        default: amazonaws.com
+        default: "amazonaws.com"
+        description: "The hostname of the Amazon AWS cloud."
+        title: "AWS Host"
+        type: "string"
       protocol:
-        title: Protocol
-        description: The underlying protocol used to communicate with SQS
-        type: string
-        example: http or https
-        default: https
+        default: "https"
+        description: "The underlying protocol used to communicate with SQS"
+        example: "http or https"
+        title: "Protocol"
+        type: "string"
       queueURL:
-        title: Queue URL
-        description: The full SQS Queue URL (required if using KEDA)
-        type: string
+        description: "The full SQS Queue URL (required if using KEDA)"
+        title: "Queue URL"
+        type: "string"
         x-descriptors:
-        - urn:keda:metadata:queueURL
-        - urn:keda:required
+         - "urn:keda:metadata:queueURL"
+         - "urn:keda:required"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the SQS 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
+        description: "If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       delay:
-        title: Delay
-        description: The number of milliseconds before the next poll of the selected stream
-        type: integer
         default: 500
+        description: "The number of milliseconds before the next poll of the selected stream"
+        title: "Delay"
+        type: "integer"
       greedy:
-        title: Greedy Scheduler
-        description: If greedy is enabled, then the polling will happen immediately again, if the previous run polled 1 or more messages.
-        type: boolean
-        x-descriptors:
-          - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "If greedy is enabled, then the polling will happen immediately again, if the previous run polled 1 or more messages."
+        title: "Greedy Scheduler"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "queueNameOrArn"
+     - "region"
+    title: "AWS SQS Source"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws2-sqs"
-    - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
-    - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-sqs"
+   - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
+   - "camel:kamelet"
   template:
     beans:
-      - name: renameHeaders
-        type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders"
-        property:
-          - key: prefix
-            value: 'CamelAwsSqs'
-          - key: renamingPrefix
-            value: 'aws.sqs.'
-          - key: mode
-            value: 'filtering'
-          - key: selectedHeaders
-            value: 'CamelAwsSqsReceiptHandle,CamelAwsSqsMessageId'
+     -
+      name: "renameHeaders"
+      type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders"
+      property:
+       -
+        key: "prefix"
+        value: "CamelAwsSqs"
+       -
+        key: "renamingPrefix"
+        value: "aws.sqs."
+       -
+        key: "mode"
+        value: "filtering"
+       -
+        key: "selectedHeaders"
+        value: "CamelAwsSqsReceiptHandle,CamelAwsSqsMessageId"
     from:
       uri: "aws2-sqs:{{queueNameOrArn}}"
       parameters:
@@ -172,6 +212,8 @@ spec:
         delay: "{{delay}}"
         greedy: "{{greedy}}"
       steps:
-      - process:
+       -
+        process:
           ref: "{{renameHeaders}}"
-      - to: "kamelet:sink"
+       -
+        to: "kamelet:sink"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml
index 670feea5..ca1e1d4b 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml
@@ -1,4 +1,19 @@
----
+# ---------------------------------------------------------------------------
+# 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:
@@ -11,79 +26,64 @@ metadata:
   labels:
     camel.apache.org/kamelet.type: "sink"
   name: "aws-s3-sink"
+  headers:
+    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
+    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
+    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
+    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
+    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link in milliseconds"
+    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the service (not needed when BrowserCompatible is true)"
+    CamelAwsS3DestinationKey: "The Destination key which will be used for the current operation"
+    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used for the current operation"
+    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
+    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
+    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
+    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
+    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
+    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the service (not needed when BrowserCompatible is true)"
+    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
+    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
+    CamelAwsS3RangeStart: "The position of the first byte to get"
+    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL for allowed values."
+    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser compatible"
+    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
+    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
+    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
+    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
+    CamelAwsS3StorageClass: "The storage class of this object."
+    CamelAwsS3RangeEnd: "The position of the last byte to get"
   Headers:
-    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object\
-      \ in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
-    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying\
-      \ what content encodings have been applied to the object and what decoding mechanisms\
-      \ must be applied in order to obtain the media-type referenced by the Content-Type\
-      \ field."
-    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer)\
-      \ The hex encoded 128-bit MD5 digest of the associated object according to RFC\
-      \ 1864. This data is used as an integrity check to verify that the data received\
-      \ by the caller is the same data that was sent by Amazon S3."
-    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject,\
-      \ deleteObject, listBuckets, deleteBucket, listObjects"
-    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link\
-      \ in milliseconds"
-    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the\
-      \ service (not needed when BrowserCompatible is true)"
-    CamelAwsS3DestinationKey: "The Destination key which will be used for the current\
-      \ operation"
-    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used\
-      \ for the current operation"
+    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
+    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
+    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
+    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
+    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link in milliseconds"
+    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the service (not needed when BrowserCompatible is true)"
+    CamelAwsS3DestinationKey: "The Destination key which will be used for the current operation"
+    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used for the current operation"
     CamelMessageTimestamp: "The timestamp of the message"
-    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which\
-      \ specifies presentational information such as the recommended filename for\
-      \ the object to be saved as."
-    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type\
-      \ of content stored in the associated object. The value of this header is a\
-      \ standard MIME type."
-    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the\
-      \ date and time at which Amazon S3 last recorded a modification to the associated\
-      \ object."
-    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket\
-      \ lifecycle), the response includes this header."
-    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows\
-      \ the user to specify caching behavior along the HTTP request/reply chain."
-    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when\
-      \ encrypting the object using AWS-managed keys. For example use AES256."
-    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the\
-      \ service (not needed when BrowserCompatible is true)"
-    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded\
-      \ object. (consumer) The version ID of the associated Amazon S3 object if available.\
-      \ Version IDs are only assigned to objects when an object is uploaded to an\
-      \ Amazon S3 bucket that has object versioning enabled."
-    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves\
-      \ a bucket that is either a source or destination in a replication rule."
+    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
+    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
+    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
+    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket lifecycle), the response includes this header."
+    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
+    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
+    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the service (not needed when BrowserCompatible is true)"
+    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
+    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves a bucket that is either a source or destination in a replication rule."
     CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
     CamelAwsS3RangeStart: "The position of the first byte to get"
-    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL\
-      \ for allowed values."
-    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser\
-      \ compatible"
-    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which\
-      \ will be used for the current operation or in which this object is contained."
-    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated\
-      \ object (content - not including headers) according to RFC 1864. This data\
-      \ is used as a message integrity check to verify that the data received by Amazon\
-      \ S3 is the same data that the caller sent."
-    CamelAwsS3Key: "The key under which this object is stored or will be stored or\
-      \ which will be used for the current operation"
-    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of\
-      \ the associated object in bytes."
+    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL for allowed values."
+    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser compatible"
+    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
+    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
+    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
+    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
     CamelAwsS3StorageClass: "The storage class of this object."
     CamelAwsS3RangeEnd: "The position of the last byte to get"
 spec:
   definition:
-    description: "Upload data to an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads\
-      \ the credentials through this provider and doesn't use the basic authentication\
-      \ method.\n\nIn the header, you can optionally set the `file` / `ce-partition`\
-      \ property to specify the name of the file to upload.\n\nIf you do not set the\
-      \ property in the header, the Kamelet uses the exchange ID for the file name."
+    description: "Upload data to an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method.\n\nIn the header, you can optionally set the `file` / `ce-partition` property to specify the [...]
     properties:
       bucketNameOrArn:
         description: "The S3 Bucket name or Amazon Resource Name (ARN)."
@@ -95,54 +95,54 @@ spec:
         title: "Access Key"
         type: "string"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:password"
-        - "urn:camel:group:credentials"
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
       secretKey:
         description: "The secret key obtained from AWS."
         format: "password"
         title: "Secret Key"
         type: "string"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:password"
-        - "urn:camel:group:credentials"
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
       region:
         description: "The AWS region to access."
         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"
-        - "aws-cn-global"
-        - "aws-us-gov-global"
-        - "aws-iso-global"
-        - "aws-iso-b-global"
+         - "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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
         title: "AWS Region"
         type: "string"
       autoCreateBucket:
@@ -151,64 +151,68 @@ spec:
         title: "Autocreate Bucket"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       useDefaultCredentialsProvider:
         default: false
-        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)."
+        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)."
         title: "Default Credentials Provider"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        description: "The overriding endpoint URI. To use this option, you must also\
-          \ select the `overrideEndpoint` option."
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
         title: "Overwrite Endpoint URI"
         type: "string"
       overrideEndpoint:
         default: false
-        description: "Select this option to override the endpoint URI. To use this\
-          \ option, you must also provide a URI for the `uriEndpointOverride` option."
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
         title: "Endpoint Overwrite"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       keyName:
         description: "The key name for saving an element in the bucket."
         title: "Key Name"
         type: "string"
     required:
-    - "bucketNameOrArn"
-    - "region"
+     - "bucketNameOrArn"
+     - "region"
     title: "AWS S3 Sink"
     type: "object"
   dependencies:
-  - "camel:core"
-  - "camel:aws2-s3"
-  - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-s3"
+   - "camel:kamelet"
   template:
     from:
       uri: "kamelet:source"
       steps:
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[file]}"
+           -
+            simple: "${header[file]}"
             steps:
-            - set-header:
+             -
+              set-header:
                 name: "CamelAwsS3Key"
                 simple: "${header[file]}"
-          - simple: "${header[ce-file]}"
+           -
+            simple: "${header[ce-file]}"
             steps:
-            - set-header:
+             -
+              set-header:
                 name: "CamelAwsS3Key"
                 simple: "${header[ce-file]}"
-          - simple: "'{{?keyName}}' == ''"
+           -
+            simple: "'{{?keyName}}' == ''"
             steps:
-            - set-header:
+             -
+              set-header:
                 name: "CamelAwsS3Key"
                 simple: "${exchangeId}"
-      - to:
+       -
+        to:
           uri: "aws2-s3:{{bucketNameOrArn}}"
           parameters:
             secretKey: "{{?secretKey}}"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml
index 78f85fbb..e1efbffe 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml
@@ -1,4 +1,19 @@
----
+# ---------------------------------------------------------------------------
+# 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:
@@ -11,79 +26,57 @@ metadata:
   labels:
     camel.apache.org/kamelet.type: "source"
   name: "aws-s3-source"
+  headers:
+    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
+    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
+    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
+    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves a bucket that is either a source or destination in a replication rule."
+    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
+    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
+    CamelMessageTimestamp: "The timestamp of the message"
+    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
+    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
+    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
+    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
+    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
+    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
+    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket lifecycle), the response includes this header."
+    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
+    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
+    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
+    CamelAwsS3StorageClass: "The storage class of this object."
   Headers:
-    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object\
-      \ in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
-    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying\
-      \ what content encodings have been applied to the object and what decoding mechanisms\
-      \ must be applied in order to obtain the media-type referenced by the Content-Type\
-      \ field."
-    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer)\
-      \ The hex encoded 128-bit MD5 digest of the associated object according to RFC\
-      \ 1864. This data is used as an integrity check to verify that the data received\
-      \ by the caller is the same data that was sent by Amazon S3."
-    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject,\
-      \ deleteObject, listBuckets, deleteBucket, listObjects"
-    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link\
-      \ in milliseconds"
-    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the\
-      \ service (not needed when BrowserCompatible is true)"
-    CamelAwsS3DestinationKey: "The Destination key which will be used for the current\
-      \ operation"
-    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used\
-      \ for the current operation"
+    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
+    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
+    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
+    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
+    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link in milliseconds"
+    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the service (not needed when BrowserCompatible is true)"
+    CamelAwsS3DestinationKey: "The Destination key which will be used for the current operation"
+    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used for the current operation"
     CamelMessageTimestamp: "The timestamp of the message"
-    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which\
-      \ specifies presentational information such as the recommended filename for\
-      \ the object to be saved as."
-    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type\
-      \ of content stored in the associated object. The value of this header is a\
-      \ standard MIME type."
-    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the\
-      \ date and time at which Amazon S3 last recorded a modification to the associated\
-      \ object."
-    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket\
-      \ lifecycle), the response includes this header."
-    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows\
-      \ the user to specify caching behavior along the HTTP request/reply chain."
-    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when\
-      \ encrypting the object using AWS-managed keys. For example use AES256."
-    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the\
-      \ service (not needed when BrowserCompatible is true)"
-    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded\
-      \ object. (consumer) The version ID of the associated Amazon S3 object if available.\
-      \ Version IDs are only assigned to objects when an object is uploaded to an\
-      \ Amazon S3 bucket that has object versioning enabled."
-    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves\
-      \ a bucket that is either a source or destination in a replication rule."
+    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
+    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
+    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
+    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket lifecycle), the response includes this header."
+    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
+    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
+    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the service (not needed when BrowserCompatible is true)"
+    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
+    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves a bucket that is either a source or destination in a replication rule."
     CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
     CamelAwsS3RangeStart: "The position of the first byte to get"
-    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL\
-      \ for allowed values."
-    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser\
-      \ compatible"
-    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which\
-      \ will be used for the current operation or in which this object is contained."
-    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated\
-      \ object (content - not including headers) according to RFC 1864. This data\
-      \ is used as a message integrity check to verify that the data received by Amazon\
-      \ S3 is the same data that the caller sent."
-    CamelAwsS3Key: "The key under which this object is stored or will be stored or\
-      \ which will be used for the current operation"
-    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of\
-      \ the associated object in bytes."
+    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL for allowed values."
+    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser compatible"
+    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
+    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
+    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
+    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
     CamelAwsS3StorageClass: "The storage class of this object."
     CamelAwsS3RangeEnd: "The position of the last byte to get"
 spec:
   definition:
-    description: "Receive data from an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads\
-      \ the credentials through this provider and doesn't use the basic authentication\
-      \ method.\n\nTwo 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"
+    description: "Receive data from an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method.\n\nTwo headers will be duplicated with different names for clarity at sink level, CamelAw [...]
     properties:
       bucketNameOrArn:
         description: "The S3 Bucket name or Amazon Resource Name (ARN)."
@@ -95,61 +88,61 @@ spec:
         title: "Auto-delete Objects"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       accessKey:
         description: "The access key obtained from AWS."
         format: "password"
         title: "Access Key"
         type: "string"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:password"
-        - "urn:camel:group:credentials"
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
       secretKey:
         description: "The secret key obtained from AWS."
         format: "password"
         title: "Secret Key"
         type: "string"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:password"
-        - "urn:camel:group:credentials"
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
       region:
         description: "The AWS region to access."
         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"
-        - "aws-cn-global"
-        - "aws-us-gov-global"
-        - "aws-iso-global"
-        - "aws-iso-b-global"
+         - "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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
         title: "AWS Region"
         type: "string"
       autoCreateBucket:
@@ -158,16 +151,14 @@ spec:
         title: "Autocreate Bucket"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       includeBody:
         default: true
-        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."
+        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."
         title: "Include Body"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       prefix:
         description: "The AWS S3 bucket prefix to consider while searching."
         example: "folder/"
@@ -175,63 +166,61 @@ spec:
         type: "string"
       ignoreBody:
         default: false
-        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."
+        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."
         title: "Ignore Body"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       useDefaultCredentialsProvider:
         default: false
-        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)."
+        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)."
         title: "Default Credentials Provider"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        description: "The overriding endpoint URI. To use this option, you must also\
-          \ select the `overrideEndpoint` option."
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
         title: "Overwrite Endpoint URI"
         type: "string"
       overrideEndpoint:
         default: false
-        description: "Select this option to override the endpoint URI. To use this\
-          \ option, you must also provide a URI for the `uriEndpointOverride` option."
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
         title: "Endpoint Overwrite"
         type: "boolean"
         x-descriptors:
-        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       delay:
         default: 500
-        description: "The number of milliseconds before the next poll of the selected\
-          \ bucket."
+        description: "The number of milliseconds before the next poll of the selected bucket."
         title: "Delay"
         type: "integer"
     required:
-    - "bucketNameOrArn"
-    - "region"
+     - "bucketNameOrArn"
+     - "region"
     title: "AWS S3 Source"
     type: "object"
   dependencies:
-  - "camel:core"
-  - "camel:aws2-s3"
-  - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
-  - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-s3"
+   - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
+   - "camel:kamelet"
   template:
     beans:
-    - name: "renameHeaders"
+     -
+      name: "renameHeaders"
       type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders"
       property:
-      - key: "prefix"
+       -
+        key: "prefix"
         value: "CamelAwsS3"
-      - key: "renamingPrefix"
+       -
+        key: "renamingPrefix"
         value: "aws.s3."
-      - key: "mode"
+       -
+        key: "mode"
         value: "filtering"
-      - key: "selectedHeaders"
+       -
+        key: "selectedHeaders"
         value: "CamelAwsS3Key,CamelAwsS3BucketName"
     from:
       uri: "aws2-s3:{{bucketNameOrArn}}"
@@ -249,6 +238,8 @@ spec:
         overrideEndpoint: "{{overrideEndpoint}}"
         delay: "{{delay}}"
       steps:
-      - process:
+       -
+        process:
           ref: "{{renameHeaders}}"
-      - to: "kamelet:sink"
+       -
+        to: "kamelet:sink"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml
index e327a23b..ca1e1d4b 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-s3-streaming-upload-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -27,120 +25,201 @@ metadata:
     camel.apache.org/kamelet.group: "AWS S3"
   labels:
     camel.apache.org/kamelet.type: "sink"
+  name: "aws-s3-sink"
+  headers:
+    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
+    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
+    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
+    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
+    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link in milliseconds"
+    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the service (not needed when BrowserCompatible is true)"
+    CamelAwsS3DestinationKey: "The Destination key which will be used for the current operation"
+    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used for the current operation"
+    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
+    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
+    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
+    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
+    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
+    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the service (not needed when BrowserCompatible is true)"
+    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
+    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
+    CamelAwsS3RangeStart: "The position of the first byte to get"
+    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL for allowed values."
+    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser compatible"
+    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
+    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
+    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
+    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
+    CamelAwsS3StorageClass: "The storage class of this object."
+    CamelAwsS3RangeEnd: "The position of the last byte to get"
+  Headers:
+    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
+    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
+    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
+    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
+    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link in milliseconds"
+    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the service (not needed when BrowserCompatible is true)"
+    CamelAwsS3DestinationKey: "The Destination key which will be used for the current operation"
+    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used for the current operation"
+    CamelMessageTimestamp: "The timestamp of the message"
+    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
+    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
+    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
+    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket lifecycle), the response includes this header."
+    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
+    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
+    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the service (not needed when BrowserCompatible is true)"
+    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
+    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves a bucket that is either a source or destination in a replication rule."
+    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
+    CamelAwsS3RangeStart: "The position of the first byte to get"
+    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL for allowed values."
+    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser compatible"
+    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
+    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
+    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
+    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
+    CamelAwsS3StorageClass: "The storage class of this object."
+    CamelAwsS3RangeEnd: "The position of the last byte to get"
 spec:
   definition:
-    title: "AWS S3 Streaming upload Sink"
-    description: |-
-      Upload data to AWS S3 in streaming upload mode.
-
-      Access Key/Secret Key are the basic method for authenticating to the AWS S3 Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
-      
-      When using a default Credentials Provider the S3 client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
-    required:
-      - bucketNameOrArn
-      - region
-      - keyName
-    type: object
+    description: "Upload data to an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method.\n\nIn the header, you can optionally set the `file` / `ce-partition` property to specify the [...]
     properties:
       bucketNameOrArn:
-        title: Bucket Name
-        description: The S3 Bucket name or Amazon Resource Name (ARN)..
-        type: string
+        description: "The S3 Bucket name or Amazon Resource Name (ARN)."
+        title: "Bucket Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       autoCreateBucket:
-        title: Autocreate Bucket
-        description: Setting the autocreation of the S3 bucket bucketName.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
-      restartingPolicy:
-        title: Restarting Policy
-        description: The restarting policy to use in streaming upload mode. There are 2 enums and the value can be one of override, lastPart
-        type: string
-        default: "lastPart"
-      batchMessageNumber:
-        title: Batch Message Number
-        description: The number of messages composing a batch in streaming upload mode
-        type: integer
-        default: 10
-      batchSize:
-        title: Batch Size
-        description: The batch size (in bytes) in streaming upload mode
-        type: integer
-        default: 1000000
-      streamingUploadTimeout:
-        title: Streaming Upload Timeout
-        description: While streaming upload mode is true, this option set the timeout to complete upload
-        type: integer
-      namingStrategy:
-        title: Naming Strategy
-        description: The naming strategy to use in streaming upload mode. There are 2 enums and the value can be one of progressive, random
-        type: string
-        default: "progressive"
-      keyName: 
-        title: Key Name
-        description: Setting the key name for an element in the bucket through endpoint parameter. In Streaming Upload, with the default configuration, this will be the base for the progressive creation of files.
-        type: string
-      useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: Set whether the S3 client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
-        type: boolean
+        description: "Specifies to automatically create the S3 bucket."
+        title: "Autocreate Bucket"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+      useDefaultCredentialsProvider:
         default: false
+        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)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+      keyName:
+        description: "The key name for saving an element in the bucket."
+        title: "Key Name"
+        type: "string"
+    required:
+     - "bucketNameOrArn"
+     - "region"
+    title: "AWS S3 Sink"
+    type: "object"
   dependencies:
-    - "camel:aws2-s3"
-    - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-s3"
+   - "camel:kamelet"
   template:
     from:
       uri: "kamelet:source"
       steps:
-      - to:
+       -
+        choice:
+          when:
+           -
+            simple: "${header[file]}"
+            steps:
+             -
+              set-header:
+                name: "CamelAwsS3Key"
+                simple: "${header[file]}"
+           -
+            simple: "${header[ce-file]}"
+            steps:
+             -
+              set-header:
+                name: "CamelAwsS3Key"
+                simple: "${header[ce-file]}"
+           -
+            simple: "'{{?keyName}}' == ''"
+            steps:
+             -
+              set-header:
+                name: "CamelAwsS3Key"
+                simple: "${exchangeId}"
+       -
+        to:
           uri: "aws2-s3:{{bucketNameOrArn}}"
           parameters:
             secretKey: "{{?secretKey}}"
             accessKey: "{{?accessKey}}"
             region: "{{region}}"
             autoCreateBucket: "{{autoCreateBucket}}"
-            streamingUploadMode: "true"
-            restartingPolicy: "{{restartingPolicy}}"
-            batchMessageNumber: "{{batchMessageNumber}}"
-            batchSize: "{{batchSize}}"
-            namingStrategy: "{{namingStrategy}}"
-            keyName: "{{keyName}}"
-            streamingUploadTimeout: "{{?streamingUploadTimeout}}"
             useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
             uriEndpointOverride: "{{?uriEndpointOverride}}"
             overrideEndpoint: "{{overrideEndpoint}}"
+            keyName: "{{?keyName}}"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml
index 81f952e0..af05d598 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-sqs-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,90 +24,138 @@ metadata:
     camel.apache.org/provider: "Apache Software Foundation"
     camel.apache.org/kamelet.group: "AWS SQS"
   labels:
-    camel.apache.org/kamelet.type: sink
+    camel.apache.org/kamelet.type: "sink"
+  name: "aws-sqs-sink"
+  headers:
+    CamelAwsSqsPrefix: "A string to use for filtering the list results."
+    CamelAwsSqsReceiptHandle: "The Amazon SQS message receipt handle."
+    CamelAwsSqsMessageId: "The Amazon SQS message ID."
+    CamelAwsSqsMD5OfBody: "The MD5 checksum of the Amazon SQS message."
+    CamelAwsSqsDelaySeconds: "The delay seconds that the Amazon SQS message can be see by others."
+    CamelAwsSqsOperation: "The operation we want to perform"
+  Headers:
+    CamelAwsSqsPrefix: "A string to use for filtering the list results."
+    CamelAwsSqsReceiptHandle: "The Amazon SQS message receipt handle."
+    CamelAwsSqsMessageId: "The Amazon SQS message ID."
+    CamelAwsSqsMessageAttributes: "The Amazon SQS message attributes."
+    CamelAwsSqsMD5OfBody: "The MD5 checksum of the Amazon SQS message."
+    CamelAwsSqsAttributes: "A map of the attributes requested in ReceiveMessage to their respective values."
+    CamelAwsSqsDelaySeconds: "The delay seconds that the Amazon SQS message can be see by others."
+    CamelAwsSqsOperation: "The operation we want to perform"
 spec:
   definition:
-    title: AWS SQS Sink
-    description: |-
-      Send messages to an Amazon Simple Queue Service (SQS) queue.
-
-      The basic authentication method for the SQS 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 SQS client loads the credentials through this provider and doesn't use the basic authentication method.
-    required:
-      - queueNameOrArn
-      - region
-    type: object
+    description: "Send messages to an Amazon Simple Queue Service (SQS) queue.\n\nThe basic authentication method for the SQS service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.\n\nIf you use the default credentials provider, the SQS client loads the credentials through this provider and doesn't use the basic authentication method."
     properties:
       queueNameOrArn:
-        title: Queue Name
-        description: The SQS Queue name or or Amazon Resource Name (ARN).
-        type: string
+        description: "The SQS Queue name or or Amazon Resource Name (ARN)."
+        title: "Queue Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       autoCreateQueue:
-        title: Autocreate Queue
-        description: Automatically create the SQS queue. 
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "Automatically create the SQS queue."
+        title: "Autocreate Queue"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       amazonAWSHost:
-        title: AWS Host
-        description: The hostname of the Amazon AWS cloud. 
-        type: string
-        default: amazonaws.com
+        default: "amazonaws.com"
+        description: "The hostname of the Amazon AWS cloud."
+        title: "AWS Host"
+        type: "string"
       protocol:
-        title: Protocol
-        description: The underlying protocol used to communicate with SQS.
-        type: string
-        example: http or https
-        default: https
+        default: "https"
+        description: "The underlying protocol used to communicate with SQS."
+        example: "http or https"
+        title: "Protocol"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the SQS 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
+        description: "If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        default: false
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
         x-descriptors:
-          - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false    
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "queueNameOrArn"
+     - "region"
+    title: "AWS SQS Sink"
+    type: "object"
   dependencies:
-    - "camel:aws2-sqs"
-    - "camel:kamelet"
+   - "camel:aws2-sqs"
+   - "camel:kamelet"
   template:
     from:
-      uri: kamelet:source
+      uri: "kamelet:source"
       steps:
-      - to:
+       -
+        to:
           uri: "aws2-sqs:{{queueNameOrArn}}"
           parameters:
             autoCreateQueue: "{{autoCreateQueue}}"
@@ -120,4 +166,4 @@ spec:
             protocol: "{{?protocol}}"
             useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
             uriEndpointOverride: "{{?uriEndpointOverride}}"
-            overrideEndpoint: "{{overrideEndpoint}}"            
+            overrideEndpoint: "{{overrideEndpoint}}"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml
index 00846eb1..1b00d339 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-sqs-source
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -28,134 +26,176 @@ metadata:
     camel.apache.org/keda.type: "aws-sqs-queue"
   labels:
     camel.apache.org/kamelet.type: "source"
+  name: "aws-sqs-source"
+  headers:
+    CamelAwsSqsPrefix: "A string to use for filtering the list results."
+    CamelAwsSqsReceiptHandle: "The Amazon SQS message receipt handle."
+    CamelAwsSqsMessageId: "The Amazon SQS message ID."
+    CamelAwsSqsMessageAttributes: "The Amazon SQS message attributes."
+    CamelAwsSqsMD5OfBody: "The MD5 checksum of the Amazon SQS message."
+    CamelAwsSqsAttributes: "A map of the attributes requested in ReceiveMessage to their respective values."
+    CamelAwsSqsOperation: "The operation we want to perform"
 spec:
   definition:
-    title: "AWS SQS Source"
-    description: |-
-      Receive data from AWS SQS.
-
-      Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
-      
-      When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
-
-      Two headers will be duplicated with different names for clarity at sink level, CamelAwsSqsMessageId will be duplicated into aws.sqs.message.id and CamelAwsSqsReceiptHandle will be duplicated in aws.sqs.receipt.handle
-    required:
-      - queueNameOrArn
-      - region
-    type: object
+    description: "Receive data from AWS SQS.\n\nAccess Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.\n\nWhen using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.\n\nTwo headers w [...]
     properties:
       queueNameOrArn:
-        title: Queue Name
-        description: The SQS Queue Name or ARN
-        type: string
+        description: "The SQS Queue Name or ARN"
+        title: "Queue Name"
+        type: "string"
       deleteAfterRead:
-        title: Auto-delete Messages
-        description: Delete messages after consuming them
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: true
+        description: "Delete messages after consuming them"
+        title: "Auto-delete Messages"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
-        - urn:keda:authentication:awsAccessKeyID
-        - urn:keda:required
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
+         - "urn:keda:authentication:awsAccessKeyID"
+         - "urn:keda:required"
       secretKey:
-        title: Secret Key
-        description: The secret key obtained from AWS.
-        type: string
-        format: password
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
-        - urn:keda:authentication:awsSecretAccessKey
-        - urn:keda:required
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
+         - "urn:keda:authentication:awsSecretAccessKey"
+         - "urn:keda:required"
       region:
-        title: AWS Region
-        description: The AWS region to access.
-        type: string
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
         x-descriptors:
-        - urn:keda:metadata:awsRegion
-        - urn:keda:required
-        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 [...]
+         - "urn:keda:metadata:awsRegion"
+         - "urn:keda:required"
       autoCreateQueue:
-        title: Autocreate Queue
-        description: Setting the autocreation of the SQS queue. 
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "Setting the autocreation of the SQS queue."
+        title: "Autocreate Queue"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       amazonAWSHost:
-        title: AWS Host
-        description: The hostname of the Amazon AWS cloud. 
-        type: string
-        default: amazonaws.com
+        default: "amazonaws.com"
+        description: "The hostname of the Amazon AWS cloud."
+        title: "AWS Host"
+        type: "string"
       protocol:
-        title: Protocol
-        description: The underlying protocol used to communicate with SQS
-        type: string
-        example: http or https
-        default: https
+        default: "https"
+        description: "The underlying protocol used to communicate with SQS"
+        example: "http or https"
+        title: "Protocol"
+        type: "string"
       queueURL:
-        title: Queue URL
-        description: The full SQS Queue URL (required if using KEDA)
-        type: string
+        description: "The full SQS Queue URL (required if using KEDA)"
+        title: "Queue URL"
+        type: "string"
         x-descriptors:
-        - urn:keda:metadata:queueURL
-        - urn:keda:required
+         - "urn:keda:metadata:queueURL"
+         - "urn:keda:required"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the SQS 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
+        description: "If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       delay:
-        title: Delay
-        description: The number of milliseconds before the next poll of the selected stream
-        type: integer
         default: 500
+        description: "The number of milliseconds before the next poll of the selected stream"
+        title: "Delay"
+        type: "integer"
       greedy:
-        title: Greedy Scheduler
-        description: If greedy is enabled, then the polling will happen immediately again, if the previous run polled 1 or more messages.
-        type: boolean
-        x-descriptors:
-          - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "If greedy is enabled, then the polling will happen immediately again, if the previous run polled 1 or more messages."
+        title: "Greedy Scheduler"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "queueNameOrArn"
+     - "region"
+    title: "AWS SQS Source"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws2-sqs"
-    - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
-    - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-sqs"
+   - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
+   - "camel:kamelet"
   template:
     beans:
-      - name: renameHeaders
-        type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders"
-        property:
-          - key: prefix
-            value: 'CamelAwsSqs'
-          - key: renamingPrefix
-            value: 'aws.sqs.'
-          - key: mode
-            value: 'filtering'
-          - key: selectedHeaders
-            value: 'CamelAwsSqsReceiptHandle,CamelAwsSqsMessageId'
+     -
+      name: "renameHeaders"
+      type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders"
+      property:
+       -
+        key: "prefix"
+        value: "CamelAwsSqs"
+       -
+        key: "renamingPrefix"
+        value: "aws.sqs."
+       -
+        key: "mode"
+        value: "filtering"
+       -
+        key: "selectedHeaders"
+        value: "CamelAwsSqsReceiptHandle,CamelAwsSqsMessageId"
     from:
       uri: "aws2-sqs:{{queueNameOrArn}}"
       parameters:
@@ -172,6 +212,8 @@ spec:
         delay: "{{delay}}"
         greedy: "{{greedy}}"
       steps:
-      - process:
+       -
+        process:
           ref: "{{renameHeaders}}"
-      - to: "kamelet:sink"
+       -
+        to: "kamelet:sink"
diff --git a/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/EnrichKameletsMojo.java b/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/EnrichKameletsMojo.java
index eec0749f..b35d8e3f 100644
--- a/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/EnrichKameletsMojo.java
+++ b/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/EnrichKameletsMojo.java
@@ -19,10 +19,12 @@ package org.apache.camel.kamelets.maven.plugin;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
+import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator;
 import io.fabric8.camelk.v1alpha1.Kamelet;
 import org.apache.camel.catalog.DefaultCamelCatalog;
 import org.apache.camel.kamelets.catalog.KameletsCatalog;
 import org.apache.camel.tooling.model.ComponentModel;
+import org.apache.camel.util.ObjectHelper;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -31,18 +33,15 @@ import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
+import java.io.BufferedOutputStream;
+import java.io.DataOutputStream;
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Arrays;
+import java.io.OutputStream;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * Copy the properties from a source POM to a different destination POM for syncing purposes.
@@ -68,7 +67,25 @@ public class EnrichKameletsMojo extends AbstractMojo {
     @Parameter(property = "kamelets.failOnError", defaultValue = "true")
     private boolean failOnError = true;
 
-    private static final ObjectMapper MAPPER = new ObjectMapper(new YAMLFactory()).configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+    private static final String license = "# ---------------------------------------------------------------------------\n" +
+            "# Licensed to the Apache Software Foundation (ASF) under one or more\n" +
+            "# contributor license agreements.  See the NOTICE file distributed with\n" +
+            "# this work for additional information regarding copyright ownership.\n" +
+            "# The ASF licenses this file to You under the Apache License, Version 2.0\n" +
+            "# (the \"License\"); you may not use this file except in compliance with\n" +
+            "# the License.  You may obtain a copy of the License at\n" +
+            "#\n" +
+            "#      http://www.apache.org/licenses/LICENSE-2.0\n" +
+            "#\n" +
+            "# Unless required by applicable law or agreed to in writing, software\n" +
+            "# distributed under the License is distributed on an \"AS IS\" BASIS,\n" +
+            "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" +
+            "# See the License for the specific language governing permissions and\n" +
+            "# limitations under the License.\n" +
+            "# ---------------------------------------------------------------------------";
+
+    private static final ObjectMapper MAPPER = new ObjectMapper(new YAMLFactory().configure(YAMLGenerator.Feature.SPLIT_LINES, false)
+                        .configure(YAMLGenerator.Feature.INDENT_ARRAYS, true)).configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
@@ -82,18 +99,14 @@ public class EnrichKameletsMojo extends AbstractMojo {
                 try {
                     Kamelet local = MAPPER.readValue(file, Kamelet.class);
                     if (!(local.getMetadata().getLabels().get("camel.apache.org/kamelet.type").equalsIgnoreCase("action"))) {
+                        String camelType = determineCamelType(local);
                         String kameletName = local.getMetadata().getName();
                         int lastIndex = kameletName.lastIndexOf("-");
-                        String schemeName = local.getMetadata().getName().substring(0, lastIndex);
+                        String prefixName = local.getMetadata().getName().substring(0, lastIndex);
                         Map<String, Object> selectedHeaders = new HashMap<>();
-                        if (schemeName.equalsIgnoreCase("aws-s3")) {
-                            List<ComponentModel.EndpointHeaderModel> headers = cc.componentModel("aws2-s3").getEndpointHeaders();
-                            for (ComponentModel.EndpointHeaderModel e : headers
-                            ) {
-                                selectedHeaders.put(e.getName(), e.getDescription());
-                            }
-                            local.getMetadata().getAdditionalProperties().put("Headers", selectedHeaders);
-                            MAPPER.writeValue(file, local);
+                        String schemeName = enumValue(prefixName);
+                        if (ObjectHelper.isNotEmpty(schemeName)) {
+                            writeHeaders(cc, file, local, camelType, selectedHeaders, schemeName);
                         }
                     }
                 } catch (IOException e) {
@@ -103,4 +116,38 @@ public class EnrichKameletsMojo extends AbstractMojo {
             }
         }
     }
+
+    private String determineCamelType(Kamelet local) {
+        String camelType;
+        String kameletType = local.getMetadata().getLabels().get("camel.apache.org/kamelet.type");
+        if (kameletType.equalsIgnoreCase("sink")) {
+            camelType = "producer"; } else {
+            camelType = "consumer"; }
+        return camelType;
+    }
+
+    private void writeHeaders(DefaultCamelCatalog cc, File file, Kamelet local, String camelType, Map<String, Object> selectedHeaders, String schemeName) throws IOException {
+        List<ComponentModel.EndpointHeaderModel> headers = cc.componentModel(schemeName).getEndpointHeaders();
+        if (ObjectHelper.isNotEmpty(headers)) {
+            for (ComponentModel.EndpointHeaderModel e : headers) {
+                if (ObjectHelper.isEmpty(e.getLabel()) || e.getLabel().equalsIgnoreCase(camelType)) {
+                    selectedHeaders.put(e.getName(), e.getDescription());
+                }
+            }
+            local.getMetadata().getAdditionalProperties().put("headers", selectedHeaders);
+            FileOutputStream fos = new FileOutputStream(file.getPath());
+            OutputStream outStream = new DataOutputStream(new BufferedOutputStream(fos));
+            String kameletValue = MAPPER.writeValueAsString(local);
+            outStream.write(license.getBytes());
+            outStream.write(kameletValue.getBytes());
+            outStream.close();
+        }
+    }
+
+    private String enumValue(String prefix){
+            for (KameletPrefixSchemeEnum c : KameletPrefixSchemeEnum.values()) {
+                if (c.prefix.equals(prefix)) return c.label;
+            }
+            return null;
+        }
     }
diff --git a/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/KameletPrefixSchemeEnum.java b/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/KameletPrefixSchemeEnum.java
new file mode 100644
index 00000000..9952ce0c
--- /dev/null
+++ b/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/KameletPrefixSchemeEnum.java
@@ -0,0 +1,43 @@
+/*
+ * 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.maven.plugin;
+
+public enum KameletPrefixSchemeEnum {
+    aws_cloudwatch("aws-s3","aws2-cw"),
+    aws_ddb("aws-ddb","aws2-ddb"),
+    aws_ddb_streams("aws-ddb","aws2-ddbstream"),
+    aws_ec2("aws-ec2","aws2-ec2"),
+    aws_eventbridge("aws-eventbridge","aws2-eventbridge"),
+    aws_lambda("aws-lambda","aws2-lambda"),
+    aws_redshift("aws-redshift","sql"),
+    aws_s3("aws-s3","aws2-s3"),
+    aws_secrets_manager("aws-secrets-manager","aws-secrets-manager"),
+    aws_ses("aws-ses","aws2-ses"),
+    aws_sns("aws-sns","aws2-sns"),
+    aws_sns_fifo("aws-sns-fifo","aws2-sns"),
+    aws_sqs("aws-sqs","aws2-sqs"),
+    aws_sqs_batch("aws-sqs-batch","aws2-sqs"),
+    aws_sqs_fifo("aws-sqs-fifo","aws2-sqs");;
+
+    public final String label;
+    public final String prefix;
+
+    private KameletPrefixSchemeEnum(String prefix, String label) {
+        this.prefix = prefix;
+        this.label = label;
+    }
+}


[camel-kamelets] 01/04: Kamelets Enricher Maven Plugin for improving Kamelets metadata

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

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

commit ccf07846cb6f60587feee8f8df293c566e3e4ea9
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Oct 13 18:49:21 2022 +0200

    Kamelets Enricher Maven Plugin for improving Kamelets metadata
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 kamelets/aws-s3-sink.kamelet.yaml                  | 246 ++++++++++++------
 kamelets/aws-s3-source.kamelet.yaml                | 288 ++++++++++++++-------
 library/camel-kamelets-bom/pom.xml                 |   1 +
 .../resources/kamelets/aws-s3-sink.kamelet.yaml    | 246 ++++++++++++------
 .../resources/kamelets/aws-s3-source.kamelet.yaml  | 288 ++++++++++++++-------
 .../kamelets/maven/plugin/EnrichKameletsMojo.java  | 106 ++++++++
 6 files changed, 833 insertions(+), 342 deletions(-)

diff --git a/kamelets/aws-s3-sink.kamelet.yaml b/kamelets/aws-s3-sink.kamelet.yaml
index d8d8ab6f..670feea5 100644
--- a/kamelets/aws-s3-sink.kamelet.yaml
+++ b/kamelets/aws-s3-sink.kamelet.yaml
@@ -1,24 +1,7 @@
-# ---------------------------------------------------------------------------
-# 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
+---
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-s3-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -27,82 +10,183 @@ metadata:
     camel.apache.org/kamelet.group: "AWS S3"
   labels:
     camel.apache.org/kamelet.type: "sink"
+  name: "aws-s3-sink"
+  Headers:
+    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object\
+      \ in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
+    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying\
+      \ what content encodings have been applied to the object and what decoding mechanisms\
+      \ must be applied in order to obtain the media-type referenced by the Content-Type\
+      \ field."
+    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer)\
+      \ The hex encoded 128-bit MD5 digest of the associated object according to RFC\
+      \ 1864. This data is used as an integrity check to verify that the data received\
+      \ by the caller is the same data that was sent by Amazon S3."
+    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject,\
+      \ deleteObject, listBuckets, deleteBucket, listObjects"
+    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link\
+      \ in milliseconds"
+    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the\
+      \ service (not needed when BrowserCompatible is true)"
+    CamelAwsS3DestinationKey: "The Destination key which will be used for the current\
+      \ operation"
+    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used\
+      \ for the current operation"
+    CamelMessageTimestamp: "The timestamp of the message"
+    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which\
+      \ specifies presentational information such as the recommended filename for\
+      \ the object to be saved as."
+    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type\
+      \ of content stored in the associated object. The value of this header is a\
+      \ standard MIME type."
+    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the\
+      \ date and time at which Amazon S3 last recorded a modification to the associated\
+      \ object."
+    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket\
+      \ lifecycle), the response includes this header."
+    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows\
+      \ the user to specify caching behavior along the HTTP request/reply chain."
+    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when\
+      \ encrypting the object using AWS-managed keys. For example use AES256."
+    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the\
+      \ service (not needed when BrowserCompatible is true)"
+    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded\
+      \ object. (consumer) The version ID of the associated Amazon S3 object if available.\
+      \ Version IDs are only assigned to objects when an object is uploaded to an\
+      \ Amazon S3 bucket that has object versioning enabled."
+    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves\
+      \ a bucket that is either a source or destination in a replication rule."
+    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
+    CamelAwsS3RangeStart: "The position of the first byte to get"
+    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL\
+      \ for allowed values."
+    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser\
+      \ compatible"
+    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which\
+      \ will be used for the current operation or in which this object is contained."
+    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated\
+      \ object (content - not including headers) according to RFC 1864. This data\
+      \ is used as a message integrity check to verify that the data received by Amazon\
+      \ S3 is the same data that the caller sent."
+    CamelAwsS3Key: "The key under which this object is stored or will be stored or\
+      \ which will be used for the current operation"
+    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of\
+      \ the associated object in bytes."
+    CamelAwsS3StorageClass: "The storage class of this object."
+    CamelAwsS3RangeEnd: "The position of the last byte to get"
 spec:
   definition:
-    title: "AWS S3 Sink"
-    description: |-
-      Upload data to 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.
-
-      In the header, you can optionally set the `file` / `ce-partition` property to specify the name of the file to upload.
-
-      If you do not set the property in the header, the Kamelet uses the exchange ID for the file name.
-    required:
-      - bucketNameOrArn
-      - region
-    type: object
+    description: "Upload data to an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads\
+      \ the credentials through this provider and doesn't use the basic authentication\
+      \ method.\n\nIn the header, you can optionally set the `file` / `ce-partition`\
+      \ property to specify the name of the file to upload.\n\nIf you do not set the\
+      \ property in the header, the Kamelet uses the exchange ID for the file name."
     properties:
       bucketNameOrArn:
-        title: Bucket Name
-        description: The S3 Bucket name or Amazon Resource Name (ARN).
-        type: string
+        description: "The S3 Bucket name or Amazon Resource Name (ARN)."
+        title: "Bucket Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+        - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+        - "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 [...]
+        description: "The AWS region to access."
+        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"
+        - "aws-cn-global"
+        - "aws-us-gov-global"
+        - "aws-iso-global"
+        - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       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
-      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
+        description: "Specifies to automatically create the S3 bucket."
+        title: "Autocreate Bucket"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+      useDefaultCredentialsProvider:
         default: false
+        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)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also\
+          \ select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this\
+          \ option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       keyName:
-        title: Key Name
-        description: The key name for saving an element in the bucket.
-        type: string
+        description: "The key name for saving an element in the bucket."
+        title: "Key Name"
+        type: "string"
+    required:
+    - "bucketNameOrArn"
+    - "region"
+    title: "AWS S3 Sink"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws2-s3"
-    - "camel:kamelet"
+  - "camel:core"
+  - "camel:aws2-s3"
+  - "camel:kamelet"
   template:
     from:
       uri: "kamelet:source"
@@ -112,17 +196,17 @@ spec:
           - simple: "${header[file]}"
             steps:
             - set-header:
-                name: CamelAwsS3Key
+                name: "CamelAwsS3Key"
                 simple: "${header[file]}"
           - simple: "${header[ce-file]}"
             steps:
             - set-header:
-                name: CamelAwsS3Key
+                name: "CamelAwsS3Key"
                 simple: "${header[ce-file]}"
           - simple: "'{{?keyName}}' == ''"
             steps:
             - set-header:
-                name: CamelAwsS3Key
+                name: "CamelAwsS3Key"
                 simple: "${exchangeId}"
       - to:
           uri: "aws2-s3:{{bucketNameOrArn}}"
diff --git a/kamelets/aws-s3-source.kamelet.yaml b/kamelets/aws-s3-source.kamelet.yaml
index 6ab2bca4..78f85fbb 100644
--- a/kamelets/aws-s3-source.kamelet.yaml
+++ b/kamelets/aws-s3-source.kamelet.yaml
@@ -1,7 +1,7 @@
-apiVersion: camel.apache.org/v1alpha1
-kind: Kamelet
+---
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-s3-source
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -10,121 +10,229 @@ metadata:
     camel.apache.org/kamelet.group: "AWS S3"
   labels:
     camel.apache.org/kamelet.type: "source"
+  name: "aws-s3-source"
+  Headers:
+    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object\
+      \ in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
+    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying\
+      \ what content encodings have been applied to the object and what decoding mechanisms\
+      \ must be applied in order to obtain the media-type referenced by the Content-Type\
+      \ field."
+    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer)\
+      \ The hex encoded 128-bit MD5 digest of the associated object according to RFC\
+      \ 1864. This data is used as an integrity check to verify that the data received\
+      \ by the caller is the same data that was sent by Amazon S3."
+    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject,\
+      \ deleteObject, listBuckets, deleteBucket, listObjects"
+    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link\
+      \ in milliseconds"
+    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the\
+      \ service (not needed when BrowserCompatible is true)"
+    CamelAwsS3DestinationKey: "The Destination key which will be used for the current\
+      \ operation"
+    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used\
+      \ for the current operation"
+    CamelMessageTimestamp: "The timestamp of the message"
+    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which\
+      \ specifies presentational information such as the recommended filename for\
+      \ the object to be saved as."
+    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type\
+      \ of content stored in the associated object. The value of this header is a\
+      \ standard MIME type."
+    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the\
+      \ date and time at which Amazon S3 last recorded a modification to the associated\
+      \ object."
+    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket\
+      \ lifecycle), the response includes this header."
+    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows\
+      \ the user to specify caching behavior along the HTTP request/reply chain."
+    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when\
+      \ encrypting the object using AWS-managed keys. For example use AES256."
+    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the\
+      \ service (not needed when BrowserCompatible is true)"
+    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded\
+      \ object. (consumer) The version ID of the associated Amazon S3 object if available.\
+      \ Version IDs are only assigned to objects when an object is uploaded to an\
+      \ Amazon S3 bucket that has object versioning enabled."
+    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves\
+      \ a bucket that is either a source or destination in a replication rule."
+    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
+    CamelAwsS3RangeStart: "The position of the first byte to get"
+    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL\
+      \ for allowed values."
+    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser\
+      \ compatible"
+    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which\
+      \ will be used for the current operation or in which this object is contained."
+    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated\
+      \ object (content - not including headers) according to RFC 1864. This data\
+      \ is used as a message integrity check to verify that the data received by Amazon\
+      \ S3 is the same data that the caller sent."
+    CamelAwsS3Key: "The key under which this object is stored or will be stored or\
+      \ which will be used for the current operation"
+    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of\
+      \ the associated object in bytes."
+    CamelAwsS3StorageClass: "The storage class of this object."
+    CamelAwsS3RangeEnd: "The position of the last byte to get"
 spec:
   definition:
-    title: "AWS S3 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
-    required:
-      - bucketNameOrArn
-      - region
-    type: object
+    description: "Receive data from an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads\
+      \ the credentials through this provider and doesn't use the basic authentication\
+      \ method.\n\nTwo 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"
     properties:
       bucketNameOrArn:
-        title: Bucket Name
-        description: The S3 Bucket name or Amazon Resource Name (ARN).
-        type: string
+        description: "The S3 Bucket name or Amazon Resource Name (ARN)."
+        title: "Bucket Name"
+        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
+        description: "Specifies to delete objects after consuming them."
+        title: "Auto-delete Objects"
+        type: "boolean"
+        x-descriptors:
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+        - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+        - "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 [...]
+        description: "The AWS region to access."
+        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"
+        - "aws-cn-global"
+        - "aws-us-gov-global"
+        - "aws-iso-global"
+        - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       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
+        description: "Specifies to automatically create the S3 bucket."
+        title: "Autocreate Bucket"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+      includeBody:
         default: true
+        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."
+        title: "Include Body"
+        type: "boolean"
+        x-descriptors:
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       prefix:
-        title: Prefix
-        description: The AWS S3 bucket prefix to consider while searching.
-        type: string
-        example: 'folder/'
+        description: "The AWS S3 bucket prefix to consider while searching."
+        example: "folder/"
+        title: "Prefix"
+        type: "string"
       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
+        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."
+        title: "Ignore Body"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+      useDefaultCredentialsProvider:
         default: false
+        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)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also\
+          \ select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this\
+          \ option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       delay:
-        title: Delay
-        description: The number of milliseconds before the next poll of the selected bucket.
-        type: integer
         default: 500
+        description: "The number of milliseconds before the next poll of the selected\
+          \ bucket."
+        title: "Delay"
+        type: "integer"
+    required:
+    - "bucketNameOrArn"
+    - "region"
+    title: "AWS S3 Source"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws2-s3"
-    - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
-    - "camel:kamelet"
+  - "camel:core"
+  - "camel:aws2-s3"
+  - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
+  - "camel:kamelet"
   template:
     beans:
-      - 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'
+    - 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:
diff --git a/library/camel-kamelets-bom/pom.xml b/library/camel-kamelets-bom/pom.xml
index dfb6fa14..5093b3da 100644
--- a/library/camel-kamelets-bom/pom.xml
+++ b/library/camel-kamelets-bom/pom.xml
@@ -82,6 +82,7 @@
                         <phase>compile</phase>
                         <goals>
                             <goal>validate</goal>
+                           <goal>enrich</goal>
                         </goals>
                     </execution>
                 </executions>
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml
index d8d8ab6f..670feea5 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml
@@ -1,24 +1,7 @@
-# ---------------------------------------------------------------------------
-# 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
+---
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-s3-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -27,82 +10,183 @@ metadata:
     camel.apache.org/kamelet.group: "AWS S3"
   labels:
     camel.apache.org/kamelet.type: "sink"
+  name: "aws-s3-sink"
+  Headers:
+    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object\
+      \ in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
+    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying\
+      \ what content encodings have been applied to the object and what decoding mechanisms\
+      \ must be applied in order to obtain the media-type referenced by the Content-Type\
+      \ field."
+    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer)\
+      \ The hex encoded 128-bit MD5 digest of the associated object according to RFC\
+      \ 1864. This data is used as an integrity check to verify that the data received\
+      \ by the caller is the same data that was sent by Amazon S3."
+    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject,\
+      \ deleteObject, listBuckets, deleteBucket, listObjects"
+    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link\
+      \ in milliseconds"
+    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the\
+      \ service (not needed when BrowserCompatible is true)"
+    CamelAwsS3DestinationKey: "The Destination key which will be used for the current\
+      \ operation"
+    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used\
+      \ for the current operation"
+    CamelMessageTimestamp: "The timestamp of the message"
+    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which\
+      \ specifies presentational information such as the recommended filename for\
+      \ the object to be saved as."
+    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type\
+      \ of content stored in the associated object. The value of this header is a\
+      \ standard MIME type."
+    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the\
+      \ date and time at which Amazon S3 last recorded a modification to the associated\
+      \ object."
+    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket\
+      \ lifecycle), the response includes this header."
+    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows\
+      \ the user to specify caching behavior along the HTTP request/reply chain."
+    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when\
+      \ encrypting the object using AWS-managed keys. For example use AES256."
+    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the\
+      \ service (not needed when BrowserCompatible is true)"
+    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded\
+      \ object. (consumer) The version ID of the associated Amazon S3 object if available.\
+      \ Version IDs are only assigned to objects when an object is uploaded to an\
+      \ Amazon S3 bucket that has object versioning enabled."
+    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves\
+      \ a bucket that is either a source or destination in a replication rule."
+    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
+    CamelAwsS3RangeStart: "The position of the first byte to get"
+    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL\
+      \ for allowed values."
+    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser\
+      \ compatible"
+    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which\
+      \ will be used for the current operation or in which this object is contained."
+    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated\
+      \ object (content - not including headers) according to RFC 1864. This data\
+      \ is used as a message integrity check to verify that the data received by Amazon\
+      \ S3 is the same data that the caller sent."
+    CamelAwsS3Key: "The key under which this object is stored or will be stored or\
+      \ which will be used for the current operation"
+    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of\
+      \ the associated object in bytes."
+    CamelAwsS3StorageClass: "The storage class of this object."
+    CamelAwsS3RangeEnd: "The position of the last byte to get"
 spec:
   definition:
-    title: "AWS S3 Sink"
-    description: |-
-      Upload data to 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.
-
-      In the header, you can optionally set the `file` / `ce-partition` property to specify the name of the file to upload.
-
-      If you do not set the property in the header, the Kamelet uses the exchange ID for the file name.
-    required:
-      - bucketNameOrArn
-      - region
-    type: object
+    description: "Upload data to an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads\
+      \ the credentials through this provider and doesn't use the basic authentication\
+      \ method.\n\nIn the header, you can optionally set the `file` / `ce-partition`\
+      \ property to specify the name of the file to upload.\n\nIf you do not set the\
+      \ property in the header, the Kamelet uses the exchange ID for the file name."
     properties:
       bucketNameOrArn:
-        title: Bucket Name
-        description: The S3 Bucket name or Amazon Resource Name (ARN).
-        type: string
+        description: "The S3 Bucket name or Amazon Resource Name (ARN)."
+        title: "Bucket Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+        - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+        - "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 [...]
+        description: "The AWS region to access."
+        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"
+        - "aws-cn-global"
+        - "aws-us-gov-global"
+        - "aws-iso-global"
+        - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       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
-      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
+        description: "Specifies to automatically create the S3 bucket."
+        title: "Autocreate Bucket"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+      useDefaultCredentialsProvider:
         default: false
+        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)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also\
+          \ select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this\
+          \ option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       keyName:
-        title: Key Name
-        description: The key name for saving an element in the bucket.
-        type: string
+        description: "The key name for saving an element in the bucket."
+        title: "Key Name"
+        type: "string"
+    required:
+    - "bucketNameOrArn"
+    - "region"
+    title: "AWS S3 Sink"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws2-s3"
-    - "camel:kamelet"
+  - "camel:core"
+  - "camel:aws2-s3"
+  - "camel:kamelet"
   template:
     from:
       uri: "kamelet:source"
@@ -112,17 +196,17 @@ spec:
           - simple: "${header[file]}"
             steps:
             - set-header:
-                name: CamelAwsS3Key
+                name: "CamelAwsS3Key"
                 simple: "${header[file]}"
           - simple: "${header[ce-file]}"
             steps:
             - set-header:
-                name: CamelAwsS3Key
+                name: "CamelAwsS3Key"
                 simple: "${header[ce-file]}"
           - simple: "'{{?keyName}}' == ''"
             steps:
             - set-header:
-                name: CamelAwsS3Key
+                name: "CamelAwsS3Key"
                 simple: "${exchangeId}"
       - to:
           uri: "aws2-s3:{{bucketNameOrArn}}"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml
index 6ab2bca4..78f85fbb 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml
@@ -1,7 +1,7 @@
-apiVersion: camel.apache.org/v1alpha1
-kind: Kamelet
+---
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-s3-source
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -10,121 +10,229 @@ metadata:
     camel.apache.org/kamelet.group: "AWS S3"
   labels:
     camel.apache.org/kamelet.type: "source"
+  name: "aws-s3-source"
+  Headers:
+    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object\
+      \ in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
+    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying\
+      \ what content encodings have been applied to the object and what decoding mechanisms\
+      \ must be applied in order to obtain the media-type referenced by the Content-Type\
+      \ field."
+    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer)\
+      \ The hex encoded 128-bit MD5 digest of the associated object according to RFC\
+      \ 1864. This data is used as an integrity check to verify that the data received\
+      \ by the caller is the same data that was sent by Amazon S3."
+    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject,\
+      \ deleteObject, listBuckets, deleteBucket, listObjects"
+    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link\
+      \ in milliseconds"
+    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the\
+      \ service (not needed when BrowserCompatible is true)"
+    CamelAwsS3DestinationKey: "The Destination key which will be used for the current\
+      \ operation"
+    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used\
+      \ for the current operation"
+    CamelMessageTimestamp: "The timestamp of the message"
+    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which\
+      \ specifies presentational information such as the recommended filename for\
+      \ the object to be saved as."
+    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type\
+      \ of content stored in the associated object. The value of this header is a\
+      \ standard MIME type."
+    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the\
+      \ date and time at which Amazon S3 last recorded a modification to the associated\
+      \ object."
+    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket\
+      \ lifecycle), the response includes this header."
+    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows\
+      \ the user to specify caching behavior along the HTTP request/reply chain."
+    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when\
+      \ encrypting the object using AWS-managed keys. For example use AES256."
+    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the\
+      \ service (not needed when BrowserCompatible is true)"
+    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded\
+      \ object. (consumer) The version ID of the associated Amazon S3 object if available.\
+      \ Version IDs are only assigned to objects when an object is uploaded to an\
+      \ Amazon S3 bucket that has object versioning enabled."
+    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves\
+      \ a bucket that is either a source or destination in a replication rule."
+    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
+    CamelAwsS3RangeStart: "The position of the first byte to get"
+    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL\
+      \ for allowed values."
+    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser\
+      \ compatible"
+    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which\
+      \ will be used for the current operation or in which this object is contained."
+    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated\
+      \ object (content - not including headers) according to RFC 1864. This data\
+      \ is used as a message integrity check to verify that the data received by Amazon\
+      \ S3 is the same data that the caller sent."
+    CamelAwsS3Key: "The key under which this object is stored or will be stored or\
+      \ which will be used for the current operation"
+    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of\
+      \ the associated object in bytes."
+    CamelAwsS3StorageClass: "The storage class of this object."
+    CamelAwsS3RangeEnd: "The position of the last byte to get"
 spec:
   definition:
-    title: "AWS S3 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
-    required:
-      - bucketNameOrArn
-      - region
-    type: object
+    description: "Receive data from an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads\
+      \ the credentials through this provider and doesn't use the basic authentication\
+      \ method.\n\nTwo 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"
     properties:
       bucketNameOrArn:
-        title: Bucket Name
-        description: The S3 Bucket name or Amazon Resource Name (ARN).
-        type: string
+        description: "The S3 Bucket name or Amazon Resource Name (ARN)."
+        title: "Bucket Name"
+        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
+        description: "Specifies to delete objects after consuming them."
+        title: "Auto-delete Objects"
+        type: "boolean"
+        x-descriptors:
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+        - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+        - "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 [...]
+        description: "The AWS region to access."
+        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"
+        - "aws-cn-global"
+        - "aws-us-gov-global"
+        - "aws-iso-global"
+        - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       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
+        description: "Specifies to automatically create the S3 bucket."
+        title: "Autocreate Bucket"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+      includeBody:
         default: true
+        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."
+        title: "Include Body"
+        type: "boolean"
+        x-descriptors:
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       prefix:
-        title: Prefix
-        description: The AWS S3 bucket prefix to consider while searching.
-        type: string
-        example: 'folder/'
+        description: "The AWS S3 bucket prefix to consider while searching."
+        example: "folder/"
+        title: "Prefix"
+        type: "string"
       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
+        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."
+        title: "Ignore Body"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+      useDefaultCredentialsProvider:
         default: false
+        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)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also\
+          \ select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this\
+          \ option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+        - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       delay:
-        title: Delay
-        description: The number of milliseconds before the next poll of the selected bucket.
-        type: integer
         default: 500
+        description: "The number of milliseconds before the next poll of the selected\
+          \ bucket."
+        title: "Delay"
+        type: "integer"
+    required:
+    - "bucketNameOrArn"
+    - "region"
+    title: "AWS S3 Source"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws2-s3"
-    - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
-    - "camel:kamelet"
+  - "camel:core"
+  - "camel:aws2-s3"
+  - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
+  - "camel:kamelet"
   template:
     beans:
-      - 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'
+    - 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:
diff --git a/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/EnrichKameletsMojo.java b/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/EnrichKameletsMojo.java
new file mode 100644
index 00000000..eec0749f
--- /dev/null
+++ b/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/EnrichKameletsMojo.java
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.kamelets.maven.plugin;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
+import io.fabric8.camelk.v1alpha1.Kamelet;
+import org.apache.camel.catalog.DefaultCamelCatalog;
+import org.apache.camel.kamelets.catalog.KameletsCatalog;
+import org.apache.camel.tooling.model.ComponentModel;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * Copy the properties from a source POM to a different destination POM for syncing purposes.
+ */
+@Mojo(name = "enrich", defaultPhase = LifecyclePhase.GENERATE_RESOURCES, threadSafe = true)
+public class EnrichKameletsMojo extends AbstractMojo {
+
+    /**
+     * The base directory
+     */
+    @Parameter(defaultValue = "${project.basedir}")
+    protected File baseDir;
+
+    /**
+     * The Maven project.
+     */
+    @Parameter(defaultValue = "${project}", readonly = true, required = true)
+    protected MavenProject project;
+
+    /**
+     * Whether to fail if validation failed or not. By default true.
+     */
+    @Parameter(property = "kamelets.failOnError", defaultValue = "true")
+    private boolean failOnError = true;
+
+    private static final ObjectMapper MAPPER = new ObjectMapper(new YAMLFactory()).configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+
+    @Override
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        KameletsCatalog catalog = new KameletsCatalog();
+        DefaultCamelCatalog cc = new DefaultCamelCatalog();
+        File folder = new File("kamelets/");
+        File[] listOfFiles = folder.listFiles();
+
+        for (File file : listOfFiles) {
+            if (file.isFile()) {
+                try {
+                    Kamelet local = MAPPER.readValue(file, Kamelet.class);
+                    if (!(local.getMetadata().getLabels().get("camel.apache.org/kamelet.type").equalsIgnoreCase("action"))) {
+                        String kameletName = local.getMetadata().getName();
+                        int lastIndex = kameletName.lastIndexOf("-");
+                        String schemeName = local.getMetadata().getName().substring(0, lastIndex);
+                        Map<String, Object> selectedHeaders = new HashMap<>();
+                        if (schemeName.equalsIgnoreCase("aws-s3")) {
+                            List<ComponentModel.EndpointHeaderModel> headers = cc.componentModel("aws2-s3").getEndpointHeaders();
+                            for (ComponentModel.EndpointHeaderModel e : headers
+                            ) {
+                                selectedHeaders.put(e.getName(), e.getDescription());
+                            }
+                            local.getMetadata().getAdditionalProperties().put("Headers", selectedHeaders);
+                            MAPPER.writeValue(file, local);
+                        }
+                    }
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+
+            }
+        }
+    }
+    }


[camel-kamelets] 03/04: Kamelets Enricher Maven Plugin for improving Kamelets metadata - Generate Headers Metadata for AWS Kamelets

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

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

commit 9a3f89284eee88c781f175886278554d7650b1c7
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Oct 14 12:07:24 2022 +0200

    Kamelets Enricher Maven Plugin for improving Kamelets metadata - Generate Headers Metadata for AWS Kamelets
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 kamelets/aws-ddb-sink.kamelet.yaml                 | 192 +++++++++++-------
 kamelets/aws-ec2-sink.kamelet.yaml                 | 169 ++++++++++------
 kamelets/aws-eventbridge-sink.kamelet.yaml         | 212 +++++++++++--------
 kamelets/aws-lambda-sink.kamelet.yaml              | 121 ++++++-----
 kamelets/aws-redshift-sink.kamelet.yaml            | 145 ++++++-------
 kamelets/aws-redshift-source.kamelet.yaml          | 143 ++++++-------
 kamelets/aws-s3-sink.kamelet.yaml                  |  33 +--
 kamelets/aws-s3-source.kamelet.yaml                |  26 +--
 kamelets/aws-s3-streaming-upload-sink.kamelet.yaml |  33 +--
 kamelets/aws-secrets-manager-sink.kamelet.yaml     | 149 +++++++++-----
 kamelets/aws-ses-sink.kamelet.yaml                 | 202 ++++++++++++-------
 kamelets/aws-sns-fifo-sink.kamelet.yaml            | 221 ++++++++++++--------
 kamelets/aws-sns-sink.kamelet.yaml                 | 173 +++++++++-------
 kamelets/aws-sqs-batch-sink.kamelet.yaml           | 181 ++++++++++-------
 kamelets/aws-sqs-fifo-sink.kamelet.yaml            | 224 +++++++++++++--------
 .../resources/kamelets/aws-ddb-sink.kamelet.yaml   | 192 +++++++++++-------
 .../resources/kamelets/aws-ec2-sink.kamelet.yaml   | 169 ++++++++++------
 .../kamelets/aws-eventbridge-sink.kamelet.yaml     | 212 +++++++++++--------
 .../kamelets/aws-lambda-sink.kamelet.yaml          | 121 ++++++-----
 .../kamelets/aws-redshift-sink.kamelet.yaml        | 145 ++++++-------
 .../kamelets/aws-redshift-source.kamelet.yaml      | 143 ++++++-------
 .../resources/kamelets/aws-s3-sink.kamelet.yaml    |  62 +-----
 .../resources/kamelets/aws-s3-source.kamelet.yaml  |  55 +----
 .../aws-s3-streaming-upload-sink.kamelet.yaml      |  62 +-----
 .../kamelets/aws-secrets-manager-sink.kamelet.yaml | 149 +++++++++-----
 .../resources/kamelets/aws-ses-sink.kamelet.yaml   | 202 ++++++++++++-------
 .../kamelets/aws-sns-fifo-sink.kamelet.yaml        | 221 ++++++++++++--------
 .../resources/kamelets/aws-sns-sink.kamelet.yaml   | 173 +++++++++-------
 .../kamelets/aws-sqs-batch-sink.kamelet.yaml       | 181 ++++++++++-------
 .../kamelets/aws-sqs-fifo-sink.kamelet.yaml        | 224 +++++++++++++--------
 .../resources/kamelets/aws-sqs-sink.kamelet.yaml   |   9 -
 31 files changed, 2620 insertions(+), 1924 deletions(-)

diff --git a/kamelets/aws-ddb-sink.kamelet.yaml b/kamelets/aws-ddb-sink.kamelet.yaml
index 5b603abf..51689b51 100644
--- a/kamelets/aws-ddb-sink.kamelet.yaml
+++ b/kamelets/aws-ddb-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-ddb-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -27,98 +25,145 @@ metadata:
     camel.apache.org/kamelet.group: "AWS DynamoDB Streams"
   labels:
     camel.apache.org/kamelet.type: "sink"
+  name: "aws-ddb-sink"
+  headers:
+    CamelAwsDdbUpdateCondition: "Designates an attribute for a conditional modification."
+    CamelAwsDdbBatchItems: "A map of the table name and corresponding items to get by primary key."
+    CamelAwsDdbReturnValues: "Use this parameter if you want to get the attribute name-value pairs before or after they are modified(NONE, ALL_OLD, UPDATED_OLD, ALL_NEW, UPDATED_NEW)."
+    CamelAwsDdbScanFilter: "Evaluates the scan results and returns only the desired values."
+    CamelAwsDdbUpdateValues: "Map of attribute name to the new value and action for the update."
+    CamelAwsDdbItem: "A map of the attributes for the item, and must include the primary key values that define the item."
+    CamelAwsDdbLimit: "The maximum number of items to return."
+    CamelAwsDdbAttributeNames: "If attribute names are not specified then all attributes will be returned."
+    CamelAwsDdbIndexName: "If set will be used as Secondary Index for Query operation."
+    CamelAwsDdbKeyConditions: "This header specify the selection criteria for the query, and merge together the two old headers CamelAwsDdbHashKeyValue and CamelAwsDdbScanRangeKeyCondition"
+    CamelAwsDdbStartKey: "Primary key of the item from which to continue an earlier query."
+    CamelAwsDdbTableName: "Table Name for this operation."
+    CamelAwsDdbConsistentRead: "If set to true, then a consistent read is issued, otherwise eventually consistent is used."
+    CamelAwsDdbScanIndexForward: "Specifies forward or backward traversal of the index."
+    CamelAwsDdbOperation: "The operation to perform."
+    CamelAwsDdbKey: "The primary key that uniquely identifies each item in a table."
 spec:
   definition:
-    title: "AWS DynamoDB 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. 
-    required:
-      - table
-      - region
-    type: object
+    description: "Send data to Amazon DynamoDB. The sent data inserts, updates, or deletes an item on the specified AWS DynamoDB table.\n\nThe 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.\n\nIf you use the default credentials provider, the DynamoDB client loads the credentials through this provider and doesn't use the basic authentication me [...]
     properties:
       table:
-        title: Table
-        description: The name of the DynamoDB table.
-        type: string
+        description: "The name of the DynamoDB table."
+        title: "Table"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       operation:
-        title: Operation
+        default: "PutItem"
         description: "The operation to perform. The options are PutItem, UpdateItem, or DeleteItem."
-        type: string
-        default: PutItem
-        example: PutItem
+        example: "PutItem"
+        title: "Operation"
+        type: "string"
       writeCapacity:
-        title: Write Capacity
-        description: The provisioned throughput to reserve for writing resources to your table.
-        type: integer
         default: 1
+        description: "The provisioned throughput to reserve for writing resources to your table."
+        title: "Write Capacity"
+        type: "integer"
       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
+        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)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
-  types:
-    in:
-      mediaType: application/json
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "table"
+     - "region"
+    title: "AWS DynamoDB Sink"
+    type: "object"
   dependencies:
-  - github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT
-  - "camel:core"
-  - "camel:jackson"
-  - "camel:aws2-ddb"
-  - "camel:kamelet"
+   - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
+   - "camel:core"
+   - "camel:jackson"
+   - "camel:aws2-ddb"
+   - "camel:kamelet"
   template:
     from:
       uri: "kamelet:source"
       steps:
-      - set-property:
-          name: operation
+       -
+        set-property:
+          name: "operation"
           constant: "{{operation}}"
-      - unmarshal:
+       -
+        unmarshal:
           json:
-            library: Jackson
-            unmarshalType: com.fasterxml.jackson.databind.JsonNode
-      - bean: "org.apache.camel.kamelets.utils.transform.aws.ddb.JsonToDdbModelConverter"
-      - to:
+            library: "Jackson"
+            unmarshalType: "com.fasterxml.jackson.databind.JsonNode"
+       -
+        bean: "org.apache.camel.kamelets.utils.transform.aws.ddb.JsonToDdbModelConverter"
+       -
+        to:
           uri: "aws2-ddb:{{table}}"
           parameters:
             secretKey: "{{?secretKey}}"
@@ -129,3 +174,6 @@ spec:
             useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
             uriEndpointOverride: "{{?uriEndpointOverride}}"
             overrideEndpoint: "{{overrideEndpoint}}"
+  types:
+    in:
+      mediaType: "application/json"
diff --git a/kamelets/aws-ec2-sink.kamelet.yaml b/kamelets/aws-ec2-sink.kamelet.yaml
index 4d8392cb..3c8bd581 100644
--- a/kamelets/aws-ec2-sink.kamelet.yaml
+++ b/kamelets/aws-ec2-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-ec2-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,84 +24,133 @@ metadata:
     camel.apache.org/provider: "Apache Software Foundation"
     camel.apache.org/kamelet.group: "AWS EC2"
   labels:
-    camel.apache.org/kamelet.type: sink
+    camel.apache.org/kamelet.type: "sink"
+  name: "aws-ec2-sink"
+  headers:
+    CamelAwsEC2InstancesClientToken: "Unique, case-sensitive identifier you provide to ensure the idempotency of the request."
+    CamelAwsEC2SubnetId: "The ID of the subnet to launch the instance into."
+    CamelAwsEC2InstanceEbsOptimized: "Define if the creating instance is optimized for EBS I/O."
+    CamelAwsEC2InstancesPlacement: "The placement for the instance."
+    CamelAwsEC2InstanceMinCount: "The minimum number of instances we want to run."
+    CamelAwsEC2InstanceMonitoring: "Define if we want the running instances to be monitored"
+    CamelAwsEC2ImageId: "An image ID of the AWS marketplace"
+    CamelAwsEC2InstanceSecurityGroups: "The security groups to associate to the instances"
+    CamelAwsEC2InstancesIds: "A collection of instances IDS to execute start, stop, describe and terminate operations on."
+    CamelAwsEC2InstanceKernelId: "The ID of the kernel."
+    CamelAwsEC2InstancesKeyPair: "The name of the key pair."
+    CamelAwsEC2Operation: "The operation we want to perform"
+    CamelAwsEC2InstanceMaxCount: "The maximum number of instances we want to run."
+    CamelAwsEC2InstancesTags: "A collection of tags to add or remove from EC2 resources"
+    CamelAwsEC2InstanceType: "The instance type we want to create and run"
 spec:
   definition:
-    title: AWS EC2 Sink
-    description: |-
-      Check the status of EC2 instances
-
-      Access Key/Secret Key are the basic method for authenticating to the AWS EC2 Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
-      
-      When using a default Credentials Provider the EC2 client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
-
-      The Kamelet expects the following headers to be set:
-
-      - `instanceIds` / `ce-instanceids`: as a comma separated list of EC2 instance ids.
-    required:
-      - region
-    type: object
+    description: "Check the status of EC2 instances\n\nAccess Key/Secret Key are the basic method for authenticating to the AWS EC2 Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.\n\nWhen using a default Credentials Provider the EC2 client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.\n\nThe Ka [...]
     properties:
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the CloudWatch 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
+        description: "If true, the CloudWatch client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "region"
+    title: "AWS EC2 Sink"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws2-ec2"
-    - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-ec2"
+   - "camel:kamelet"
   template:
     from:
-      uri: kamelet:source
+      uri: "kamelet:source"
       steps:
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[instanceIds]}"
+           -
+            simple: "${header[instanceIds]}"
             steps:
-            - set-header:
-                name: CamelAwsEC2InstancesIds
+             -
+              set-header:
+                name: "CamelAwsEC2InstancesIds"
                 simple: "${header[instanceIds]}"
-          - simple: "${header[ce-instanceids]}"
+           -
+            simple: "${header[ce-instanceids]}"
             steps:
-            - set-header:
-                name: CamelAwsEC2InstancesIds
+             -
+              set-header:
+                name: "CamelAwsEC2InstancesIds"
                 simple: "${header[ce-instanceids]}"
-      - to:
+       -
+        to:
           uri: "aws2-ec2:ec2-route"
           parameters:
             accessKey: "{{?accessKey}}"
diff --git a/kamelets/aws-eventbridge-sink.kamelet.yaml b/kamelets/aws-eventbridge-sink.kamelet.yaml
index f42f7531..a065fa78 100644
--- a/kamelets/aws-eventbridge-sink.kamelet.yaml
+++ b/kamelets/aws-eventbridge-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-eventbridge-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Preview"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -27,116 +25,166 @@ metadata:
     camel.apache.org/kamelet.group: "AWS Eventbridge"
   labels:
     camel.apache.org/kamelet.type: "sink"
+  name: "aws-eventbridge-sink"
+  headers:
+    CamelAwsEventbridgeEventPattern: "The event pattern."
+    CamelAwsEventbridgeRuleNamePrefix: "The prefix matching the rule name."
+    CamelAwsEventbridgeOperation: "The operation we want to perform"
+    CamelAwsEventbridgeTargetArn: "The Amazon Resource Name (ARN) of the target resource."
+    CamelAwsEventbridgeSource: "The source related to Event"
+    CamelAwsEventbridgeDetailType: "The detail type related to Event"
+    CamelAwsEventbridgeTargets: "The targets to update or add to the rule."
+    CamelAwsEventbridgeTargetsIds: "The IDs of the targets to remove from the rule."
+    CamelAwsEventbridgeRuleName: "The name of the rule."
+    CamelAwsEventbridgeResourcesArn: "Comma separated list of Amazon Resource Names (ARN) of the resources related to Event"
 spec:
   definition:
-    title: "AWS Eventbridge Sink"
-    description: |-
-      Send events to an Amazon Eventbridge Eventbus.
-
-      The basic authentication method for the Eventbridge 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 Eventbridge client loads the credentials through this provider and doesn't use the basic authentication method.
-
-      In the headers, you need to set the `resources-arn` / `ce-resources-arn` property to specify the ARN of resources related to the event.
-
-      In the headers, you need to set the `detail-type` / `ce-detail-type` property to specify the detail type related to the event.
-
-      In the headers, you need to set the `event-source` / `ce-event-source` property to specify the event source related to the event.
-
-      If you do not set the property in the header, the Kamelet uses the exchange ID for the file name.
-    required:
-      - eventbusNameOrArn
-      - region
-    type: object
+    description: "Send events to an Amazon Eventbridge Eventbus.\n\nThe basic authentication method for the Eventbridge service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.\n\nIf you use the default credentials provider, the Eventbridge client loads the credentials through this provider and doesn't use the basic authentication method.\n\nIn the headers, you need to set the `resources-arn` / `ce-re [...]
     properties:
       eventbusNameOrArn:
-        title: Eventbus Name
-        description: The Eventbridge Eventbus name or Amazon Resource Name (ARN).
-        type: string
+        description: "The Eventbridge Eventbus name or Amazon Resource Name (ARN)."
+        title: "Eventbus Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the Eventbridge 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
+        description: "If true, the Eventbridge client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "eventbusNameOrArn"
+     - "region"
+    title: "AWS Eventbridge Sink"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws2-eventbridge"
-    - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-eventbridge"
+   - "camel:kamelet"
   template:
     from:
       uri: "kamelet:source"
       steps:
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[resources-arn]}"
+           -
+            simple: "${header[resources-arn]}"
             steps:
-            - set-header:
-                name: CamelAwsEventbridgeResourcesArn
+             -
+              set-header:
+                name: "CamelAwsEventbridgeResourcesArn"
                 simple: "${header[resources-arn]}"
-          - simple: "${header[ce-resources-arn]}"
+           -
+            simple: "${header[ce-resources-arn]}"
             steps:
-            - set-header:
-                name: CamelAwsEventbridgeResourcesArn
+             -
+              set-header:
+                name: "CamelAwsEventbridgeResourcesArn"
                 simple: "${header[ce-resources-arn]}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[detail-type]}"
+           -
+            simple: "${header[detail-type]}"
             steps:
-            - set-header:
-                name: CamelAwsEventbridgeDetailType
+             -
+              set-header:
+                name: "CamelAwsEventbridgeDetailType"
                 simple: "${header[detail-type]}"
-          - simple: "${header[ce-detail-type]}"
+           -
+            simple: "${header[ce-detail-type]}"
             steps:
-            - set-header:
-                name: CamelAwsEventbridgeDetailType
+             -
+              set-header:
+                name: "CamelAwsEventbridgeDetailType"
                 simple: "${header[ce-detail-type]}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[event-source]}"
+           -
+            simple: "${header[event-source]}"
             steps:
-            - set-header:
-                name: CamelAwsEventbridgeSource
+             -
+              set-header:
+                name: "CamelAwsEventbridgeSource"
                 simple: "${header[event-source]}"
-          - simple: "${header[ce-event-source]}"
+           -
+            simple: "${header[ce-event-source]}"
             steps:
-            - set-header:
-                name: CamelAwsEventbridgeSource
-                simple: "${header[ce-event-source]}"            
-      - to:
+             -
+              set-header:
+                name: "CamelAwsEventbridgeSource"
+                simple: "${header[ce-event-source]}"
+       -
+        to:
           uri: "aws2-eventbridge:{{eventbusNameOrArn}}"
           parameters:
             secretKey: "{{?secretKey}}"
diff --git a/kamelets/aws-lambda-sink.kamelet.yaml b/kamelets/aws-lambda-sink.kamelet.yaml
index b4738814..a8b12e5b 100644
--- a/kamelets/aws-lambda-sink.kamelet.yaml
+++ b/kamelets/aws-lambda-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-lambda-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,61 +24,94 @@ metadata:
     camel.apache.org/provider: "Apache Software Foundation"
     camel.apache.org/kamelet.group: "AWS Lambda"
   labels:
-    camel.apache.org/kamelet.type: sink
+    camel.apache.org/kamelet.type: "sink"
+  name: "aws-lambda-sink"
+  headers: {}
 spec:
   definition:
-    title: AWS Lambda Sink
-    description: |-
-      Send a payload to an AWS Lambda function.
-
-      The basic authentication method for the Lambda 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 Lambda client loads the credentials through this provider and doesn't use the basic authentication method.
-    required:
-      - function
-      - region
-    type: object
+    description: "Send a payload to an AWS Lambda function.\n\nThe basic authentication method for the Lambda service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.\n\nIf you use the default credentials provider, the Lambda client loads the credentials through this provider and doesn't use the basic authentication method."
     properties:
       function:
-        title: Function Name
-        description: The Lambda Function name.
-        type: string
+        description: "The Lambda Function name."
+        title: "Function Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the Lambda 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
+        description: "If true, the Lambda client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "function"
+     - "region"
+    title: "AWS Lambda Sink"
+    type: "object"
   dependencies:
-    - "camel:aws2-lambda"
-    - "camel:kamelet"
+   - "camel:aws2-lambda"
+   - "camel:kamelet"
   template:
     from:
-      uri: kamelet:source
+      uri: "kamelet:source"
       steps:
-      - to:
+       -
+        to:
           uri: "aws2-lambda:{{function}}"
           parameters:
             accessKey: "{{?accessKey}}"
diff --git a/kamelets/aws-redshift-sink.kamelet.yaml b/kamelets/aws-redshift-sink.kamelet.yaml
index f7ff5de9..74486826 100644
--- a/kamelets/aws-redshift-sink.kamelet.yaml
+++ b/kamelets/aws-redshift-sink.kamelet.yaml
@@ -13,11 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-redshift-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,89 +25,97 @@ metadata:
     camel.apache.org/kamelet.group: "AWS Redshift"
   labels:
     camel.apache.org/kamelet.type: "sink"
+  name: "aws-redshift-sink"
+  headers:
+    CamelSqlUpdateCount: "The number of rows updated for update operations, returned as an Integer object. This header is not provided when using outputType=StreamList."
+    CamelSqlParameters: "The SQL parameters when using the option useMessageBodyForSql"
+    CamelSqlGeneratedColumns: "Set it to specify the expected generated columns"
+    CamelSqlGeneratedKeysRowCount: "The number of rows in the header that contains generated keys."
+    CamelSqlRowCount: "The number of rows returned for select operations, returned as an Integer object. This header is not provided when using outputType=StreamList."
+    CamelSqlRetrieveGeneratedKeys: "Set its value to true to retrieve generated keys"
+    CamelSqlQuery: "Query to execute. This query takes precedence over the query specified in the endpoint URI. Note that query parameters in the header _are_ represented by a instead of a pass:# symbol"
+    CamelSqlGeneratedKeyRows: "Rows that contains the generated keys (a list of maps of keys)."
 spec:
   definition:
-    title: "AWS Redshift Sink"
-    description: |-
-      Send data to an AWS Redshift Database.
-
-      This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query:
-
-      'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
-
-      Here is example input for the example query:
-
-      '{ "username":"oscerd", "city":"Rome"}'
-    required:
-      - serverName
-      - username
-      - password
-      - query
-      - databaseName
-    type: object
+    description: "Send data to an AWS Redshift Database.\n\nThis Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query:\n\n'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'\n\nHere is example input for the example query:\n\n'{ \"username\":\"oscerd\", \"city\":\"Rome\"}'"
     properties:
       serverName:
-        title: Server Name
-        description: The server name for the data source.
-        type: string
-        example: localhost
+        description: "The server name for the data source."
+        example: "localhost"
+        title: "Server Name"
+        type: "string"
       serverPort:
-        title: Server Port
-        description: The server port for the AWS RedShi data source.
-        type: string
         default: 5439
+        description: "The server port for the AWS RedShi data source."
+        title: "Server Port"
+        type: "string"
       username:
-        title: Username
-        description: The username to access a secured AWS Redshift Database.
-        type: string
+        description: "The username to access a secured AWS Redshift Database."
+        title: "Username"
+        type: "string"
         x-descriptors:
-        - urn:camel:group:credentials
+         - "urn:camel:group:credentials"
       password:
-        title: Password
-        description: The password to access a secured AWS Redshift Database.
-        type: string
-        format: password
+        description: "The password to access a secured AWS Redshift Database."
+        format: "password"
+        title: "Password"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
       query:
-        title: Query
-        description: The query to execute against the AWS Redshift Database.
-        type: string
-        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
+        description: "The query to execute against the AWS Redshift Database."
+        example: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)"
+        title: "Query"
+        type: "string"
       databaseName:
-        title: Database Name
-        description: The name of the AWS RedShift Database.
-        type: string
-  types:
-    in:
-      mediaType: application/json
+        description: "The name of the AWS RedShift Database."
+        title: "Database Name"
+        type: "string"
+    required:
+     - "serverName"
+     - "username"
+     - "password"
+     - "query"
+     - "databaseName"
+    title: "AWS Redshift Sink"
+    type: "object"
   dependencies:
-  - "camel:jackson"
-  - "camel:kamelet"
-  - "camel:sql"
-  - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.9"
-  - "mvn:org.apache.commons:commons-dbcp2:2.9.0"
+   - "camel:jackson"
+   - "camel:kamelet"
+   - "camel:sql"
+   - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.9"
+   - "mvn:org.apache.commons:commons-dbcp2:2.9.0"
   template:
     beans:
-      - name: dsBean
-        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
-        property:
-          - key: username
-            value: '{{username}}'
-          - key: password
-            value: '{{password}}'
-          - key: url
-            value: 'jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}'
-          - key: driverClassName
-            value: 'com.amazon.redshift.jdbc.Driver'
+     -
+      name: "dsBean"
+      type: "#class:org.apache.commons.dbcp2.BasicDataSource"
+      property:
+       -
+        key: "username"
+        value: "{{username}}"
+       -
+        key: "password"
+        value: "{{password}}"
+       -
+        key: "url"
+        value: "jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}"
+       -
+        key: "driverClassName"
+        value: "com.amazon.redshift.jdbc.Driver"
     from:
       uri: "kamelet:source"
       steps:
-      - unmarshal:
-          json: 
-            library: Jackson
-      - to: 
+       -
+        unmarshal:
+          json:
+            library: "Jackson"
+       -
+        to:
           uri: "sql:{{query}}"
           parameters:
             dataSource: "#bean:{{dsBean}}"
+  types:
+    in:
+      mediaType: "application/json"
diff --git a/kamelets/aws-redshift-source.kamelet.yaml b/kamelets/aws-redshift-source.kamelet.yaml
index cf00555e..99c2d34a 100644
--- a/kamelets/aws-redshift-source.kamelet.yaml
+++ b/kamelets/aws-redshift-source.kamelet.yaml
@@ -13,11 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-redshift-source
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,84 +25,87 @@ metadata:
     camel.apache.org/kamelet.group: "AWS Redshift"
   labels:
     camel.apache.org/kamelet.type: "source"
+  name: "aws-redshift-source"
+  headers: {}
 spec:
   definition:
-    title: "AWS Redshift Source"
-    description: |-
-      Query data from an AWS RedShift Database.
-    required:
-      - serverName
-      - username
-      - password
-      - query
-      - databaseName
-    type: object
+    description: "Query data from an AWS RedShift Database."
     properties:
       serverName:
-        title: Server Name
-        description: The server name for the data source.
-        type: string
-        example: localhost
+        description: "The server name for the data source."
+        example: "localhost"
+        title: "Server Name"
+        type: "string"
       serverPort:
-        title: Server Port
-        description: The server port for the data source.
-        type: string
         default: 5439
+        description: "The server port for the data source."
+        title: "Server Port"
+        type: "string"
       username:
-        title: Username
-        description: The username to access a secured AWS RedShift Database.
-        type: string
+        description: "The username to access a secured AWS RedShift Database."
+        title: "Username"
+        type: "string"
         x-descriptors:
-        - urn:camel:group:credentials
+         - "urn:camel:group:credentials"
       password:
-        title: Password
-        description: The password to access a secured AWS RedShift Database.
-        type: string
-        format: password
+        description: "The password to access a secured AWS RedShift Database."
+        format: "password"
+        title: "Password"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
       query:
-        title: Query
-        description: The query to execute against the AWS RedShift Database.
-        type: string
-        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
+        description: "The query to execute against the AWS RedShift Database."
+        example: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)"
+        title: "Query"
+        type: "string"
       databaseName:
-        title: Database Name
-        description: The name of the AWS RedShift Database.
-        type: string
+        description: "The name of the AWS RedShift Database."
+        title: "Database Name"
+        type: "string"
       consumedQuery:
-        title: Consumed Query
-        description: A query to run on a tuple consumed.
-        type: string
-        example: 'DELETE FROM accounts where user_id = :#user_id'
+        description: "A query to run on a tuple consumed."
+        example: "DELETE FROM accounts where user_id = :#user_id"
+        title: "Consumed Query"
+        type: "string"
       delay:
-        title: Delay
-        description: The number of milliseconds before the next poll from the AWS RedShift database.
-        type: integer
         default: 500
-  types:
-    out:
-      mediaType: application/json
+        description: "The number of milliseconds before the next poll from the AWS RedShift database."
+        title: "Delay"
+        type: "integer"
+    required:
+     - "serverName"
+     - "username"
+     - "password"
+     - "query"
+     - "databaseName"
+    title: "AWS Redshift Source"
+    type: "object"
   dependencies:
-  - "camel:jackson"
-  - "camel:kamelet"
-  - "camel:sql"
-  - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.9"
-  - "mvn:org.apache.commons:commons-dbcp2:2.9.0"
+   - "camel:jackson"
+   - "camel:kamelet"
+   - "camel:sql"
+   - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.9"
+   - "mvn:org.apache.commons:commons-dbcp2:2.9.0"
   template:
     beans:
-      - name: dsBean
-        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
-        property:
-          - key: username
-            value: '{{username}}'
-          - key: password
-            value: '{{password}}'
-          - key: url
-            value: 'jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}'
-          - key: driverClassName
-            value: 'com.amazon.redshift.jdbc.Driver'
+     -
+      name: "dsBean"
+      type: "#class:org.apache.commons.dbcp2.BasicDataSource"
+      property:
+       -
+        key: "username"
+        value: "{{username}}"
+       -
+        key: "password"
+        value: "{{password}}"
+       -
+        key: "url"
+        value: "jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}"
+       -
+        key: "driverClassName"
+        value: "com.amazon.redshift.jdbc.Driver"
     from:
       uri: "sql:{{query}}"
       parameters:
@@ -111,7 +113,12 @@ spec:
         onConsume: "{{?consumedQuery}}"
         delay: "{{delay}}"
       steps:
-      - marshal:
-          json: 
-            library: Jackson
-      - to: "kamelet:sink"
+       -
+        marshal:
+          json:
+            library: "Jackson"
+       -
+        to: "kamelet:sink"
+  types:
+    out:
+      mediaType: "application/json"
diff --git a/kamelets/aws-s3-sink.kamelet.yaml b/kamelets/aws-s3-sink.kamelet.yaml
index 76b1e7db..6904306d 100644
--- a/kamelets/aws-s3-sink.kamelet.yaml
+++ b/kamelets/aws-s3-sink.kamelet.yaml
@@ -27,31 +27,14 @@ metadata:
     camel.apache.org/kamelet.type: "sink"
   name: "aws-s3-sink"
   headers:
-    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
-    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
-    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
-    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
-    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link in milliseconds"
-    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the service (not needed when BrowserCompatible is true)"
-    CamelAwsS3DestinationKey: "The Destination key which will be used for the current operation"
-    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used for the current operation"
-    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
-    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
-    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
-    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
-    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
-    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the service (not needed when BrowserCompatible is true)"
-    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
-    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
-    CamelAwsS3RangeStart: "The position of the first byte to get"
-    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL for allowed values."
-    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser compatible"
-    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
-    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
-    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
-    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
-    CamelAwsS3StorageClass: "The storage class of this object."
-    CamelAwsS3RangeEnd: "The position of the last byte to get"
+    CamelAwsCwMetricDimensionName: "The Amazon CW metric dimension name."
+    CamelAwsCwMetricUnit: "The Amazon CW metric unit."
+    CamelAwsCwMetricDimensionValue: "The Amazon CW metric dimension value."
+    CamelAwsCwMetricDimensions: "A map of dimension names and dimension values."
+    CamelAwsCwMetricTimestamp: "The Amazon CW metric timestamp."
+    CamelAwsCwMetricNamespace: "The Amazon CW metric namespace."
+    CamelAwsCwMetricName: "The Amazon CW metric name."
+    CamelAwsCwMetricValue: "The Amazon CW metric value."
 spec:
   definition:
     description: "Upload data to an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method.\n\nIn the header, you can optionally set the `file` / `ce-partition` property to specify the [...]
diff --git a/kamelets/aws-s3-source.kamelet.yaml b/kamelets/aws-s3-source.kamelet.yaml
index d65ef008..416eb518 100644
--- a/kamelets/aws-s3-source.kamelet.yaml
+++ b/kamelets/aws-s3-source.kamelet.yaml
@@ -27,24 +27,14 @@ metadata:
     camel.apache.org/kamelet.type: "source"
   name: "aws-s3-source"
   headers:
-    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
-    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
-    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
-    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves a bucket that is either a source or destination in a replication rule."
-    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
-    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
-    CamelMessageTimestamp: "The timestamp of the message"
-    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
-    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
-    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
-    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
-    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
-    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
-    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket lifecycle), the response includes this header."
-    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
-    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
-    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
-    CamelAwsS3StorageClass: "The storage class of this object."
+    CamelAwsCwMetricDimensionName: "The Amazon CW metric dimension name."
+    CamelAwsCwMetricUnit: "The Amazon CW metric unit."
+    CamelAwsCwMetricDimensionValue: "The Amazon CW metric dimension value."
+    CamelAwsCwMetricDimensions: "A map of dimension names and dimension values."
+    CamelAwsCwMetricTimestamp: "The Amazon CW metric timestamp."
+    CamelAwsCwMetricNamespace: "The Amazon CW metric namespace."
+    CamelAwsCwMetricName: "The Amazon CW metric name."
+    CamelAwsCwMetricValue: "The Amazon CW metric value."
 spec:
   definition:
     description: "Receive data from an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method.\n\nTwo headers will be duplicated with different names for clarity at sink level, CamelAw [...]
diff --git a/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml b/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml
index 76b1e7db..6904306d 100644
--- a/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml
+++ b/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml
@@ -27,31 +27,14 @@ metadata:
     camel.apache.org/kamelet.type: "sink"
   name: "aws-s3-sink"
   headers:
-    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
-    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
-    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
-    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
-    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link in milliseconds"
-    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the service (not needed when BrowserCompatible is true)"
-    CamelAwsS3DestinationKey: "The Destination key which will be used for the current operation"
-    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used for the current operation"
-    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
-    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
-    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
-    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
-    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
-    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the service (not needed when BrowserCompatible is true)"
-    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
-    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
-    CamelAwsS3RangeStart: "The position of the first byte to get"
-    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL for allowed values."
-    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser compatible"
-    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
-    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
-    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
-    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
-    CamelAwsS3StorageClass: "The storage class of this object."
-    CamelAwsS3RangeEnd: "The position of the last byte to get"
+    CamelAwsCwMetricDimensionName: "The Amazon CW metric dimension name."
+    CamelAwsCwMetricUnit: "The Amazon CW metric unit."
+    CamelAwsCwMetricDimensionValue: "The Amazon CW metric dimension value."
+    CamelAwsCwMetricDimensions: "A map of dimension names and dimension values."
+    CamelAwsCwMetricTimestamp: "The Amazon CW metric timestamp."
+    CamelAwsCwMetricNamespace: "The Amazon CW metric namespace."
+    CamelAwsCwMetricName: "The Amazon CW metric name."
+    CamelAwsCwMetricValue: "The Amazon CW metric value."
 spec:
   definition:
     description: "Upload data to an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method.\n\nIn the header, you can optionally set the `file` / `ce-partition` property to specify the [...]
diff --git a/kamelets/aws-secrets-manager-sink.kamelet.yaml b/kamelets/aws-secrets-manager-sink.kamelet.yaml
index b1f28cec..67266e75 100644
--- a/kamelets/aws-secrets-manager-sink.kamelet.yaml
+++ b/kamelets/aws-secrets-manager-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-secrets-manager-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -27,79 +25,120 @@ metadata:
     camel.apache.org/kamelet.group: "AWS Secrets Manager"
   labels:
     camel.apache.org/kamelet.type: "sink"
+  name: "aws-secrets-manager-sink"
+  headers:
+    CamelAwsSecretsManagerMaxResults: "The number of results to include in the response."
+    CamelAwsSecretsManagerSecretReplicationRegions: "A comma separated list of Regions in which to replicate the secret."
+    CamelAwsSecretsManagerSecretDescription: "The description of the secret."
+    CamelAwsSecretsManagerSecretId: "The ARN or name of the secret."
+    CamelAwsSecretsManagerSecretName: "The name of the secret."
+    CamelAwsSecretsManagerSecretVersionId: "The unique identifier of the version of the secret."
+    CamelAwsSecretsManagerLambdaRotationFunctionArn: "The ARN of the Lambda rotation function that can rotate the secret."
+    CamelAwsSecretsManagerOperation: "The operation we want to perform"
 spec:
   definition:
-    title: "AWS Secrets Manager Sink"
-    description: |-
-      Create a secret in AWS Secrets Manager.
-
-      Access Key/Secret Key are the basic method for authenticating to the AWS Secrets Manager Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
-      
-      When using a default Credentials Provider the Secrets Manager client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
-
-      The Kamelet expects the following headers to be set:
-
-      - `secret-name` / `ce-secret-name`: as the secret name to create.
-
-      If the header won't be set the exchange ID will be used as secret name.
-    required:
-      - region
-    type: object
+    description: "Create a secret in AWS Secrets Manager.\n\nAccess Key/Secret Key are the basic method for authenticating to the AWS Secrets Manager Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.\n\nWhen using a default Credentials Provider the Secrets Manager client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory paramet [...]
     properties:
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: Set whether the Secrets Manager client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "Set whether the Secrets Manager client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "region"
+    title: "AWS Secrets Manager Sink"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws-secrets-manager"
-    - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws-secrets-manager"
+   - "camel:kamelet"
   template:
     from:
       uri: "kamelet:source"
       steps:
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[secret-name]}"
+           -
+            simple: "${header[secret-name]}"
             steps:
-            - set-header:
-                name: CamelAwsSecretsManagerSecretName
+             -
+              set-header:
+                name: "CamelAwsSecretsManagerSecretName"
                 simple: "${header[secret-name]}"
-          - simple: "${header[ce-secret-name]}"
+           -
+            simple: "${header[ce-secret-name]}"
             steps:
-            - set-header:
-                name: CamelAwsSecretsManagerSecretName
+             -
+              set-header:
+                name: "CamelAwsSecretsManagerSecretName"
                 simple: "${header[ce-secret-name]}"
           otherwise:
             steps:
-            - set-header:
-                name: CamelAwsSecretsManagerSecretName
+             -
+              set-header:
+                name: "CamelAwsSecretsManagerSecretName"
                 simple: "${exchangeId}"
-      - to:
+       -
+        to:
           uri: "aws-secrets-manager:kamelet"
           parameters:
             secretKey: "{{?secretKey}}"
diff --git a/kamelets/aws-ses-sink.kamelet.yaml b/kamelets/aws-ses-sink.kamelet.yaml
index b5cfe0d8..d7d379e9 100644
--- a/kamelets/aws-ses-sink.kamelet.yaml
+++ b/kamelets/aws-ses-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-ses-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -27,112 +25,162 @@ metadata:
     camel.apache.org/kamelet.group: "AWS SES"
   labels:
     camel.apache.org/kamelet.type: "sink"
+  name: "aws-ses-sink"
+  headers:
+    CamelAwsSesBcc: "List of comma separated destination blind carbon copy (bcc) email address."
+    CamelAwsSesConfigurationSet: "TThe configuration set to send."
+    CamelAwsSesSubject: "The subject of the message."
+    CamelAwsSesFrom: "The sender's email address."
+    CamelAwsSesMessageId: "The Amazon SES message ID."
+    CamelAwsSesTo: "List of comma separated destination email address."
+    CamelAwsSesReturnPath: "The email address to which bounce notifications are to be forwarded."
+    CamelAwsSesCc: "List of comma separated destination carbon copy (cc) email address."
+    CamelAwsSesReplyToAddresses: "The reply-to email address(es) for the message."
+    CamelAwsSesHtmlEmail: "The flag to show if email content is HTML."
 spec:
   definition:
-    title: "AWS SES Sink"
-    description: |-
-      Send email through the Amazon Simple Email Service (SES).
-
-      The basic authentication method for the SES 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 SES client loads the credentials through this provider and doesn't use the basic authentication method.
-      
-      In the header, you can optionally set the following properties:
-      
-      - `subject` / `ce-subject` property to specify the email subject. If you do not set this property in the header, the Kamelet uses the exchange ID for the email subject.
-
-      - `to` / `ce-to` to provide a comma-separated list of email addresses.
-
-      - `reply-to-addresses` / `ce-reply-to-addresses`to provider a comma-separated list of reply-to email addresses.
-
-    required:
-      - from
-      - region
-    type: object
+    description: "Send email through the Amazon Simple Email Service (SES).\n\nThe basic authentication method for the SES service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.\n\nIf you use the default credentials provider, the SES client loads the credentials through this provider and doesn't use the basic authentication method.\n\nIn the header, you can optionally set the following properties:\n [...]
     properties:
       from:
-        title: From 
-        description: From address
-        type: string
-        example: user@example.com
+        description: "From address"
+        example: "user@example.com"
+        title: "From"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the SES 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
+        description: "If true, the SES client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "from"
+     - "region"
+    title: "AWS SES Sink"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws2-ses"
-    - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-ses"
+   - "camel:kamelet"
   template:
     from:
       uri: "kamelet:source"
       steps:
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[subject]}"
+           -
+            simple: "${header[subject]}"
             steps:
-            - set-header:
-                name: CamelAwsSesSubject
+             -
+              set-header:
+                name: "CamelAwsSesSubject"
                 simple: "${header[subject]}"
-          - simple: "${header[ce-subject]}"
+           -
+            simple: "${header[ce-subject]}"
             steps:
-            - set-header:
-                name: CamelAwsSesSubject
+             -
+              set-header:
+                name: "CamelAwsSesSubject"
                 simple: "${header[ce-subject]}"
           otherwise:
             steps:
-            - set-header:
-                name: CamelAwsSesSubject
+             -
+              set-header:
+                name: "CamelAwsSesSubject"
                 simple: "${exchangeId}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[to]}"
+           -
+            simple: "${header[to]}"
             steps:
-            - set-header:
-                name: CamelAwsSesTo
+             -
+              set-header:
+                name: "CamelAwsSesTo"
                 simple: "${header[to]}"
-          - simple: "${header[ce-to]}"
+           -
+            simple: "${header[ce-to]}"
             steps:
-            - set-header:
-                name: CamelAwsSesTo
+             -
+              set-header:
+                name: "CamelAwsSesTo"
                 simple: "${header[ce-to]}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[reply-to-addresses]}"
+           -
+            simple: "${header[reply-to-addresses]}"
             steps:
-            - set-header:
-                name: CamelAwsSesReplyToAddresses
+             -
+              set-header:
+                name: "CamelAwsSesReplyToAddresses"
                 simple: "${header[reply-to-addresses]}"
-          - simple: "${header[ce-reply-to-addresses]}"
+           -
+            simple: "${header[ce-reply-to-addresses]}"
             steps:
-            - set-header:
-                name: CamelAwsSesReplyToAddresses
+             -
+              set-header:
+                name: "CamelAwsSesReplyToAddresses"
                 simple: "${header[ce-reply-to-addresses]}"
-      - to:
+       -
+        to:
           uri: "aws2-ses://{{from}}"
           parameters:
             secretKey: "{{?secretKey}}"
diff --git a/kamelets/aws-sns-fifo-sink.kamelet.yaml b/kamelets/aws-sns-fifo-sink.kamelet.yaml
index 86f44470..8f68cf6a 100644
--- a/kamelets/aws-sns-fifo-sink.kamelet.yaml
+++ b/kamelets/aws-sns-fifo-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-sns-fifo-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,127 +24,173 @@ metadata:
     camel.apache.org/provider: "Apache Software Foundation"
     camel.apache.org/kamelet.group: "AWS SNS"
   labels:
-    camel.apache.org/kamelet.type: sink
+    camel.apache.org/kamelet.type: "sink"
+  name: "aws-sns-fifo-sink"
+  headers:
+    CamelAwsSnsSubject: "The Amazon SNS message subject. If not set, the subject from the SnsConfiguration is used."
+    CamelAwsSnsMessageId: "The Amazon SNS message ID."
+    CamelAwsSnsMessageStructure: "The message structure to use such as json."
 spec:
   definition:
-    title: AWS SNS FIFO Sink
-    description: |- 
-      Send message to an AWS SNS FIFO Topic.
-
-      Access Key/Secret Key are the basic method for authenticating to the AWS SNS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
-      
-      When using a default Credentials Provider the SNS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
-
-      The Kamelet expects the following headers to be set:
-
-      - `subject` / `ce-subject`: the subject of the message
-    required:
-      - topicNameOrArn
-      - region
-    type: object
+    description: "Send message to an AWS SNS FIFO Topic.\n\nAccess Key/Secret Key are the basic method for authenticating to the AWS SNS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.\n\nWhen using a default Credentials Provider the SNS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.\n\nT [...]
     properties:
       topicNameOrArn:
-        title: Topic Name
-        description: The SNS Topic name or ARN
-        type: string
+        description: "The SNS Topic name or ARN"
+        title: "Topic Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       contentBasedDeduplication:
-        title: Content-Based Deduplication
-        description: Use content-based deduplication (should be enabled in the SQS FIFO queue first)
-        type: boolean
         default: false
+        description: "Use content-based deduplication (should be enabled in the SQS FIFO queue first)"
+        title: "Content-Based Deduplication"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       autoCreateTopic:
-        title: Autocreate Topic
-        description: Setting the autocreation of the SNS topic. 
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
-      useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: Set whether the SNS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
-        type: boolean
+        description: "Setting the autocreation of the SNS topic."
+        title: "Autocreate Topic"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+      useDefaultCredentialsProvider:
         default: false
+        description: "Set whether the SNS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "topicNameOrArn"
+     - "region"
+    title: "AWS SNS FIFO Sink"
+    type: "object"
   dependencies:
-  - "camel:aws2-sns"
-  - "camel:core"
-  - "camel:kamelet"
+   - "camel:aws2-sns"
+   - "camel:core"
+   - "camel:kamelet"
   template:
     from:
-      uri: kamelet:source
+      uri: "kamelet:source"
       steps:
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[subject]}"
+           -
+            simple: "${header[subject]}"
             steps:
-            - set-header:
-                name: CamelAwsSnsSubject
+             -
+              set-header:
+                name: "CamelAwsSnsSubject"
                 simple: "${header[subject]}"
-          - simple: "${header[ce-subject]}"
+           -
+            simple: "${header[ce-subject]}"
             steps:
-            - set-header:
-                name: CamelAwsSnsSubject
+             -
+              set-header:
+                name: "CamelAwsSnsSubject"
                 simple: "${header[ce-subject]}"
-      - set-property:
-          name: contentBasedDeduplication
+       -
+        set-property:
+          name: "contentBasedDeduplication"
           constant: "{{contentBasedDeduplication}}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[group]}"
+           -
+            simple: "${header[group]}"
             steps:
-            - set-property:
-                name: CamelAwsSnsMessageGroupId
+             -
+              set-property:
+                name: "CamelAwsSnsMessageGroupId"
                 simple: "${header[group]}"
-          - simple: "${header[ce-group]}"
+           -
+            simple: "${header[ce-group]}"
             steps:
-            - set-property:
-                name: CamelAwsSnsMessageGroupId
+             -
+              set-property:
+                name: "CamelAwsSnsMessageGroupId"
                 simple: "${header[ce-group]}"
           otherwise:
             steps:
-            - set-property:
-                name: CamelAwsSnsMessageGroupId
+             -
+              set-property:
+                name: "CamelAwsSnsMessageGroupId"
                 simple: "${exchangeId}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${exchangeProperty.contentBasedDeduplication} == 'true'"
+           -
+            simple: "${exchangeProperty.contentBasedDeduplication} == 'true'"
             steps:
-            - to:
+             -
+              to:
                 uri: "aws2-sns:{{topicNameOrArn}}"
                 parameters:
                   autoCreateTopic: "{{autoCreateTopic}}"
@@ -160,7 +204,8 @@ spec:
                   overrideEndpoint: "{{overrideEndpoint}}"
           otherwise:
             steps:
-            - to:
+             -
+              to:
                 uri: "aws2-sns:{{topicNameOrArn}}"
                 parameters:
                   autoCreateTopic: "{{autoCreateTopic}}"
diff --git a/kamelets/aws-sns-sink.kamelet.yaml b/kamelets/aws-sns-sink.kamelet.yaml
index 08589823..49e615b9 100644
--- a/kamelets/aws-sns-sink.kamelet.yaml
+++ b/kamelets/aws-sns-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-sns-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,94 +24,133 @@ metadata:
     camel.apache.org/provider: "Apache Software Foundation"
     camel.apache.org/kamelet.group: "AWS SNS"
   labels:
-    camel.apache.org/kamelet.type: sink
+    camel.apache.org/kamelet.type: "sink"
+  name: "aws-sns-sink"
+  headers:
+    CamelAwsSnsSubject: "The Amazon SNS message subject. If not set, the subject from the SnsConfiguration is used."
+    CamelAwsSnsMessageId: "The Amazon SNS message ID."
+    CamelAwsSnsMessageStructure: "The message structure to use such as json."
 spec:
   definition:
-    title: AWS SNS Sink
-    description: |-
-      Send message to an Amazon Simple Notification Service (SNS) topic.
-
-      The basic authentication method for the SNS 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 SNS client loads the credentials through this provider and doesn't use the basic authentication method.
-
-      In the header, you can optionally set the `subject` / `ce-subject` property to specify the subject of the message.
-    required:
-      - topicNameOrArn
-      - region
-    type: object
+    description: "Send message to an Amazon Simple Notification Service (SNS) topic.\n\nThe basic authentication method for the SNS service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.\n\nIf you use the default credentials provider, the SNS client loads the credentials through this provider and doesn't use the basic authentication method.\n\nIn the header, you can optionally set the `subject` / `c [...]
     properties:
       topicNameOrArn:
-        title: Topic Name
-        description: The SNS topic name name or Amazon Resource Name (ARN).
-        type: string
+        description: "The SNS topic name name or Amazon Resource Name (ARN)."
+        title: "Topic Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       autoCreateTopic:
-        title: Autocreate Topic
-        description: Setting the autocreation of the SNS topic. 
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
-      useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the SNS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
-        type: boolean
+        description: "Setting the autocreation of the SNS topic."
+        title: "Autocreate Topic"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+      useDefaultCredentialsProvider:
         default: false
+        description: "If true, the SNS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "topicNameOrArn"
+     - "region"
+    title: "AWS SNS Sink"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws2-sns"
-    - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-sns"
+   - "camel:kamelet"
   template:
     from:
-      uri: kamelet:source
+      uri: "kamelet:source"
       steps:
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[subject]}"
+           -
+            simple: "${header[subject]}"
             steps:
-            - set-header:
-                name: CamelAwsSnsSubject
+             -
+              set-header:
+                name: "CamelAwsSnsSubject"
                 simple: "${header[subject]}"
-          - simple: "${header[ce-subject]}"
+           -
+            simple: "${header[ce-subject]}"
             steps:
-            - set-header:
-                name: CamelAwsSnsSubject
+             -
+              set-header:
+                name: "CamelAwsSnsSubject"
                 simple: "${header[ce-subject]}"
-      - to:
+       -
+        to:
           uri: "aws2-sns:{{topicNameOrArn}}"
           parameters:
             autoCreateTopic: "{{autoCreateTopic}}"
diff --git a/kamelets/aws-sqs-batch-sink.kamelet.yaml b/kamelets/aws-sqs-batch-sink.kamelet.yaml
index d40d62a7..976995e8 100644
--- a/kamelets/aws-sqs-batch-sink.kamelet.yaml
+++ b/kamelets/aws-sqs-batch-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-sqs-batch-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,96 +24,135 @@ metadata:
     camel.apache.org/provider: "Apache Software Foundation"
     camel.apache.org/kamelet.group: "AWS SQS"
   labels:
-    camel.apache.org/kamelet.type: sink
+    camel.apache.org/kamelet.type: "sink"
+  name: "aws-sqs-batch-sink"
+  headers:
+    CamelAwsSqsPrefix: "A string to use for filtering the list results."
+    CamelAwsSqsReceiptHandle: "The Amazon SQS message receipt handle."
+    CamelAwsSqsMessageId: "The Amazon SQS message ID."
+    CamelAwsSqsMD5OfBody: "The MD5 checksum of the Amazon SQS message."
+    CamelAwsSqsDelaySeconds: "The delay seconds that the Amazon SQS message can be see by others."
+    CamelAwsSqsOperation: "The operation we want to perform"
 spec:
   definition:
-    title: AWS SQS Batch Sink
-    description: |-
-      Send Batch message to an AWS SQS Queue.
-
-      Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
-      
-      When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
-    required:
-      - queueNameOrArn
-      - region
-      - batchSeparator
-    type: object
+    description: "Send Batch message to an AWS SQS Queue.\n\nAccess Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.\n\nWhen using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet."
     properties:
       queueNameOrArn:
-        title: Queue Name
-        description: The SQS Queue name or ARN
-        type: string
+        description: "The SQS Queue name or ARN"
+        title: "Queue Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       autoCreateQueue:
-        title: Autocreate Queue
-        description: Setting the autocreation of the SQS queue. 
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "Setting the autocreation of the SQS queue."
+        title: "Autocreate Queue"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       batchSeparator:
-        title: Batch Separator
-        description: The batch separator string
-        type: string
+        description: "The batch separator string"
         example: ","
+        title: "Batch Separator"
+        type: "string"
       amazonAWSHost:
-        title: AWS Host
-        description: The hostname of the Amazon AWS cloud. 
-        type: string
-        default: amazonaws.com
+        default: "amazonaws.com"
+        description: "The hostname of the Amazon AWS cloud."
+        title: "AWS Host"
+        type: "string"
       protocol:
-        title: Protocol
-        description: The underlying protocol used to communicate with SQS
-        type: string
-        example: http or https
-        default: https
+        default: "https"
+        description: "The underlying protocol used to communicate with SQS"
+        example: "http or https"
+        title: "Protocol"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        default: false
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
         x-descriptors:
-          - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false        
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "queueNameOrArn"
+     - "region"
+     - "batchSeparator"
+    title: "AWS SQS Batch Sink"
+    type: "object"
   dependencies:
-    - "camel:aws2-sqs"
-    - "camel:kamelet"
+   - "camel:aws2-sqs"
+   - "camel:kamelet"
   template:
     from:
-      uri: kamelet:source
+      uri: "kamelet:source"
       steps:
-      - to:
+       -
+        to:
           uri: "aws2-sqs:{{queueNameOrArn}}"
           parameters:
             autoCreateQueue: "{{autoCreateQueue}}"
@@ -128,4 +165,4 @@ spec:
             protocol: "{{?protocol}}"
             useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
             uriEndpointOverride: "{{?uriEndpointOverride}}"
-            overrideEndpoint: "{{overrideEndpoint}}"            
+            overrideEndpoint: "{{overrideEndpoint}}"
diff --git a/kamelets/aws-sqs-fifo-sink.kamelet.yaml b/kamelets/aws-sqs-fifo-sink.kamelet.yaml
index 4ea06ac7..bb994194 100644
--- a/kamelets/aws-sqs-fifo-sink.kamelet.yaml
+++ b/kamelets/aws-sqs-fifo-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-sqs-fifo-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,130 +24,177 @@ metadata:
     camel.apache.org/provider: "Apache Software Foundation"
     camel.apache.org/kamelet.group: "AWS SQS"
   labels:
-    camel.apache.org/kamelet.type: sink
+    camel.apache.org/kamelet.type: "sink"
+  name: "aws-sqs-fifo-sink"
+  headers:
+    CamelAwsSqsPrefix: "A string to use for filtering the list results."
+    CamelAwsSqsReceiptHandle: "The Amazon SQS message receipt handle."
+    CamelAwsSqsMessageId: "The Amazon SQS message ID."
+    CamelAwsSqsMD5OfBody: "The MD5 checksum of the Amazon SQS message."
+    CamelAwsSqsDelaySeconds: "The delay seconds that the Amazon SQS message can be see by others."
+    CamelAwsSqsOperation: "The operation we want to perform"
 spec:
   definition:
-    title: AWS SQS FIFO Sink
-    description: |-
-
-      Send message to an AWS SQS FIFO Queue.
-
-      Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
-      
-      When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
-    required:
-      - queueNameOrArn
-      - region
-    type: object
+    description: "\nSend message to an AWS SQS FIFO Queue.\n\nAccess Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.\n\nWhen using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet."
     properties:
       queueNameOrArn:
-        title: Queue Name
-        description: The SQS Queue name or ARN
-        type: string
+        description: "The SQS Queue name or ARN"
+        title: "Queue Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       contentBasedDeduplication:
-        title: Content-Based Deduplication
-        description: Use content-based deduplication (should be enabled in the SQS FIFO queue first)
-        type: boolean
         default: false
+        description: "Use content-based deduplication (should be enabled in the SQS FIFO queue first)"
+        title: "Content-Based Deduplication"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       autoCreateQueue:
-        title: Autocreate Queue
-        description: Setting the autocreation of the SQS queue. 
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "Setting the autocreation of the SQS queue."
+        title: "Autocreate Queue"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       amazonAWSHost:
-        title: AWS Host
-        description: The hostname of the Amazon AWS cloud. 
-        type: string
-        default: amazonaws.com
+        default: "amazonaws.com"
+        description: "The hostname of the Amazon AWS cloud."
+        title: "AWS Host"
+        type: "string"
       protocol:
-        title: Protocol
-        description: The underlying protocol used to communicate with SQS
-        type: string
-        example: http or https
-        default: https
+        default: "https"
+        description: "The underlying protocol used to communicate with SQS"
+        example: "http or https"
+        title: "Protocol"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        default: false
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
         x-descriptors:
-          - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false   
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "queueNameOrArn"
+     - "region"
+    title: "AWS SQS FIFO Sink"
+    type: "object"
   dependencies:
-  - "camel:aws2-sqs"
-  - "camel:core"
-  - "camel:kamelet"
+   - "camel:aws2-sqs"
+   - "camel:core"
+   - "camel:kamelet"
   template:
     from:
-      uri: kamelet:source
+      uri: "kamelet:source"
       steps:
-      - set-property:
-          name: contentBasedDeduplication
+       -
+        set-property:
+          name: "contentBasedDeduplication"
           constant: "{{contentBasedDeduplication}}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[group]}"
+           -
+            simple: "${header[group]}"
             steps:
-            - set-property:
-                name: CamelAwsMessageGroupId
+             -
+              set-property:
+                name: "CamelAwsMessageGroupId"
                 simple: "${header[group]}"
-          - simple: "${header[ce-group]}"
+           -
+            simple: "${header[ce-group]}"
             steps:
-            - set-property:
-                name: CamelAwsMessageGroupId
+             -
+              set-property:
+                name: "CamelAwsMessageGroupId"
                 simple: "${header[ce-group]}"
           otherwise:
             steps:
-            - set-property:
-                name: CamelAwsMessageGroupId
+             -
+              set-property:
+                name: "CamelAwsMessageGroupId"
                 simple: "${exchangeId}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${exchangeProperty.contentBasedDeduplication} == 'true'"
+           -
+            simple: "${exchangeProperty.contentBasedDeduplication} == 'true'"
             steps:
-            - to:
+             -
+              to:
                 uri: "aws2-sqs:{{queueNameOrArn}}"
                 parameters:
                   autoCreateQueue: "{{autoCreateQueue}}"
                   accessKey: "{{?accessKey}}"
                   secretKey: "{{?secretKey}}"
                   region: "{{region}}"
-                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" 
+                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
                   messageGroupIdStrategy: "usePropertyValue"
                   messageDeduplicationIdStrategy: "useContentBasedDeduplication"
                   amazonAWSHost: "{{?amazonAWSHost}}"
@@ -158,14 +203,15 @@ spec:
                   overrideEndpoint: "{{overrideEndpoint}}"
           otherwise:
             steps:
-            - to:
+             -
+              to:
                 uri: "aws2-sqs:{{queueNameOrArn}}"
                 parameters:
                   autoCreateQueue: "{{autoCreateQueue}}"
                   accessKey: "{{?accessKey}}"
                   secretKey: "{{?secretKey}}"
                   region: "{{region}}"
-                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" 
+                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
                   messageGroupIdStrategy: "usePropertyValue"
                   messageDeduplicationIdStrategy: "useExchangeId"
                   amazonAWSHost: "{{?amazonAWSHost}}"
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 5b603abf..51689b51 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
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-ddb-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -27,98 +25,145 @@ metadata:
     camel.apache.org/kamelet.group: "AWS DynamoDB Streams"
   labels:
     camel.apache.org/kamelet.type: "sink"
+  name: "aws-ddb-sink"
+  headers:
+    CamelAwsDdbUpdateCondition: "Designates an attribute for a conditional modification."
+    CamelAwsDdbBatchItems: "A map of the table name and corresponding items to get by primary key."
+    CamelAwsDdbReturnValues: "Use this parameter if you want to get the attribute name-value pairs before or after they are modified(NONE, ALL_OLD, UPDATED_OLD, ALL_NEW, UPDATED_NEW)."
+    CamelAwsDdbScanFilter: "Evaluates the scan results and returns only the desired values."
+    CamelAwsDdbUpdateValues: "Map of attribute name to the new value and action for the update."
+    CamelAwsDdbItem: "A map of the attributes for the item, and must include the primary key values that define the item."
+    CamelAwsDdbLimit: "The maximum number of items to return."
+    CamelAwsDdbAttributeNames: "If attribute names are not specified then all attributes will be returned."
+    CamelAwsDdbIndexName: "If set will be used as Secondary Index for Query operation."
+    CamelAwsDdbKeyConditions: "This header specify the selection criteria for the query, and merge together the two old headers CamelAwsDdbHashKeyValue and CamelAwsDdbScanRangeKeyCondition"
+    CamelAwsDdbStartKey: "Primary key of the item from which to continue an earlier query."
+    CamelAwsDdbTableName: "Table Name for this operation."
+    CamelAwsDdbConsistentRead: "If set to true, then a consistent read is issued, otherwise eventually consistent is used."
+    CamelAwsDdbScanIndexForward: "Specifies forward or backward traversal of the index."
+    CamelAwsDdbOperation: "The operation to perform."
+    CamelAwsDdbKey: "The primary key that uniquely identifies each item in a table."
 spec:
   definition:
-    title: "AWS DynamoDB 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. 
-    required:
-      - table
-      - region
-    type: object
+    description: "Send data to Amazon DynamoDB. The sent data inserts, updates, or deletes an item on the specified AWS DynamoDB table.\n\nThe 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.\n\nIf you use the default credentials provider, the DynamoDB client loads the credentials through this provider and doesn't use the basic authentication me [...]
     properties:
       table:
-        title: Table
-        description: The name of the DynamoDB table.
-        type: string
+        description: "The name of the DynamoDB table."
+        title: "Table"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       operation:
-        title: Operation
+        default: "PutItem"
         description: "The operation to perform. The options are PutItem, UpdateItem, or DeleteItem."
-        type: string
-        default: PutItem
-        example: PutItem
+        example: "PutItem"
+        title: "Operation"
+        type: "string"
       writeCapacity:
-        title: Write Capacity
-        description: The provisioned throughput to reserve for writing resources to your table.
-        type: integer
         default: 1
+        description: "The provisioned throughput to reserve for writing resources to your table."
+        title: "Write Capacity"
+        type: "integer"
       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
+        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)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
-  types:
-    in:
-      mediaType: application/json
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "table"
+     - "region"
+    title: "AWS DynamoDB Sink"
+    type: "object"
   dependencies:
-  - github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT
-  - "camel:core"
-  - "camel:jackson"
-  - "camel:aws2-ddb"
-  - "camel:kamelet"
+   - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
+   - "camel:core"
+   - "camel:jackson"
+   - "camel:aws2-ddb"
+   - "camel:kamelet"
   template:
     from:
       uri: "kamelet:source"
       steps:
-      - set-property:
-          name: operation
+       -
+        set-property:
+          name: "operation"
           constant: "{{operation}}"
-      - unmarshal:
+       -
+        unmarshal:
           json:
-            library: Jackson
-            unmarshalType: com.fasterxml.jackson.databind.JsonNode
-      - bean: "org.apache.camel.kamelets.utils.transform.aws.ddb.JsonToDdbModelConverter"
-      - to:
+            library: "Jackson"
+            unmarshalType: "com.fasterxml.jackson.databind.JsonNode"
+       -
+        bean: "org.apache.camel.kamelets.utils.transform.aws.ddb.JsonToDdbModelConverter"
+       -
+        to:
           uri: "aws2-ddb:{{table}}"
           parameters:
             secretKey: "{{?secretKey}}"
@@ -129,3 +174,6 @@ spec:
             useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
             uriEndpointOverride: "{{?uriEndpointOverride}}"
             overrideEndpoint: "{{overrideEndpoint}}"
+  types:
+    in:
+      mediaType: "application/json"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-ec2-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-ec2-sink.kamelet.yaml
index 4d8392cb..3c8bd581 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-ec2-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-ec2-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-ec2-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,84 +24,133 @@ metadata:
     camel.apache.org/provider: "Apache Software Foundation"
     camel.apache.org/kamelet.group: "AWS EC2"
   labels:
-    camel.apache.org/kamelet.type: sink
+    camel.apache.org/kamelet.type: "sink"
+  name: "aws-ec2-sink"
+  headers:
+    CamelAwsEC2InstancesClientToken: "Unique, case-sensitive identifier you provide to ensure the idempotency of the request."
+    CamelAwsEC2SubnetId: "The ID of the subnet to launch the instance into."
+    CamelAwsEC2InstanceEbsOptimized: "Define if the creating instance is optimized for EBS I/O."
+    CamelAwsEC2InstancesPlacement: "The placement for the instance."
+    CamelAwsEC2InstanceMinCount: "The minimum number of instances we want to run."
+    CamelAwsEC2InstanceMonitoring: "Define if we want the running instances to be monitored"
+    CamelAwsEC2ImageId: "An image ID of the AWS marketplace"
+    CamelAwsEC2InstanceSecurityGroups: "The security groups to associate to the instances"
+    CamelAwsEC2InstancesIds: "A collection of instances IDS to execute start, stop, describe and terminate operations on."
+    CamelAwsEC2InstanceKernelId: "The ID of the kernel."
+    CamelAwsEC2InstancesKeyPair: "The name of the key pair."
+    CamelAwsEC2Operation: "The operation we want to perform"
+    CamelAwsEC2InstanceMaxCount: "The maximum number of instances we want to run."
+    CamelAwsEC2InstancesTags: "A collection of tags to add or remove from EC2 resources"
+    CamelAwsEC2InstanceType: "The instance type we want to create and run"
 spec:
   definition:
-    title: AWS EC2 Sink
-    description: |-
-      Check the status of EC2 instances
-
-      Access Key/Secret Key are the basic method for authenticating to the AWS EC2 Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
-      
-      When using a default Credentials Provider the EC2 client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
-
-      The Kamelet expects the following headers to be set:
-
-      - `instanceIds` / `ce-instanceids`: as a comma separated list of EC2 instance ids.
-    required:
-      - region
-    type: object
+    description: "Check the status of EC2 instances\n\nAccess Key/Secret Key are the basic method for authenticating to the AWS EC2 Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.\n\nWhen using a default Credentials Provider the EC2 client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.\n\nThe Ka [...]
     properties:
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the CloudWatch 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
+        description: "If true, the CloudWatch client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "region"
+    title: "AWS EC2 Sink"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws2-ec2"
-    - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-ec2"
+   - "camel:kamelet"
   template:
     from:
-      uri: kamelet:source
+      uri: "kamelet:source"
       steps:
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[instanceIds]}"
+           -
+            simple: "${header[instanceIds]}"
             steps:
-            - set-header:
-                name: CamelAwsEC2InstancesIds
+             -
+              set-header:
+                name: "CamelAwsEC2InstancesIds"
                 simple: "${header[instanceIds]}"
-          - simple: "${header[ce-instanceids]}"
+           -
+            simple: "${header[ce-instanceids]}"
             steps:
-            - set-header:
-                name: CamelAwsEC2InstancesIds
+             -
+              set-header:
+                name: "CamelAwsEC2InstancesIds"
                 simple: "${header[ce-instanceids]}"
-      - to:
+       -
+        to:
           uri: "aws2-ec2:ec2-route"
           parameters:
             accessKey: "{{?accessKey}}"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-eventbridge-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-eventbridge-sink.kamelet.yaml
index f42f7531..a065fa78 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-eventbridge-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-eventbridge-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-eventbridge-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Preview"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -27,116 +25,166 @@ metadata:
     camel.apache.org/kamelet.group: "AWS Eventbridge"
   labels:
     camel.apache.org/kamelet.type: "sink"
+  name: "aws-eventbridge-sink"
+  headers:
+    CamelAwsEventbridgeEventPattern: "The event pattern."
+    CamelAwsEventbridgeRuleNamePrefix: "The prefix matching the rule name."
+    CamelAwsEventbridgeOperation: "The operation we want to perform"
+    CamelAwsEventbridgeTargetArn: "The Amazon Resource Name (ARN) of the target resource."
+    CamelAwsEventbridgeSource: "The source related to Event"
+    CamelAwsEventbridgeDetailType: "The detail type related to Event"
+    CamelAwsEventbridgeTargets: "The targets to update or add to the rule."
+    CamelAwsEventbridgeTargetsIds: "The IDs of the targets to remove from the rule."
+    CamelAwsEventbridgeRuleName: "The name of the rule."
+    CamelAwsEventbridgeResourcesArn: "Comma separated list of Amazon Resource Names (ARN) of the resources related to Event"
 spec:
   definition:
-    title: "AWS Eventbridge Sink"
-    description: |-
-      Send events to an Amazon Eventbridge Eventbus.
-
-      The basic authentication method for the Eventbridge 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 Eventbridge client loads the credentials through this provider and doesn't use the basic authentication method.
-
-      In the headers, you need to set the `resources-arn` / `ce-resources-arn` property to specify the ARN of resources related to the event.
-
-      In the headers, you need to set the `detail-type` / `ce-detail-type` property to specify the detail type related to the event.
-
-      In the headers, you need to set the `event-source` / `ce-event-source` property to specify the event source related to the event.
-
-      If you do not set the property in the header, the Kamelet uses the exchange ID for the file name.
-    required:
-      - eventbusNameOrArn
-      - region
-    type: object
+    description: "Send events to an Amazon Eventbridge Eventbus.\n\nThe basic authentication method for the Eventbridge service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.\n\nIf you use the default credentials provider, the Eventbridge client loads the credentials through this provider and doesn't use the basic authentication method.\n\nIn the headers, you need to set the `resources-arn` / `ce-re [...]
     properties:
       eventbusNameOrArn:
-        title: Eventbus Name
-        description: The Eventbridge Eventbus name or Amazon Resource Name (ARN).
-        type: string
+        description: "The Eventbridge Eventbus name or Amazon Resource Name (ARN)."
+        title: "Eventbus Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the Eventbridge 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
+        description: "If true, the Eventbridge client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "eventbusNameOrArn"
+     - "region"
+    title: "AWS Eventbridge Sink"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws2-eventbridge"
-    - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-eventbridge"
+   - "camel:kamelet"
   template:
     from:
       uri: "kamelet:source"
       steps:
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[resources-arn]}"
+           -
+            simple: "${header[resources-arn]}"
             steps:
-            - set-header:
-                name: CamelAwsEventbridgeResourcesArn
+             -
+              set-header:
+                name: "CamelAwsEventbridgeResourcesArn"
                 simple: "${header[resources-arn]}"
-          - simple: "${header[ce-resources-arn]}"
+           -
+            simple: "${header[ce-resources-arn]}"
             steps:
-            - set-header:
-                name: CamelAwsEventbridgeResourcesArn
+             -
+              set-header:
+                name: "CamelAwsEventbridgeResourcesArn"
                 simple: "${header[ce-resources-arn]}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[detail-type]}"
+           -
+            simple: "${header[detail-type]}"
             steps:
-            - set-header:
-                name: CamelAwsEventbridgeDetailType
+             -
+              set-header:
+                name: "CamelAwsEventbridgeDetailType"
                 simple: "${header[detail-type]}"
-          - simple: "${header[ce-detail-type]}"
+           -
+            simple: "${header[ce-detail-type]}"
             steps:
-            - set-header:
-                name: CamelAwsEventbridgeDetailType
+             -
+              set-header:
+                name: "CamelAwsEventbridgeDetailType"
                 simple: "${header[ce-detail-type]}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[event-source]}"
+           -
+            simple: "${header[event-source]}"
             steps:
-            - set-header:
-                name: CamelAwsEventbridgeSource
+             -
+              set-header:
+                name: "CamelAwsEventbridgeSource"
                 simple: "${header[event-source]}"
-          - simple: "${header[ce-event-source]}"
+           -
+            simple: "${header[ce-event-source]}"
             steps:
-            - set-header:
-                name: CamelAwsEventbridgeSource
-                simple: "${header[ce-event-source]}"            
-      - to:
+             -
+              set-header:
+                name: "CamelAwsEventbridgeSource"
+                simple: "${header[ce-event-source]}"
+       -
+        to:
           uri: "aws2-eventbridge:{{eventbusNameOrArn}}"
           parameters:
             secretKey: "{{?secretKey}}"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml
index b4738814..a8b12e5b 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-lambda-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,61 +24,94 @@ metadata:
     camel.apache.org/provider: "Apache Software Foundation"
     camel.apache.org/kamelet.group: "AWS Lambda"
   labels:
-    camel.apache.org/kamelet.type: sink
+    camel.apache.org/kamelet.type: "sink"
+  name: "aws-lambda-sink"
+  headers: {}
 spec:
   definition:
-    title: AWS Lambda Sink
-    description: |-
-      Send a payload to an AWS Lambda function.
-
-      The basic authentication method for the Lambda 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 Lambda client loads the credentials through this provider and doesn't use the basic authentication method.
-    required:
-      - function
-      - region
-    type: object
+    description: "Send a payload to an AWS Lambda function.\n\nThe basic authentication method for the Lambda service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.\n\nIf you use the default credentials provider, the Lambda client loads the credentials through this provider and doesn't use the basic authentication method."
     properties:
       function:
-        title: Function Name
-        description: The Lambda Function name.
-        type: string
+        description: "The Lambda Function name."
+        title: "Function Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the Lambda 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
+        description: "If true, the Lambda client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "function"
+     - "region"
+    title: "AWS Lambda Sink"
+    type: "object"
   dependencies:
-    - "camel:aws2-lambda"
-    - "camel:kamelet"
+   - "camel:aws2-lambda"
+   - "camel:kamelet"
   template:
     from:
-      uri: kamelet:source
+      uri: "kamelet:source"
       steps:
-      - to:
+       -
+        to:
           uri: "aws2-lambda:{{function}}"
           parameters:
             accessKey: "{{?accessKey}}"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml
index f7ff5de9..74486826 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml
@@ -13,11 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-redshift-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,89 +25,97 @@ metadata:
     camel.apache.org/kamelet.group: "AWS Redshift"
   labels:
     camel.apache.org/kamelet.type: "sink"
+  name: "aws-redshift-sink"
+  headers:
+    CamelSqlUpdateCount: "The number of rows updated for update operations, returned as an Integer object. This header is not provided when using outputType=StreamList."
+    CamelSqlParameters: "The SQL parameters when using the option useMessageBodyForSql"
+    CamelSqlGeneratedColumns: "Set it to specify the expected generated columns"
+    CamelSqlGeneratedKeysRowCount: "The number of rows in the header that contains generated keys."
+    CamelSqlRowCount: "The number of rows returned for select operations, returned as an Integer object. This header is not provided when using outputType=StreamList."
+    CamelSqlRetrieveGeneratedKeys: "Set its value to true to retrieve generated keys"
+    CamelSqlQuery: "Query to execute. This query takes precedence over the query specified in the endpoint URI. Note that query parameters in the header _are_ represented by a instead of a pass:# symbol"
+    CamelSqlGeneratedKeyRows: "Rows that contains the generated keys (a list of maps of keys)."
 spec:
   definition:
-    title: "AWS Redshift Sink"
-    description: |-
-      Send data to an AWS Redshift Database.
-
-      This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query:
-
-      'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
-
-      Here is example input for the example query:
-
-      '{ "username":"oscerd", "city":"Rome"}'
-    required:
-      - serverName
-      - username
-      - password
-      - query
-      - databaseName
-    type: object
+    description: "Send data to an AWS Redshift Database.\n\nThis Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query:\n\n'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'\n\nHere is example input for the example query:\n\n'{ \"username\":\"oscerd\", \"city\":\"Rome\"}'"
     properties:
       serverName:
-        title: Server Name
-        description: The server name for the data source.
-        type: string
-        example: localhost
+        description: "The server name for the data source."
+        example: "localhost"
+        title: "Server Name"
+        type: "string"
       serverPort:
-        title: Server Port
-        description: The server port for the AWS RedShi data source.
-        type: string
         default: 5439
+        description: "The server port for the AWS RedShi data source."
+        title: "Server Port"
+        type: "string"
       username:
-        title: Username
-        description: The username to access a secured AWS Redshift Database.
-        type: string
+        description: "The username to access a secured AWS Redshift Database."
+        title: "Username"
+        type: "string"
         x-descriptors:
-        - urn:camel:group:credentials
+         - "urn:camel:group:credentials"
       password:
-        title: Password
-        description: The password to access a secured AWS Redshift Database.
-        type: string
-        format: password
+        description: "The password to access a secured AWS Redshift Database."
+        format: "password"
+        title: "Password"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
       query:
-        title: Query
-        description: The query to execute against the AWS Redshift Database.
-        type: string
-        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
+        description: "The query to execute against the AWS Redshift Database."
+        example: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)"
+        title: "Query"
+        type: "string"
       databaseName:
-        title: Database Name
-        description: The name of the AWS RedShift Database.
-        type: string
-  types:
-    in:
-      mediaType: application/json
+        description: "The name of the AWS RedShift Database."
+        title: "Database Name"
+        type: "string"
+    required:
+     - "serverName"
+     - "username"
+     - "password"
+     - "query"
+     - "databaseName"
+    title: "AWS Redshift Sink"
+    type: "object"
   dependencies:
-  - "camel:jackson"
-  - "camel:kamelet"
-  - "camel:sql"
-  - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.9"
-  - "mvn:org.apache.commons:commons-dbcp2:2.9.0"
+   - "camel:jackson"
+   - "camel:kamelet"
+   - "camel:sql"
+   - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.9"
+   - "mvn:org.apache.commons:commons-dbcp2:2.9.0"
   template:
     beans:
-      - name: dsBean
-        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
-        property:
-          - key: username
-            value: '{{username}}'
-          - key: password
-            value: '{{password}}'
-          - key: url
-            value: 'jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}'
-          - key: driverClassName
-            value: 'com.amazon.redshift.jdbc.Driver'
+     -
+      name: "dsBean"
+      type: "#class:org.apache.commons.dbcp2.BasicDataSource"
+      property:
+       -
+        key: "username"
+        value: "{{username}}"
+       -
+        key: "password"
+        value: "{{password}}"
+       -
+        key: "url"
+        value: "jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}"
+       -
+        key: "driverClassName"
+        value: "com.amazon.redshift.jdbc.Driver"
     from:
       uri: "kamelet:source"
       steps:
-      - unmarshal:
-          json: 
-            library: Jackson
-      - to: 
+       -
+        unmarshal:
+          json:
+            library: "Jackson"
+       -
+        to:
           uri: "sql:{{query}}"
           parameters:
             dataSource: "#bean:{{dsBean}}"
+  types:
+    in:
+      mediaType: "application/json"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-source.kamelet.yaml
index cf00555e..99c2d34a 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-source.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-source.kamelet.yaml
@@ -13,11 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-redshift-source
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,84 +25,87 @@ metadata:
     camel.apache.org/kamelet.group: "AWS Redshift"
   labels:
     camel.apache.org/kamelet.type: "source"
+  name: "aws-redshift-source"
+  headers: {}
 spec:
   definition:
-    title: "AWS Redshift Source"
-    description: |-
-      Query data from an AWS RedShift Database.
-    required:
-      - serverName
-      - username
-      - password
-      - query
-      - databaseName
-    type: object
+    description: "Query data from an AWS RedShift Database."
     properties:
       serverName:
-        title: Server Name
-        description: The server name for the data source.
-        type: string
-        example: localhost
+        description: "The server name for the data source."
+        example: "localhost"
+        title: "Server Name"
+        type: "string"
       serverPort:
-        title: Server Port
-        description: The server port for the data source.
-        type: string
         default: 5439
+        description: "The server port for the data source."
+        title: "Server Port"
+        type: "string"
       username:
-        title: Username
-        description: The username to access a secured AWS RedShift Database.
-        type: string
+        description: "The username to access a secured AWS RedShift Database."
+        title: "Username"
+        type: "string"
         x-descriptors:
-        - urn:camel:group:credentials
+         - "urn:camel:group:credentials"
       password:
-        title: Password
-        description: The password to access a secured AWS RedShift Database.
-        type: string
-        format: password
+        description: "The password to access a secured AWS RedShift Database."
+        format: "password"
+        title: "Password"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "urn:alm:descriptor:com.tectonic.ui:password"
+         - "urn:camel:group:credentials"
       query:
-        title: Query
-        description: The query to execute against the AWS RedShift Database.
-        type: string
-        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
+        description: "The query to execute against the AWS RedShift Database."
+        example: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)"
+        title: "Query"
+        type: "string"
       databaseName:
-        title: Database Name
-        description: The name of the AWS RedShift Database.
-        type: string
+        description: "The name of the AWS RedShift Database."
+        title: "Database Name"
+        type: "string"
       consumedQuery:
-        title: Consumed Query
-        description: A query to run on a tuple consumed.
-        type: string
-        example: 'DELETE FROM accounts where user_id = :#user_id'
+        description: "A query to run on a tuple consumed."
+        example: "DELETE FROM accounts where user_id = :#user_id"
+        title: "Consumed Query"
+        type: "string"
       delay:
-        title: Delay
-        description: The number of milliseconds before the next poll from the AWS RedShift database.
-        type: integer
         default: 500
-  types:
-    out:
-      mediaType: application/json
+        description: "The number of milliseconds before the next poll from the AWS RedShift database."
+        title: "Delay"
+        type: "integer"
+    required:
+     - "serverName"
+     - "username"
+     - "password"
+     - "query"
+     - "databaseName"
+    title: "AWS Redshift Source"
+    type: "object"
   dependencies:
-  - "camel:jackson"
-  - "camel:kamelet"
-  - "camel:sql"
-  - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.9"
-  - "mvn:org.apache.commons:commons-dbcp2:2.9.0"
+   - "camel:jackson"
+   - "camel:kamelet"
+   - "camel:sql"
+   - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.9"
+   - "mvn:org.apache.commons:commons-dbcp2:2.9.0"
   template:
     beans:
-      - name: dsBean
-        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
-        property:
-          - key: username
-            value: '{{username}}'
-          - key: password
-            value: '{{password}}'
-          - key: url
-            value: 'jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}'
-          - key: driverClassName
-            value: 'com.amazon.redshift.jdbc.Driver'
+     -
+      name: "dsBean"
+      type: "#class:org.apache.commons.dbcp2.BasicDataSource"
+      property:
+       -
+        key: "username"
+        value: "{{username}}"
+       -
+        key: "password"
+        value: "{{password}}"
+       -
+        key: "url"
+        value: "jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}"
+       -
+        key: "driverClassName"
+        value: "com.amazon.redshift.jdbc.Driver"
     from:
       uri: "sql:{{query}}"
       parameters:
@@ -111,7 +113,12 @@ spec:
         onConsume: "{{?consumedQuery}}"
         delay: "{{delay}}"
       steps:
-      - marshal:
-          json: 
-            library: Jackson
-      - to: "kamelet:sink"
+       -
+        marshal:
+          json:
+            library: "Jackson"
+       -
+        to: "kamelet:sink"
+  types:
+    out:
+      mediaType: "application/json"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml
index ca1e1d4b..6904306d 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml
@@ -27,60 +27,14 @@ metadata:
     camel.apache.org/kamelet.type: "sink"
   name: "aws-s3-sink"
   headers:
-    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
-    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
-    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
-    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
-    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link in milliseconds"
-    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the service (not needed when BrowserCompatible is true)"
-    CamelAwsS3DestinationKey: "The Destination key which will be used for the current operation"
-    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used for the current operation"
-    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
-    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
-    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
-    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
-    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
-    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the service (not needed when BrowserCompatible is true)"
-    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
-    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
-    CamelAwsS3RangeStart: "The position of the first byte to get"
-    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL for allowed values."
-    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser compatible"
-    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
-    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
-    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
-    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
-    CamelAwsS3StorageClass: "The storage class of this object."
-    CamelAwsS3RangeEnd: "The position of the last byte to get"
-  Headers:
-    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
-    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
-    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
-    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
-    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link in milliseconds"
-    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the service (not needed when BrowserCompatible is true)"
-    CamelAwsS3DestinationKey: "The Destination key which will be used for the current operation"
-    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used for the current operation"
-    CamelMessageTimestamp: "The timestamp of the message"
-    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
-    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
-    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
-    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket lifecycle), the response includes this header."
-    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
-    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
-    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the service (not needed when BrowserCompatible is true)"
-    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
-    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves a bucket that is either a source or destination in a replication rule."
-    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
-    CamelAwsS3RangeStart: "The position of the first byte to get"
-    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL for allowed values."
-    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser compatible"
-    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
-    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
-    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
-    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
-    CamelAwsS3StorageClass: "The storage class of this object."
-    CamelAwsS3RangeEnd: "The position of the last byte to get"
+    CamelAwsCwMetricDimensionName: "The Amazon CW metric dimension name."
+    CamelAwsCwMetricUnit: "The Amazon CW metric unit."
+    CamelAwsCwMetricDimensionValue: "The Amazon CW metric dimension value."
+    CamelAwsCwMetricDimensions: "A map of dimension names and dimension values."
+    CamelAwsCwMetricTimestamp: "The Amazon CW metric timestamp."
+    CamelAwsCwMetricNamespace: "The Amazon CW metric namespace."
+    CamelAwsCwMetricName: "The Amazon CW metric name."
+    CamelAwsCwMetricValue: "The Amazon CW metric value."
 spec:
   definition:
     description: "Upload data to an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method.\n\nIn the header, you can optionally set the `file` / `ce-partition` property to specify the [...]
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml
index e1efbffe..416eb518 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml
@@ -27,53 +27,14 @@ metadata:
     camel.apache.org/kamelet.type: "source"
   name: "aws-s3-source"
   headers:
-    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
-    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
-    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
-    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves a bucket that is either a source or destination in a replication rule."
-    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
-    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
-    CamelMessageTimestamp: "The timestamp of the message"
-    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
-    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
-    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
-    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
-    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
-    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
-    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket lifecycle), the response includes this header."
-    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
-    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
-    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
-    CamelAwsS3StorageClass: "The storage class of this object."
-  Headers:
-    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
-    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
-    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
-    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
-    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link in milliseconds"
-    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the service (not needed when BrowserCompatible is true)"
-    CamelAwsS3DestinationKey: "The Destination key which will be used for the current operation"
-    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used for the current operation"
-    CamelMessageTimestamp: "The timestamp of the message"
-    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
-    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
-    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
-    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket lifecycle), the response includes this header."
-    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
-    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
-    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the service (not needed when BrowserCompatible is true)"
-    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
-    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves a bucket that is either a source or destination in a replication rule."
-    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
-    CamelAwsS3RangeStart: "The position of the first byte to get"
-    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL for allowed values."
-    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser compatible"
-    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
-    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
-    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
-    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
-    CamelAwsS3StorageClass: "The storage class of this object."
-    CamelAwsS3RangeEnd: "The position of the last byte to get"
+    CamelAwsCwMetricDimensionName: "The Amazon CW metric dimension name."
+    CamelAwsCwMetricUnit: "The Amazon CW metric unit."
+    CamelAwsCwMetricDimensionValue: "The Amazon CW metric dimension value."
+    CamelAwsCwMetricDimensions: "A map of dimension names and dimension values."
+    CamelAwsCwMetricTimestamp: "The Amazon CW metric timestamp."
+    CamelAwsCwMetricNamespace: "The Amazon CW metric namespace."
+    CamelAwsCwMetricName: "The Amazon CW metric name."
+    CamelAwsCwMetricValue: "The Amazon CW metric value."
 spec:
   definition:
     description: "Receive data from an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method.\n\nTwo headers will be duplicated with different names for clarity at sink level, CamelAw [...]
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml
index ca1e1d4b..6904306d 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml
@@ -27,60 +27,14 @@ metadata:
     camel.apache.org/kamelet.type: "sink"
   name: "aws-s3-sink"
   headers:
-    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
-    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
-    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
-    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
-    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link in milliseconds"
-    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the service (not needed when BrowserCompatible is true)"
-    CamelAwsS3DestinationKey: "The Destination key which will be used for the current operation"
-    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used for the current operation"
-    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
-    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
-    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
-    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
-    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
-    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the service (not needed when BrowserCompatible is true)"
-    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
-    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
-    CamelAwsS3RangeStart: "The position of the first byte to get"
-    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL for allowed values."
-    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser compatible"
-    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
-    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
-    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
-    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
-    CamelAwsS3StorageClass: "The storage class of this object."
-    CamelAwsS3RangeEnd: "The position of the last byte to get"
-  Headers:
-    CamelAwsS3Metadata: "A map of metadata to be stored or stored with the object in S3. More details about metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.htmlhere."
-    CamelAwsS3ContentEncoding: "The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field."
-    CamelAwsS3ETag: "(producer) The ETag value for the newly uploaded object. (consumer) The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3."
-    CamelAwsS3Operation: "The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, listObjects"
-    CamelAwsS3DowloadLinkExpirationTime: "The expiration time of the download link in milliseconds"
-    CamelAwsS3DownloadLinkSignedPayload: "The request payload that is needed by the service (not needed when BrowserCompatible is true)"
-    CamelAwsS3DestinationKey: "The Destination key which will be used for the current operation"
-    CamelAwsS3BucketDestinationName: "The bucket Destination Name which will be used for the current operation"
-    CamelMessageTimestamp: "The timestamp of the message"
-    CamelAwsS3ContentDisposition: "The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as."
-    CamelAwsS3ContentType: "The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type."
-    CamelAwsS3LastModified: "The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object."
-    CamelAwsS3ExpirationTime: "If the object expiration is configured (see PUT Bucket lifecycle), the response includes this header."
-    CamelAwsS3ContentControl: "The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain."
-    CamelAwsS3ServerSideEncryption: "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256."
-    CamelAwsS3DownloadLinkHttpRequestHeaders: "The headers that are needed by the service (not needed when BrowserCompatible is true)"
-    CamelAwsS3VersionId: "(producer) The optional version ID of the newly uploaded object. (consumer) The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled."
-    CamelAwsS3ReplicationStatus: "Amazon S3 can return this if your request involves a bucket that is either a source or destination in a replication rule."
-    CamelAwsS3Acl: "A well constructed Amazon S3 Access Control List object."
-    CamelAwsS3RangeStart: "The position of the first byte to get"
-    CamelAwsS3CannedAcl: "The canned acl that will be applied to the object. see software.amazon.awssdk.services.s3.model.ObjectCannedACL for allowed values."
-    CamelAwsS3DownloadLinkBrowserCompatible: "Whether the download link is browser compatible"
-    CamelAwsS3BucketName: "The bucket Name which this object will be stored or which will be used for the current operation or in which this object is contained."
-    CamelAwsS3ContentMD5: "The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent."
-    CamelAwsS3Key: "The key under which this object is stored or will be stored or which will be used for the current operation"
-    CamelAwsS3ContentLength: "The Content-Length HTTP header indicating the size of the associated object in bytes."
-    CamelAwsS3StorageClass: "The storage class of this object."
-    CamelAwsS3RangeEnd: "The position of the last byte to get"
+    CamelAwsCwMetricDimensionName: "The Amazon CW metric dimension name."
+    CamelAwsCwMetricUnit: "The Amazon CW metric unit."
+    CamelAwsCwMetricDimensionValue: "The Amazon CW metric dimension value."
+    CamelAwsCwMetricDimensions: "A map of dimension names and dimension values."
+    CamelAwsCwMetricTimestamp: "The Amazon CW metric timestamp."
+    CamelAwsCwMetricNamespace: "The Amazon CW metric namespace."
+    CamelAwsCwMetricName: "The Amazon CW metric name."
+    CamelAwsCwMetricValue: "The Amazon CW metric value."
 spec:
   definition:
     description: "Upload data to an Amazon S3 Bucket.\n\nThe 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.\n\nIf you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method.\n\nIn the header, you can optionally set the `file` / `ce-partition` property to specify the [...]
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-secrets-manager-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-secrets-manager-sink.kamelet.yaml
index b1f28cec..67266e75 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-secrets-manager-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-secrets-manager-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-secrets-manager-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -27,79 +25,120 @@ metadata:
     camel.apache.org/kamelet.group: "AWS Secrets Manager"
   labels:
     camel.apache.org/kamelet.type: "sink"
+  name: "aws-secrets-manager-sink"
+  headers:
+    CamelAwsSecretsManagerMaxResults: "The number of results to include in the response."
+    CamelAwsSecretsManagerSecretReplicationRegions: "A comma separated list of Regions in which to replicate the secret."
+    CamelAwsSecretsManagerSecretDescription: "The description of the secret."
+    CamelAwsSecretsManagerSecretId: "The ARN or name of the secret."
+    CamelAwsSecretsManagerSecretName: "The name of the secret."
+    CamelAwsSecretsManagerSecretVersionId: "The unique identifier of the version of the secret."
+    CamelAwsSecretsManagerLambdaRotationFunctionArn: "The ARN of the Lambda rotation function that can rotate the secret."
+    CamelAwsSecretsManagerOperation: "The operation we want to perform"
 spec:
   definition:
-    title: "AWS Secrets Manager Sink"
-    description: |-
-      Create a secret in AWS Secrets Manager.
-
-      Access Key/Secret Key are the basic method for authenticating to the AWS Secrets Manager Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
-      
-      When using a default Credentials Provider the Secrets Manager client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
-
-      The Kamelet expects the following headers to be set:
-
-      - `secret-name` / `ce-secret-name`: as the secret name to create.
-
-      If the header won't be set the exchange ID will be used as secret name.
-    required:
-      - region
-    type: object
+    description: "Create a secret in AWS Secrets Manager.\n\nAccess Key/Secret Key are the basic method for authenticating to the AWS Secrets Manager Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.\n\nWhen using a default Credentials Provider the Secrets Manager client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory paramet [...]
     properties:
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: Set whether the Secrets Manager client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "Set whether the Secrets Manager client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "region"
+    title: "AWS Secrets Manager Sink"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws-secrets-manager"
-    - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws-secrets-manager"
+   - "camel:kamelet"
   template:
     from:
       uri: "kamelet:source"
       steps:
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[secret-name]}"
+           -
+            simple: "${header[secret-name]}"
             steps:
-            - set-header:
-                name: CamelAwsSecretsManagerSecretName
+             -
+              set-header:
+                name: "CamelAwsSecretsManagerSecretName"
                 simple: "${header[secret-name]}"
-          - simple: "${header[ce-secret-name]}"
+           -
+            simple: "${header[ce-secret-name]}"
             steps:
-            - set-header:
-                name: CamelAwsSecretsManagerSecretName
+             -
+              set-header:
+                name: "CamelAwsSecretsManagerSecretName"
                 simple: "${header[ce-secret-name]}"
           otherwise:
             steps:
-            - set-header:
-                name: CamelAwsSecretsManagerSecretName
+             -
+              set-header:
+                name: "CamelAwsSecretsManagerSecretName"
                 simple: "${exchangeId}"
-      - to:
+       -
+        to:
           uri: "aws-secrets-manager:kamelet"
           parameters:
             secretKey: "{{?secretKey}}"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-ses-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-ses-sink.kamelet.yaml
index b5cfe0d8..d7d379e9 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-ses-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-ses-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-ses-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -27,112 +25,162 @@ metadata:
     camel.apache.org/kamelet.group: "AWS SES"
   labels:
     camel.apache.org/kamelet.type: "sink"
+  name: "aws-ses-sink"
+  headers:
+    CamelAwsSesBcc: "List of comma separated destination blind carbon copy (bcc) email address."
+    CamelAwsSesConfigurationSet: "TThe configuration set to send."
+    CamelAwsSesSubject: "The subject of the message."
+    CamelAwsSesFrom: "The sender's email address."
+    CamelAwsSesMessageId: "The Amazon SES message ID."
+    CamelAwsSesTo: "List of comma separated destination email address."
+    CamelAwsSesReturnPath: "The email address to which bounce notifications are to be forwarded."
+    CamelAwsSesCc: "List of comma separated destination carbon copy (cc) email address."
+    CamelAwsSesReplyToAddresses: "The reply-to email address(es) for the message."
+    CamelAwsSesHtmlEmail: "The flag to show if email content is HTML."
 spec:
   definition:
-    title: "AWS SES Sink"
-    description: |-
-      Send email through the Amazon Simple Email Service (SES).
-
-      The basic authentication method for the SES 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 SES client loads the credentials through this provider and doesn't use the basic authentication method.
-      
-      In the header, you can optionally set the following properties:
-      
-      - `subject` / `ce-subject` property to specify the email subject. If you do not set this property in the header, the Kamelet uses the exchange ID for the email subject.
-
-      - `to` / `ce-to` to provide a comma-separated list of email addresses.
-
-      - `reply-to-addresses` / `ce-reply-to-addresses`to provider a comma-separated list of reply-to email addresses.
-
-    required:
-      - from
-      - region
-    type: object
+    description: "Send email through the Amazon Simple Email Service (SES).\n\nThe basic authentication method for the SES service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.\n\nIf you use the default credentials provider, the SES client loads the credentials through this provider and doesn't use the basic authentication method.\n\nIn the header, you can optionally set the following properties:\n [...]
     properties:
       from:
-        title: From 
-        description: From address
-        type: string
-        example: user@example.com
+        description: "From address"
+        example: "user@example.com"
+        title: "From"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the SES 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
+        description: "If true, the SES client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "from"
+     - "region"
+    title: "AWS SES Sink"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws2-ses"
-    - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-ses"
+   - "camel:kamelet"
   template:
     from:
       uri: "kamelet:source"
       steps:
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[subject]}"
+           -
+            simple: "${header[subject]}"
             steps:
-            - set-header:
-                name: CamelAwsSesSubject
+             -
+              set-header:
+                name: "CamelAwsSesSubject"
                 simple: "${header[subject]}"
-          - simple: "${header[ce-subject]}"
+           -
+            simple: "${header[ce-subject]}"
             steps:
-            - set-header:
-                name: CamelAwsSesSubject
+             -
+              set-header:
+                name: "CamelAwsSesSubject"
                 simple: "${header[ce-subject]}"
           otherwise:
             steps:
-            - set-header:
-                name: CamelAwsSesSubject
+             -
+              set-header:
+                name: "CamelAwsSesSubject"
                 simple: "${exchangeId}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[to]}"
+           -
+            simple: "${header[to]}"
             steps:
-            - set-header:
-                name: CamelAwsSesTo
+             -
+              set-header:
+                name: "CamelAwsSesTo"
                 simple: "${header[to]}"
-          - simple: "${header[ce-to]}"
+           -
+            simple: "${header[ce-to]}"
             steps:
-            - set-header:
-                name: CamelAwsSesTo
+             -
+              set-header:
+                name: "CamelAwsSesTo"
                 simple: "${header[ce-to]}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[reply-to-addresses]}"
+           -
+            simple: "${header[reply-to-addresses]}"
             steps:
-            - set-header:
-                name: CamelAwsSesReplyToAddresses
+             -
+              set-header:
+                name: "CamelAwsSesReplyToAddresses"
                 simple: "${header[reply-to-addresses]}"
-          - simple: "${header[ce-reply-to-addresses]}"
+           -
+            simple: "${header[ce-reply-to-addresses]}"
             steps:
-            - set-header:
-                name: CamelAwsSesReplyToAddresses
+             -
+              set-header:
+                name: "CamelAwsSesReplyToAddresses"
                 simple: "${header[ce-reply-to-addresses]}"
-      - to:
+       -
+        to:
           uri: "aws2-ses://{{from}}"
           parameters:
             secretKey: "{{?secretKey}}"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-sns-fifo-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-sns-fifo-sink.kamelet.yaml
index 86f44470..8f68cf6a 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-sns-fifo-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-sns-fifo-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-sns-fifo-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,127 +24,173 @@ metadata:
     camel.apache.org/provider: "Apache Software Foundation"
     camel.apache.org/kamelet.group: "AWS SNS"
   labels:
-    camel.apache.org/kamelet.type: sink
+    camel.apache.org/kamelet.type: "sink"
+  name: "aws-sns-fifo-sink"
+  headers:
+    CamelAwsSnsSubject: "The Amazon SNS message subject. If not set, the subject from the SnsConfiguration is used."
+    CamelAwsSnsMessageId: "The Amazon SNS message ID."
+    CamelAwsSnsMessageStructure: "The message structure to use such as json."
 spec:
   definition:
-    title: AWS SNS FIFO Sink
-    description: |- 
-      Send message to an AWS SNS FIFO Topic.
-
-      Access Key/Secret Key are the basic method for authenticating to the AWS SNS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
-      
-      When using a default Credentials Provider the SNS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
-
-      The Kamelet expects the following headers to be set:
-
-      - `subject` / `ce-subject`: the subject of the message
-    required:
-      - topicNameOrArn
-      - region
-    type: object
+    description: "Send message to an AWS SNS FIFO Topic.\n\nAccess Key/Secret Key are the basic method for authenticating to the AWS SNS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.\n\nWhen using a default Credentials Provider the SNS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.\n\nT [...]
     properties:
       topicNameOrArn:
-        title: Topic Name
-        description: The SNS Topic name or ARN
-        type: string
+        description: "The SNS Topic name or ARN"
+        title: "Topic Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       contentBasedDeduplication:
-        title: Content-Based Deduplication
-        description: Use content-based deduplication (should be enabled in the SQS FIFO queue first)
-        type: boolean
         default: false
+        description: "Use content-based deduplication (should be enabled in the SQS FIFO queue first)"
+        title: "Content-Based Deduplication"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       autoCreateTopic:
-        title: Autocreate Topic
-        description: Setting the autocreation of the SNS topic. 
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
-      useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: Set whether the SNS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
-        type: boolean
+        description: "Setting the autocreation of the SNS topic."
+        title: "Autocreate Topic"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+      useDefaultCredentialsProvider:
         default: false
+        description: "Set whether the SNS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "topicNameOrArn"
+     - "region"
+    title: "AWS SNS FIFO Sink"
+    type: "object"
   dependencies:
-  - "camel:aws2-sns"
-  - "camel:core"
-  - "camel:kamelet"
+   - "camel:aws2-sns"
+   - "camel:core"
+   - "camel:kamelet"
   template:
     from:
-      uri: kamelet:source
+      uri: "kamelet:source"
       steps:
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[subject]}"
+           -
+            simple: "${header[subject]}"
             steps:
-            - set-header:
-                name: CamelAwsSnsSubject
+             -
+              set-header:
+                name: "CamelAwsSnsSubject"
                 simple: "${header[subject]}"
-          - simple: "${header[ce-subject]}"
+           -
+            simple: "${header[ce-subject]}"
             steps:
-            - set-header:
-                name: CamelAwsSnsSubject
+             -
+              set-header:
+                name: "CamelAwsSnsSubject"
                 simple: "${header[ce-subject]}"
-      - set-property:
-          name: contentBasedDeduplication
+       -
+        set-property:
+          name: "contentBasedDeduplication"
           constant: "{{contentBasedDeduplication}}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[group]}"
+           -
+            simple: "${header[group]}"
             steps:
-            - set-property:
-                name: CamelAwsSnsMessageGroupId
+             -
+              set-property:
+                name: "CamelAwsSnsMessageGroupId"
                 simple: "${header[group]}"
-          - simple: "${header[ce-group]}"
+           -
+            simple: "${header[ce-group]}"
             steps:
-            - set-property:
-                name: CamelAwsSnsMessageGroupId
+             -
+              set-property:
+                name: "CamelAwsSnsMessageGroupId"
                 simple: "${header[ce-group]}"
           otherwise:
             steps:
-            - set-property:
-                name: CamelAwsSnsMessageGroupId
+             -
+              set-property:
+                name: "CamelAwsSnsMessageGroupId"
                 simple: "${exchangeId}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${exchangeProperty.contentBasedDeduplication} == 'true'"
+           -
+            simple: "${exchangeProperty.contentBasedDeduplication} == 'true'"
             steps:
-            - to:
+             -
+              to:
                 uri: "aws2-sns:{{topicNameOrArn}}"
                 parameters:
                   autoCreateTopic: "{{autoCreateTopic}}"
@@ -160,7 +204,8 @@ spec:
                   overrideEndpoint: "{{overrideEndpoint}}"
           otherwise:
             steps:
-            - to:
+             -
+              to:
                 uri: "aws2-sns:{{topicNameOrArn}}"
                 parameters:
                   autoCreateTopic: "{{autoCreateTopic}}"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml
index 08589823..49e615b9 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-sns-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,94 +24,133 @@ metadata:
     camel.apache.org/provider: "Apache Software Foundation"
     camel.apache.org/kamelet.group: "AWS SNS"
   labels:
-    camel.apache.org/kamelet.type: sink
+    camel.apache.org/kamelet.type: "sink"
+  name: "aws-sns-sink"
+  headers:
+    CamelAwsSnsSubject: "The Amazon SNS message subject. If not set, the subject from the SnsConfiguration is used."
+    CamelAwsSnsMessageId: "The Amazon SNS message ID."
+    CamelAwsSnsMessageStructure: "The message structure to use such as json."
 spec:
   definition:
-    title: AWS SNS Sink
-    description: |-
-      Send message to an Amazon Simple Notification Service (SNS) topic.
-
-      The basic authentication method for the SNS 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 SNS client loads the credentials through this provider and doesn't use the basic authentication method.
-
-      In the header, you can optionally set the `subject` / `ce-subject` property to specify the subject of the message.
-    required:
-      - topicNameOrArn
-      - region
-    type: object
+    description: "Send message to an Amazon Simple Notification Service (SNS) topic.\n\nThe basic authentication method for the SNS service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.\n\nIf you use the default credentials provider, the SNS client loads the credentials through this provider and doesn't use the basic authentication method.\n\nIn the header, you can optionally set the `subject` / `c [...]
     properties:
       topicNameOrArn:
-        title: Topic Name
-        description: The SNS topic name name or Amazon Resource Name (ARN).
-        type: string
+        description: "The SNS topic name name or Amazon Resource Name (ARN)."
+        title: "Topic Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       autoCreateTopic:
-        title: Autocreate Topic
-        description: Setting the autocreation of the SNS topic. 
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
-      useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: If true, the SNS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
-        type: boolean
+        description: "Setting the autocreation of the SNS topic."
+        title: "Autocreate Topic"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+      useDefaultCredentialsProvider:
         default: false
+        description: "If true, the SNS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key)."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "topicNameOrArn"
+     - "region"
+    title: "AWS SNS Sink"
+    type: "object"
   dependencies:
-    - "camel:core"
-    - "camel:aws2-sns"
-    - "camel:kamelet"
+   - "camel:core"
+   - "camel:aws2-sns"
+   - "camel:kamelet"
   template:
     from:
-      uri: kamelet:source
+      uri: "kamelet:source"
       steps:
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[subject]}"
+           -
+            simple: "${header[subject]}"
             steps:
-            - set-header:
-                name: CamelAwsSnsSubject
+             -
+              set-header:
+                name: "CamelAwsSnsSubject"
                 simple: "${header[subject]}"
-          - simple: "${header[ce-subject]}"
+           -
+            simple: "${header[ce-subject]}"
             steps:
-            - set-header:
-                name: CamelAwsSnsSubject
+             -
+              set-header:
+                name: "CamelAwsSnsSubject"
                 simple: "${header[ce-subject]}"
-      - to:
+       -
+        to:
           uri: "aws2-sns:{{topicNameOrArn}}"
           parameters:
             autoCreateTopic: "{{autoCreateTopic}}"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-batch-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-batch-sink.kamelet.yaml
index d40d62a7..976995e8 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-batch-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-batch-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-sqs-batch-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,96 +24,135 @@ metadata:
     camel.apache.org/provider: "Apache Software Foundation"
     camel.apache.org/kamelet.group: "AWS SQS"
   labels:
-    camel.apache.org/kamelet.type: sink
+    camel.apache.org/kamelet.type: "sink"
+  name: "aws-sqs-batch-sink"
+  headers:
+    CamelAwsSqsPrefix: "A string to use for filtering the list results."
+    CamelAwsSqsReceiptHandle: "The Amazon SQS message receipt handle."
+    CamelAwsSqsMessageId: "The Amazon SQS message ID."
+    CamelAwsSqsMD5OfBody: "The MD5 checksum of the Amazon SQS message."
+    CamelAwsSqsDelaySeconds: "The delay seconds that the Amazon SQS message can be see by others."
+    CamelAwsSqsOperation: "The operation we want to perform"
 spec:
   definition:
-    title: AWS SQS Batch Sink
-    description: |-
-      Send Batch message to an AWS SQS Queue.
-
-      Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
-      
-      When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
-    required:
-      - queueNameOrArn
-      - region
-      - batchSeparator
-    type: object
+    description: "Send Batch message to an AWS SQS Queue.\n\nAccess Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.\n\nWhen using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet."
     properties:
       queueNameOrArn:
-        title: Queue Name
-        description: The SQS Queue name or ARN
-        type: string
+        description: "The SQS Queue name or ARN"
+        title: "Queue Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       autoCreateQueue:
-        title: Autocreate Queue
-        description: Setting the autocreation of the SQS queue. 
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "Setting the autocreation of the SQS queue."
+        title: "Autocreate Queue"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       batchSeparator:
-        title: Batch Separator
-        description: The batch separator string
-        type: string
+        description: "The batch separator string"
         example: ","
+        title: "Batch Separator"
+        type: "string"
       amazonAWSHost:
-        title: AWS Host
-        description: The hostname of the Amazon AWS cloud. 
-        type: string
-        default: amazonaws.com
+        default: "amazonaws.com"
+        description: "The hostname of the Amazon AWS cloud."
+        title: "AWS Host"
+        type: "string"
       protocol:
-        title: Protocol
-        description: The underlying protocol used to communicate with SQS
-        type: string
-        example: http or https
-        default: https
+        default: "https"
+        description: "The underlying protocol used to communicate with SQS"
+        example: "http or https"
+        title: "Protocol"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        default: false
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
         x-descriptors:
-          - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false        
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "queueNameOrArn"
+     - "region"
+     - "batchSeparator"
+    title: "AWS SQS Batch Sink"
+    type: "object"
   dependencies:
-    - "camel:aws2-sqs"
-    - "camel:kamelet"
+   - "camel:aws2-sqs"
+   - "camel:kamelet"
   template:
     from:
-      uri: kamelet:source
+      uri: "kamelet:source"
       steps:
-      - to:
+       -
+        to:
           uri: "aws2-sqs:{{queueNameOrArn}}"
           parameters:
             autoCreateQueue: "{{autoCreateQueue}}"
@@ -128,4 +165,4 @@ spec:
             protocol: "{{?protocol}}"
             useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
             uriEndpointOverride: "{{?uriEndpointOverride}}"
-            overrideEndpoint: "{{overrideEndpoint}}"            
+            overrideEndpoint: "{{overrideEndpoint}}"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml
index 4ea06ac7..bb994194 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml
@@ -13,12 +13,10 @@
 # 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
+# ------------------------------------------------------------------------------
+apiVersion: "camel.apache.org/v1alpha1"
+kind: "Kamelet"
 metadata:
-  name: aws-sqs-fifo-sink
   annotations:
     camel.apache.org/kamelet.support.level: "Stable"
     camel.apache.org/catalog.version: "main-SNAPSHOT"
@@ -26,130 +24,177 @@ metadata:
     camel.apache.org/provider: "Apache Software Foundation"
     camel.apache.org/kamelet.group: "AWS SQS"
   labels:
-    camel.apache.org/kamelet.type: sink
+    camel.apache.org/kamelet.type: "sink"
+  name: "aws-sqs-fifo-sink"
+  headers:
+    CamelAwsSqsPrefix: "A string to use for filtering the list results."
+    CamelAwsSqsReceiptHandle: "The Amazon SQS message receipt handle."
+    CamelAwsSqsMessageId: "The Amazon SQS message ID."
+    CamelAwsSqsMD5OfBody: "The MD5 checksum of the Amazon SQS message."
+    CamelAwsSqsDelaySeconds: "The delay seconds that the Amazon SQS message can be see by others."
+    CamelAwsSqsOperation: "The operation we want to perform"
 spec:
   definition:
-    title: AWS SQS FIFO Sink
-    description: |-
-
-      Send message to an AWS SQS FIFO Queue.
-
-      Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
-      
-      When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
-    required:
-      - queueNameOrArn
-      - region
-    type: object
+    description: "\nSend message to an AWS SQS FIFO Queue.\n\nAccess Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.\n\nWhen using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet."
     properties:
       queueNameOrArn:
-        title: Queue Name
-        description: The SQS Queue name or ARN
-        type: string
+        description: "The SQS Queue name or ARN"
+        title: "Queue Name"
+        type: "string"
       accessKey:
-        title: Access Key
-        description: The access key obtained from AWS.
-        type: string
-        format: password
+        description: "The access key obtained from AWS."
+        format: "password"
+        title: "Access Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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
+        description: "The secret key obtained from AWS."
+        format: "password"
+        title: "Secret Key"
+        type: "string"
         x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
+         - "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 [...]
+        description: "The AWS region to access."
+        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"
+         - "aws-cn-global"
+         - "aws-us-gov-global"
+         - "aws-iso-global"
+         - "aws-iso-b-global"
+        title: "AWS Region"
+        type: "string"
       contentBasedDeduplication:
-        title: Content-Based Deduplication
-        description: Use content-based deduplication (should be enabled in the SQS FIFO queue first)
-        type: boolean
         default: false
+        description: "Use content-based deduplication (should be enabled in the SQS FIFO queue first)"
+        title: "Content-Based Deduplication"
+        type: "boolean"
         x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       autoCreateQueue:
-        title: Autocreate Queue
-        description: Setting the autocreation of the SQS queue. 
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "Setting the autocreation of the SQS queue."
+        title: "Autocreate Queue"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       amazonAWSHost:
-        title: AWS Host
-        description: The hostname of the Amazon AWS cloud. 
-        type: string
-        default: amazonaws.com
+        default: "amazonaws.com"
+        description: "The hostname of the Amazon AWS cloud."
+        title: "AWS Host"
+        type: "string"
       protocol:
-        title: Protocol
-        description: The underlying protocol used to communicate with SQS
-        type: string
-        example: http or https
-        default: https
+        default: "https"
+        description: "The underlying protocol used to communicate with SQS"
+        example: "http or https"
+        title: "Protocol"
+        type: "string"
       useDefaultCredentialsProvider:
-        title: Default Credentials Provider
-        description: Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
-        type: boolean
-        x-descriptors:
-        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
         default: false
+        description: "Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in."
+        title: "Default Credentials Provider"
+        type: "boolean"
+        x-descriptors:
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
       uriEndpointOverride:
-        title: Overwrite Endpoint URI
-        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
-        type: string
+        description: "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
+        title: "Overwrite Endpoint URI"
+        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
+        default: false
+        description: "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option."
+        title: "Endpoint Overwrite"
+        type: "boolean"
         x-descriptors:
-          - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
-        default: false   
+         - "urn:alm:descriptor:com.tectonic.ui:checkbox"
+    required:
+     - "queueNameOrArn"
+     - "region"
+    title: "AWS SQS FIFO Sink"
+    type: "object"
   dependencies:
-  - "camel:aws2-sqs"
-  - "camel:core"
-  - "camel:kamelet"
+   - "camel:aws2-sqs"
+   - "camel:core"
+   - "camel:kamelet"
   template:
     from:
-      uri: kamelet:source
+      uri: "kamelet:source"
       steps:
-      - set-property:
-          name: contentBasedDeduplication
+       -
+        set-property:
+          name: "contentBasedDeduplication"
           constant: "{{contentBasedDeduplication}}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${header[group]}"
+           -
+            simple: "${header[group]}"
             steps:
-            - set-property:
-                name: CamelAwsMessageGroupId
+             -
+              set-property:
+                name: "CamelAwsMessageGroupId"
                 simple: "${header[group]}"
-          - simple: "${header[ce-group]}"
+           -
+            simple: "${header[ce-group]}"
             steps:
-            - set-property:
-                name: CamelAwsMessageGroupId
+             -
+              set-property:
+                name: "CamelAwsMessageGroupId"
                 simple: "${header[ce-group]}"
           otherwise:
             steps:
-            - set-property:
-                name: CamelAwsMessageGroupId
+             -
+              set-property:
+                name: "CamelAwsMessageGroupId"
                 simple: "${exchangeId}"
-      - choice:
+       -
+        choice:
           when:
-          - simple: "${exchangeProperty.contentBasedDeduplication} == 'true'"
+           -
+            simple: "${exchangeProperty.contentBasedDeduplication} == 'true'"
             steps:
-            - to:
+             -
+              to:
                 uri: "aws2-sqs:{{queueNameOrArn}}"
                 parameters:
                   autoCreateQueue: "{{autoCreateQueue}}"
                   accessKey: "{{?accessKey}}"
                   secretKey: "{{?secretKey}}"
                   region: "{{region}}"
-                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" 
+                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
                   messageGroupIdStrategy: "usePropertyValue"
                   messageDeduplicationIdStrategy: "useContentBasedDeduplication"
                   amazonAWSHost: "{{?amazonAWSHost}}"
@@ -158,14 +203,15 @@ spec:
                   overrideEndpoint: "{{overrideEndpoint}}"
           otherwise:
             steps:
-            - to:
+             -
+              to:
                 uri: "aws2-sqs:{{queueNameOrArn}}"
                 parameters:
                   autoCreateQueue: "{{autoCreateQueue}}"
                   accessKey: "{{?accessKey}}"
                   secretKey: "{{?secretKey}}"
                   region: "{{region}}"
-                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" 
+                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
                   messageGroupIdStrategy: "usePropertyValue"
                   messageDeduplicationIdStrategy: "useExchangeId"
                   amazonAWSHost: "{{?amazonAWSHost}}"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml
index af05d598..25e6010d 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml
@@ -33,15 +33,6 @@ metadata:
     CamelAwsSqsMD5OfBody: "The MD5 checksum of the Amazon SQS message."
     CamelAwsSqsDelaySeconds: "The delay seconds that the Amazon SQS message can be see by others."
     CamelAwsSqsOperation: "The operation we want to perform"
-  Headers:
-    CamelAwsSqsPrefix: "A string to use for filtering the list results."
-    CamelAwsSqsReceiptHandle: "The Amazon SQS message receipt handle."
-    CamelAwsSqsMessageId: "The Amazon SQS message ID."
-    CamelAwsSqsMessageAttributes: "The Amazon SQS message attributes."
-    CamelAwsSqsMD5OfBody: "The MD5 checksum of the Amazon SQS message."
-    CamelAwsSqsAttributes: "A map of the attributes requested in ReceiveMessage to their respective values."
-    CamelAwsSqsDelaySeconds: "The delay seconds that the Amazon SQS message can be see by others."
-    CamelAwsSqsOperation: "The operation we want to perform"
 spec:
   definition:
     description: "Send messages to an Amazon Simple Queue Service (SQS) queue.\n\nThe basic authentication method for the SQS service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.\n\nIf you use the default credentials provider, the SQS client loads the credentials through this provider and doesn't use the basic authentication method."


[camel-kamelets] 04/04: Kamelets Enricher Maven Plugin for improving Kamelets metadata

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

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

commit 708a45eebc2b65f502d68a6bb014da983eec94e4
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Oct 14 12:11:03 2022 +0200

    Kamelets Enricher Maven Plugin for improving Kamelets metadata
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 library/camel-kamelets-bom/pom.xml                                      | 2 +-
 .../java/org/apache/camel/kamelets/maven/plugin/EnrichKameletsMojo.java | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/library/camel-kamelets-bom/pom.xml b/library/camel-kamelets-bom/pom.xml
index 5093b3da..a9e666ff 100644
--- a/library/camel-kamelets-bom/pom.xml
+++ b/library/camel-kamelets-bom/pom.xml
@@ -82,7 +82,7 @@
                         <phase>compile</phase>
                         <goals>
                             <goal>validate</goal>
-                           <goal>enrich</goal>
+                            <goal>catalog-enrich</goal>
                         </goals>
                     </execution>
                 </executions>
diff --git a/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/EnrichKameletsMojo.java b/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/EnrichKameletsMojo.java
index b35d8e3f..588334df 100644
--- a/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/EnrichKameletsMojo.java
+++ b/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/EnrichKameletsMojo.java
@@ -46,7 +46,7 @@ import java.util.Map;
 /**
  * Copy the properties from a source POM to a different destination POM for syncing purposes.
  */
-@Mojo(name = "enrich", defaultPhase = LifecyclePhase.GENERATE_RESOURCES, threadSafe = true)
+@Mojo(name = "catalog-enrich", defaultPhase = LifecyclePhase.GENERATE_RESOURCES, threadSafe = true)
 public class EnrichKameletsMojo extends AbstractMojo {
 
     /**