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

oscerd pushed a commit to branch ci-fix/floci-migration-and-aws-sink-tests
in repository https://gitbox.apache.org/repos/asf/camel-kamelets.git

commit 6067e3d12222ea59584d66277d7ae6fbe446b531
Author: Andrea Cosentino <[email protected]>
AuthorDate: Thu Jul 9 12:23:15 2026 +0200

    chore: Migrate AWS tests from LocalStack to Floci and add sink tests
    
    LocalStack's community edition was sunset in March 2026, now requiring
    auth tokens. This migrates all AWS integration tests to use Floci, the
    MIT-licensed drop-in replacement, via Citrus's native floci support in
    citrus-testcontainers.
    
    Also migrates all Pipe-format integration definitions to Camel route
    YAML format (issue #2873) and adds new Citrus integration tests for
    aws-s3-sink, aws-sqs-sink, and aws-sns-sink kamelets.
    
    Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
---
 .../camel-kamelets-itest/src/test/java/AwsIT.java  |  5 ++
 .../test/resources/aws/ddb/amazonDDBClient.groovy  |  8 +-
 .../test/resources/aws/ddb/application.properties  |  8 +-
 ...ws-ddb-sink-delete-item.citrus.it.yaml.disabled |  8 +-
 .../aws-ddb-sink-put-item.citrus.it.yaml.disabled  |  8 +-
 .../aws-ddb-sink-route.yaml}                       | 46 ++++++-----
 ...ws-ddb-sink-update-item.citrus.it.yaml.disabled |  8 +-
 .../aws-ddb-source-route.yaml}                     | 40 ++++------
 .../aws/ddb/aws-ddb-source.citrus.it.yaml.disabled | 10 +--
 .../aws/eventbridge/application.properties         |  8 +-
 .../aws/eventbridge/aws-eventbridge-sink-pipe.yaml | 51 ------------
 .../aws-eventbridge-sink-route.yaml}               | 56 ++++++-------
 .../aws-eventbridge-sink.citrus.it.yaml            | 12 +--
 .../aws-sqs-event-listener-route.yaml}             | 39 ++++-----
 .../aws/eventbridge/setupEventBridge.groovy        | 12 +--
 .../aws/kinesis/amazonKinesisClient.groovy         |  8 +-
 .../resources/aws/kinesis/application.properties   |  8 +-
 .../aws/kinesis/aws-kinesis-sink-pipe.yaml         | 56 -------------
 ...ource-pipe.yaml => aws-kinesis-sink-route.yaml} | 46 ++++++-----
 .../aws/kinesis/aws-kinesis-sink.citrus.it.yaml    |  8 +-
 .../aws-kinesis-source-route.yaml}                 | 40 ++++------
 .../aws/kinesis/aws-kinesis-source.citrus.it.yaml  | 10 +--
 .../src/test/resources/aws/s3/README.md            |  6 +-
 .../test/resources/aws/s3/amazonS3Client.groovy    |  8 +-
 .../test/resources/aws/s3/application.properties   |  8 +-
 .../aws-s3-sink-route.citrus.it.yaml}              | 62 +++++++--------
 ...aws-s3-uri-pipe.yaml => aws-s3-sink-route.yaml} | 45 +++++------
 .../aws-s3-source-route.yaml}                      | 40 ++++------
 .../aws/s3/aws-s3-source-to-http-route.yaml        | 54 +++++++++++++
 .../resources/aws/s3/aws-s3-to-http.citrus.it.yaml | 10 +--
 .../src/test/resources/aws/s3/aws-s3-to-http.yaml  | 79 -------------------
 .../resources/aws/s3/aws-s3-to-knative-broker.yaml |  8 +-
 .../aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml  | 14 ++--
 .../aws/s3/aws-s3-uri-pipe.citrus.it.yaml          | 18 ++---
 .../{amazonS3Client.groovy => getS3Object.groovy}  | 17 ++--
 .../aws/sns/aws-sns-sink-route.citrus.it.yaml      | 92 ++++++++++++++++++++++
 .../aws-sns-sink-route.yaml}                       | 43 +++++-----
 .../aws-sqs-sns-event-listener.yaml}               | 36 +++------
 .../test/resources/aws/sns/setupSnsToSqs.groovy    | 53 +++++++++++++
 .../src/test/resources/aws/sqs/README.md           |  6 +-
 .../test/resources/aws/sqs/amazonSQSClient.groovy  |  8 +-
 ...-pipe.yaml => aws-sqs-sink-event-listener.yaml} | 36 +++------
 ...s.it.yaml => aws-sqs-sink-route.citrus.it.yaml} | 58 +++++++++-----
 ...s-sqs-uri-pipe.yaml => aws-sqs-sink-route.yaml} | 43 +++++-----
 ...sqs-uri-pipe.yaml => aws-sqs-source-route.yaml} | 39 ++++-----
 .../sqs/aws-sqs-to-log-uri-based.citrus.it.yaml    | 14 ++--
 .../aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml        | 18 ++---
 47 files changed, 626 insertions(+), 684 deletions(-)

diff --git a/tests/camel-kamelets-itest/src/test/java/AwsIT.java 
b/tests/camel-kamelets-itest/src/test/java/AwsIT.java
index ee67f5826..b1a364815 100644
--- a/tests/camel-kamelets-itest/src/test/java/AwsIT.java
+++ b/tests/camel-kamelets-itest/src/test/java/AwsIT.java
@@ -84,4 +84,9 @@ public class AwsIT {
         return 
CitrusTestFactorySupport.factory(TestLoader.YAML).packageScan("aws.eventbridge");
     }
 
+    @CitrusTestFactory
+    public Stream<DynamicTest> awsSns() {
+        return 
CitrusTestFactorySupport.factory(TestLoader.YAML).packageScan("aws.sns");
+    }
+
 }
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/amazonDDBClient.groovy 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/amazonDDBClient.groovy
index 35b0e9015..f7c74dc54 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/amazonDDBClient.groovy
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/amazonDDBClient.groovy
@@ -29,13 +29,13 @@ import 
software.amazon.awssdk.services.dynamodb.model.StreamViewType
 
 DynamoDbClient amazonDDBClient = DynamoDbClient
         .builder()
-        
.endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}'))
+        
.endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}'))
         .credentialsProvider(StaticCredentialsProvider.create(
                 AwsBasicCredentials.create(
-                        '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}',
-                        '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}')
+                        '${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}',
+                        '${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}')
         ))
-        .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}'))
+        .region(Region.of('${CITRUS_TESTCONTAINERS_FLOCI_REGION}'))
         .build()
 
 amazonDDBClient.createTable(b -> {
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/application.properties 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/application.properties
index b226e109c..856d4a655 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/application.properties
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/application.properties
@@ -17,8 +17,8 @@
 
 aws.ddb.tableName=${aws.ddb.tableName}
 
-aws.ddb.uriEndpointOverride=${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}
-aws.ddb.secretKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}
-aws.ddb.accessKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}
-aws.ddb.region=${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}
+aws.ddb.uriEndpointOverride=${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}
+aws.ddb.secretKey=${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}
+aws.ddb.accessKey=${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}
+aws.ddb.region=${CITRUS_TESTCONTAINERS_FLOCI_REGION}
 aws.ddb.overrideEndpoint=true
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml.disabled
 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml.disabled
index 5d8e87d5c..9ab17edff 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml.disabled
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml.disabled
@@ -26,15 +26,15 @@ variables:
   - name: "timer.source.period"
     value: "10000"
 actions:
-  # Create LocalStack infrastructure
+  # Create Floci infrastructure
   - testcontainers:
       start:
-        localstack:
+        floci:
           services:
             - "DYNAMODB"
   - waitFor:
       http:
-        url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
 
   # Create AWS-DDB client
   - groovy:
@@ -86,7 +86,7 @@ actions:
       jbang:
         run:
           integration:
-            file: "aws/ddb/aws-ddb-sink-pipe.yaml"
+            file: "aws/ddb/aws-ddb-sink-route.yaml"
             systemProperties:
               properties:
                 - name: "timer.source.period"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml.disabled
 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml.disabled
index 93146ea4d..97f0bcbd9 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml.disabled
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml.disabled
@@ -26,15 +26,15 @@ variables:
   - name: "timer.source.period"
     value: "10000"
 actions:
-  # Create LocalStack infrastructure
+  # Create Floci infrastructure
   - testcontainers:
       start:
-        localstack:
+        floci:
           services:
             - "DYNAMODB"
   - waitFor:
       http:
-        url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
 
   # Create AWS-DDB client
   - groovy:
@@ -73,7 +73,7 @@ actions:
       jbang:
         run:
           integration:
-            file: "aws/ddb/aws-ddb-sink-pipe.yaml"
+            file: "aws/ddb/aws-ddb-sink-route.yaml"
             systemProperties:
               properties:
                 - name: "timer.source.period"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-pipe.yaml
 b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-route.yaml
similarity index 57%
rename from 
tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-pipe.yaml
rename to 
tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-route.yaml
index 6e4fe1695..a1dbca82f 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-pipe.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-route.yaml
@@ -15,27 +15,25 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-sqs-event-listener-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-sqs-source
-    properties:
-      queueNameOrArn: "{{aws.sqs.queueName}}"
-      uriEndpointOverride: "{{aws.eventbridge.uriEndpointOverride}}"
-      overrideEndpoint: "{{aws.eventbridge.overrideEndpoint}}"
-      accessKey: "{{aws.eventbridge.accessKey}}"
-      secretKey: "{{aws.eventbridge.secretKey}}"
-      region: "{{aws.eventbridge.region}}"
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: log-sink
-    properties:
-      showHeaders: true
+- route:
+    from:
+      uri: "timer:tick"
+      parameters:
+        period: "{{timer.source.period}}"
+        repeatCount: 1
+      steps:
+      - setBody:
+          constant: "{{aws.ddb.json.data}}"
+      - log:
+          message: "${body}"
+          showHeaders: true
+      - to:
+          uri: "kamelet:aws-ddb-sink"
+          parameters:
+            table: "{{aws.ddb.tableName}}"
+            operation: "{{aws.ddb.operation}}"
+            overrideEndpoint: "{{aws.ddb.overrideEndpoint}}"
+            uriEndpointOverride: "{{aws.ddb.uriEndpointOverride}}"
+            accessKey: "{{aws.ddb.accessKey}}"
+            secretKey: "{{aws.ddb.secretKey}}"
+            region: "{{aws.ddb.region}}"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-update-item.citrus.it.yaml.disabled
 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-update-item.citrus.it.yaml.disabled
index 0765021e8..5d1e2d3f3 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-update-item.citrus.it.yaml.disabled
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-update-item.citrus.it.yaml.disabled
@@ -26,15 +26,15 @@ variables:
   - name: "timer.source.period"
     value: "10000"
 actions:
-  # Create LocalStack infrastructure
+  # Create Floci infrastructure
   - testcontainers:
       start:
-        localstack:
+        floci:
           services:
             - "DYNAMODB"
   - waitFor:
       http:
-        url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
 
   # Create AWS-DDB client
   - groovy:
@@ -91,7 +91,7 @@ actions:
       jbang:
         run:
           integration:
-            file: "aws/ddb/aws-ddb-sink-pipe.yaml"
+            file: "aws/ddb/aws-ddb-sink-route.yaml"
             systemProperties:
               properties:
                 - name: "timer.source.period"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-route.yaml
similarity index 60%
copy from 
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
copy to 
tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-route.yaml
index 7155c8c50..d02c29974 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-route.yaml
@@ -15,27 +15,19 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-sqs-uri-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-sqs-source
-    properties:
-      queueNameOrArn: "{{aws.sqs.queueName}}"
-      uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
-      overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
-      accessKey: "{{aws.sqs.accessKey}}"
-      secretKey: "{{aws.sqs.secretKey}}"
-      region: "{{aws.sqs.region}}"
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: log-sink
-    properties:
-      showHeaders: true
+- route:
+    from:
+      uri: "kamelet:aws-ddb-streams-source"
+      parameters:
+        streamIteratorType: "FROM_START"
+        table: "{{aws.ddb.tableName}}"
+        overrideEndpoint: "{{aws.ddb.overrideEndpoint}}"
+        uriEndpointOverride: "{{aws.ddb.uriEndpointOverride}}"
+        accessKey: "{{aws.ddb.accessKey}}"
+        secretKey: "{{aws.ddb.secretKey}}"
+        region: "{{aws.ddb.region}}"
+      steps:
+      - to:
+          uri: "kamelet:log-sink"
+          parameters:
+            showHeaders: true
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled
 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled
index a133e36b6..f20cc5890 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled
@@ -30,15 +30,15 @@ variables:
   - name: "aws.ddb.item.title"
     value: "Star Wars IV"
 actions:
-  # Create LocalStack infrastructure
+  # Create Floci infrastructure
   - testcontainers:
       start:
-        localstack:
+        floci:
           services:
             - "DYNAMODB"
   - waitFor:
       http:
-        url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
 
   # Create AWS-DDB client
   - groovy:
@@ -50,7 +50,7 @@ actions:
       jbang:
         run:
           integration:
-            file: "aws/ddb/aws-ddb-source-pipe.yaml"
+            file: "aws/ddb/aws-ddb-source-route.yaml"
             systemProperties:
               file: "aws/ddb/application.properties"
 
@@ -62,6 +62,6 @@ actions:
   - camel:
       jbang:
         verify:
-          integration: "aws-ddb-source-pipe"
+          integration: "aws-ddb-source-route"
           logMessage: |
             "Star Wars IV"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/application.properties
 
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/application.properties
index 40975ecac..a06f98e93 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/application.properties
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/application.properties
@@ -21,8 +21,8 @@ aws.eventbridge.eventSource=${aws.eventbridge.eventSource}
 aws.eventbridge.eventSourcePrefix=${aws.eventbridge.eventSourcePrefix}
 aws.eventbridge.detailType=${aws.eventbridge.detailType}
 
-aws.eventbridge.uriEndpointOverride=${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}
-aws.eventbridge.secretKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}
-aws.eventbridge.accessKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}
-aws.eventbridge.region=${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}
+aws.eventbridge.uriEndpointOverride=${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}
+aws.eventbridge.secretKey=${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}
+aws.eventbridge.accessKey=${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}
+aws.eventbridge.region=${CITRUS_TESTCONTAINERS_FLOCI_REGION}
 aws.eventbridge.overrideEndpoint=true
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-pipe.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-pipe.yaml
deleted file mode 100644
index d73252705..000000000
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-pipe.yaml
+++ /dev/null
@@ -1,51 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-eventbridge-sink-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: timer-source
-    properties:
-      period: '{{timer.source.period}}'
-      message: '{{aws.eventbridge.json.data}}'
-  steps:
-    - ref:
-        kind: Kamelet
-        apiVersion: camel.apache.org/v1
-        name: log-action
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-eventbridge-sink
-    properties:
-      eventbusNameOrArn: '{{aws.eventbridge.eventbusName}}'
-      overrideEndpoint: '{{aws.eventbridge.overrideEndpoint}}'
-      uriEndpointOverride: '{{aws.eventbridge.uriEndpointOverride}}'
-      accessKey: '{{aws.eventbridge.accessKey}}'
-      secretKey: '{{aws.eventbridge.secretKey}}'
-      region: '{{aws.eventbridge.region}}'
-      resourcesArn: '{{aws.eventbridge.resourcesArn}}'
-      eventSource: '{{aws.eventbridge.eventSource}}'
-      eventSourcePrefix: '{{aws.eventbridge.eventSourcePrefix}}'
-      detailType: '{{aws.eventbridge.detailType}}'
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-pipe.yaml 
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-route.yaml
similarity index 50%
rename from 
tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-pipe.yaml
rename to 
tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-route.yaml
index e473e75a3..76642738c 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-pipe.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-route.yaml
@@ -15,36 +15,26 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-ddb-sink-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: timer-source
-    properties:
-      period: "{{timer.source.period}}"
-      message: "{{aws.ddb.json.data}}"
-  steps:
-    - ref:
-        kind: Kamelet
-        apiVersion: camel.apache.org/v1
-        name: log-action
-      properties:
-        showHeaders: true
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-ddb-sink
-    properties:
-      table: "{{aws.ddb.tableName}}"
-      operation: "{{aws.ddb.operation}}"
-      overrideEndpoint: "{{aws.ddb.overrideEndpoint}}"
-      uriEndpointOverride: "{{aws.ddb.uriEndpointOverride}}"
-      accessKey: "{{aws.ddb.accessKey}}"
-      secretKey: "{{aws.ddb.secretKey}}"
-      region: "{{aws.ddb.region}}"
+- route:
+    from:
+      uri: "timer:tick"
+      parameters:
+        period: "{{timer.source.period}}"
+        repeatCount: 1
+      steps:
+      - setBody:
+          constant: "{{aws.eventbridge.json.data}}"
+      - log: "${body}"
+      - to:
+          uri: "kamelet:aws-eventbridge-sink"
+          parameters:
+            eventbusNameOrArn: "{{aws.eventbridge.eventbusName}}"
+            overrideEndpoint: "{{aws.eventbridge.overrideEndpoint}}"
+            uriEndpointOverride: "{{aws.eventbridge.uriEndpointOverride}}"
+            accessKey: "{{aws.eventbridge.accessKey}}"
+            secretKey: "{{aws.eventbridge.secretKey}}"
+            region: "{{aws.eventbridge.region}}"
+            resourcesArn: "{{aws.eventbridge.resourcesArn}}"
+            eventSource: "{{aws.eventbridge.eventSource}}"
+            eventSourcePrefix: "{{aws.eventbridge.eventSourcePrefix}}"
+            detailType: "{{aws.eventbridge.detailType}}"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink.citrus.it.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink.citrus.it.yaml
index ae5c09944..48600cc95 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink.citrus.it.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink.citrus.it.yaml
@@ -37,17 +37,17 @@ variables:
   - name: "timer.source.period"
     value: "10000"
 actions:
-  # Create LocalStack infrastructure
+  # Create Floci infrastructure
   - testcontainers:
       start:
-        localstack:
+        floci:
           services:
             - "SQS"
             - "EVENT_BRIDGE"
 
   - waitFor:
       http:
-        url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
 
   # Create AWS EventBridge and SQS queue
   - groovy:
@@ -59,7 +59,7 @@ actions:
       jbang:
         run:
           integration:
-            file: "aws/eventbridge/aws-eventbridge-sink-pipe.yaml"
+            file: "aws/eventbridge/aws-eventbridge-sink-route.yaml"
             systemProperties:
               properties:
                 - name: "timer.source.period"
@@ -73,7 +73,7 @@ actions:
       jbang:
         run:
           integration:
-            file: "aws/eventbridge/aws-sqs-event-listener-pipe.yaml"
+            file: "aws/eventbridge/aws-sqs-event-listener-route.yaml"
             systemProperties:
               properties:
                 - name: "aws.sqs.queueName"
@@ -84,6 +84,6 @@ actions:
   - camel:
       jbang:
         verify:
-          integration: "aws-sqs-event-listener-pipe"
+          integration: "aws-sqs-event-listener-route"
           logMessage: |
             "detail":{"message":"Hello AWS EventBridge!"}
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-route.yaml
similarity index 59%
copy from 
tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml
copy to 
tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-route.yaml
index f85692cc6..8809635e8 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-route.yaml
@@ -15,27 +15,18 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-kinesis-source-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-kinesis-source
-    properties:
-      stream: '{{aws.kinesis.streamName}}'
-      overrideEndpoint: '{{aws.kinesis.overrideEndpoint}}'
-      uriEndpointOverride: '{{aws.kinesis.uriEndpointOverride}}'
-      accessKey: '{{aws.kinesis.accessKey}}'
-      secretKey: '{{aws.kinesis.secretKey}}'
-      region: '{{aws.kinesis.region}}'
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: log-sink
-      properties:
-        showHeaders: true
+- route:
+    from:
+      uri: "kamelet:aws-sqs-source"
+      parameters:
+        queueNameOrArn: "{{aws.sqs.queueName}}"
+        uriEndpointOverride: "{{aws.eventbridge.uriEndpointOverride}}"
+        overrideEndpoint: "{{aws.eventbridge.overrideEndpoint}}"
+        accessKey: "{{aws.eventbridge.accessKey}}"
+        secretKey: "{{aws.eventbridge.secretKey}}"
+        region: "{{aws.eventbridge.region}}"
+      steps:
+      - to:
+          uri: "kamelet:log-sink"
+          parameters:
+            showHeaders: true
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/setupEventBridge.groovy
 
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/setupEventBridge.groovy
index 95d667361..4dc58bb4d 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/setupEventBridge.groovy
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/setupEventBridge.groovy
@@ -32,7 +32,7 @@
  */
 
 import org.citrusframework.actions.testcontainers.aws2.AwsService
-import org.citrusframework.testcontainers.aws2.LocalStackContainer
+import org.citrusframework.testcontainers.aws2.FlociContainer
 import software.amazon.awssdk.auth.credentials.AwsBasicCredentials
 import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
 import software.amazon.awssdk.regions.Region
@@ -43,7 +43,7 @@ import software.amazon.awssdk.services.sqs.SqsClient
 import software.amazon.awssdk.services.sqs.model.CreateQueueResponse
 import software.amazon.awssdk.services.sqs.model.QueueAttributeName
 
-LocalStackContainer container = 
context.getReferenceResolver().resolve(LocalStackContainer.class)
+FlociContainer container = 
context.getReferenceResolver().resolve(FlociContainer.class)
 container.withServices(AwsService.EVENT_BRIDGE, AwsService.S3, AwsService.SQS)
 
 EventBridgeClient eventBridgeClient = 
container.getClient(AwsService.EVENT_BRIDGE)
@@ -60,13 +60,13 @@ PutRuleResponse putRuleResponse = 
eventBridgeClient.putRule(b -> b.name("events-
 
 SqsClient sqsClient = SqsClient
         .builder()
-        
.endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}'))
+        
.endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}'))
         .credentialsProvider(StaticCredentialsProvider.create(
                 AwsBasicCredentials.create(
-                        '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}',
-                        '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}')
+                        '${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}',
+                        '${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}')
         ))
-        .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}'))
+        .region(Region.of('${CITRUS_TESTCONTAINERS_FLOCI_REGION}'))
         .build()
 
 // Create SQS queue acting as an EventBridge notification endpoint
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/amazonKinesisClient.groovy
 
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/amazonKinesisClient.groovy
index bc1090200..9d8aae8b6 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/amazonKinesisClient.groovy
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/amazonKinesisClient.groovy
@@ -22,13 +22,13 @@ import software.amazon.awssdk.services.kinesis.KinesisClient
 
 KinesisClient kinesisClient = KinesisClient
         .builder()
-        
.endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}'))
+        
.endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}'))
         .credentialsProvider(StaticCredentialsProvider.create(
                 AwsBasicCredentials.create(
-                        '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}',
-                        '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}')
+                        '${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}',
+                        '${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}')
         ))
-        .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}'))
+        .region(Region.of('${CITRUS_TESTCONTAINERS_FLOCI_REGION}'))
         .build()
 
 kinesisClient.createStream(s -> 
s.streamName('${aws.kinesis.streamName}').shardCount(1))
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/application.properties
 
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/application.properties
index b002548b8..e9fe526da 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/application.properties
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/application.properties
@@ -18,8 +18,8 @@
 aws.kinesis.streamName=${aws.kinesis.streamName}
 aws.kinesis.partitionKey=${aws.kinesis.partitionKey}
 
-aws.kinesis.uriEndpointOverride=${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}
-aws.kinesis.secretKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}
-aws.kinesis.accessKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}
-aws.kinesis.region=${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}
+aws.kinesis.uriEndpointOverride=${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}
+aws.kinesis.secretKey=${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}
+aws.kinesis.accessKey=${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}
+aws.kinesis.region=${CITRUS_TESTCONTAINERS_FLOCI_REGION}
 aws.kinesis.overrideEndpoint=true
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-pipe.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-pipe.yaml
deleted file mode 100644
index 8de1b46cf..000000000
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-pipe.yaml
+++ /dev/null
@@ -1,56 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-kinesis-sink-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: timer-source
-    properties:
-      period: '{{timer.source.period}}'
-      message: '{{aws.kinesis.json.data}}'
-  steps:
-    - ref:
-        kind: Kamelet
-        apiVersion: camel.apache.org/v1
-        name: insert-header-action
-      properties:
-        name: "partition"
-        value: '{{aws.kinesis.partitionKey}}'
-    - ref:
-        kind: Kamelet
-        apiVersion: camel.apache.org/v1
-        name: log-action
-      properties:
-        showHeaders: true
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-kinesis-sink
-    properties:
-      stream: '{{aws.kinesis.streamName}}'
-      overrideEndpoint: '{{aws.kinesis.overrideEndpoint}}'
-      uriEndpointOverride: '{{aws.kinesis.uriEndpointOverride}}'
-      accessKey: '{{aws.kinesis.accessKey}}'
-      secretKey: '{{aws.kinesis.secretKey}}'
-      region: '{{aws.kinesis.region}}'
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-route.yaml
similarity index 56%
rename from 
tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml
rename to 
tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-route.yaml
index f85692cc6..81a257282 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-route.yaml
@@ -15,27 +15,25 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-kinesis-source-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-kinesis-source
-    properties:
-      stream: '{{aws.kinesis.streamName}}'
-      overrideEndpoint: '{{aws.kinesis.overrideEndpoint}}'
-      uriEndpointOverride: '{{aws.kinesis.uriEndpointOverride}}'
-      accessKey: '{{aws.kinesis.accessKey}}'
-      secretKey: '{{aws.kinesis.secretKey}}'
-      region: '{{aws.kinesis.region}}'
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: log-sink
-      properties:
-        showHeaders: true
+- route:
+    from:
+      uri: "timer:tick"
+      parameters:
+        period: "{{timer.source.period}}"
+        repeatCount: 1
+      steps:
+      - setBody:
+          constant: "{{aws.kinesis.json.data}}"
+      - setHeader:
+          name: "partition"
+          constant: "{{aws.kinesis.partitionKey}}"
+      - log: "${body}"
+      - to:
+          uri: "kamelet:aws-kinesis-sink"
+          parameters:
+            stream: "{{aws.kinesis.streamName}}"
+            overrideEndpoint: "{{aws.kinesis.overrideEndpoint}}"
+            uriEndpointOverride: "{{aws.kinesis.uriEndpointOverride}}"
+            accessKey: "{{aws.kinesis.accessKey}}"
+            secretKey: "{{aws.kinesis.secretKey}}"
+            region: "{{aws.kinesis.region}}"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink.citrus.it.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink.citrus.it.yaml
index 57ab64e0f..311643ad8 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink.citrus.it.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink.citrus.it.yaml
@@ -31,15 +31,15 @@ variables:
   - name: "timer.source.period"
     value: "10000"
 actions:
-  # Create LocalStack infrastructure
+  # Create Floci infrastructure
   - testcontainers:
       start:
-        localstack:
+        floci:
           services:
             - "KINESIS"
   - waitFor:
       http:
-        url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
 
   # Create AWS-KINESIS client
   - camel:
@@ -52,7 +52,7 @@ actions:
       jbang:
         run:
           integration:
-            file: "aws/kinesis/aws-kinesis-sink-pipe.yaml"
+            file: "aws/kinesis/aws-kinesis-sink-route.yaml"
             systemProperties:
               properties:
                 - name: "timer.source.period"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-pipe.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-route.yaml
similarity index 58%
rename from 
tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-pipe.yaml
rename to 
tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-route.yaml
index 3d25229c4..951b20efd 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-pipe.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-route.yaml
@@ -15,28 +15,18 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-ddb-source-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-ddb-streams-source
-    properties:
-      streamIteratorType: FROM_START
-      table: "{{aws.ddb.tableName}}"
-      overrideEndpoint: "{{aws.ddb.overrideEndpoint}}"
-      uriEndpointOverride: "{{aws.ddb.uriEndpointOverride}}"
-      accessKey: "{{aws.ddb.accessKey}}"
-      secretKey: "{{aws.ddb.secretKey}}"
-      region: "{{aws.ddb.region}}"
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: log-sink
-    properties:
-      showHeaders: true
+- route:
+    from:
+      uri: "kamelet:aws-kinesis-source"
+      parameters:
+        stream: "{{aws.kinesis.streamName}}"
+        overrideEndpoint: "{{aws.kinesis.overrideEndpoint}}"
+        uriEndpointOverride: "{{aws.kinesis.uriEndpointOverride}}"
+        accessKey: "{{aws.kinesis.accessKey}}"
+        secretKey: "{{aws.kinesis.secretKey}}"
+        region: "{{aws.kinesis.region}}"
+      steps:
+      - to:
+          uri: "kamelet:log-sink"
+          parameters:
+            showHeaders: true
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source.citrus.it.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source.citrus.it.yaml
index 457ab1794..1c70b6e6d 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source.citrus.it.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source.citrus.it.yaml
@@ -24,15 +24,15 @@ variables:
   - name: "aws.kinesis.streamData"
     value: "Camel rocks!"
 actions:
-  # Create LocalStack infrastructure
+  # Create Floci infrastructure
   - testcontainers:
       start:
-        localstack:
+        floci:
           services:
             - "KINESIS"
   - waitFor:
       http:
-        url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
 
   # Create AWS-KINESIS client
   - camel:
@@ -45,7 +45,7 @@ actions:
       jbang:
         run:
           integration:
-            file: "aws/kinesis/aws-kinesis-source-pipe.yaml"
+            file: "aws/kinesis/aws-kinesis-source-route.yaml"
             systemProperties:
               file: "aws/kinesis/application.properties"
 
@@ -63,5 +63,5 @@ actions:
   - camel:
       jbang:
         verify:
-          integration: "aws-kinesis-source-pipe"
+          integration: "aws-kinesis-source-route"
           logMessage: "${aws.kinesis.streamData}"
diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/README.md 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/README.md
index b5e8f53f0..c68fbd727 100644
--- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/README.md
+++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/README.md
@@ -7,7 +7,7 @@ This test verifies the AWS S3 Kamelet source defined in 
[aws-s3-source.kamelet.y
 The test verifies the AWS S3 Kamelet source by creating a Camel K integration 
that uses the Kamelet and listens for messages on the
 AWS S3 bucket.
 
-The test uses a [LocalStack 
Testcontainers](https://www.testcontainers.org/modules/localstack/) instance to 
start a local AWS S3 service for mocking reasons.
+The test uses a [Floci 
Testcontainers](https://github.com/floci-io/testcontainers-floci) instance to 
start a local AWS S3 service for emulation reasons.
 The Kamelet and the test interact with the local AWS S3 service for validation 
of functionality.
 
 ### Test Kamelet source
@@ -15,7 +15,7 @@ The Kamelet and the test interact with the local AWS S3 
service for validation o
 The test performs the following high level steps for configs - URI, secret and 
property based:
 
 *Preparation*
-- Start the AWS S3 service as LocalStack container
+- Start the AWS S3 service as Floci container
 - Overwrite the Kamelet with the latest source
 - Prepare the Camel AWS S3 client
 
@@ -27,7 +27,7 @@ The test performs the following high level steps for configs 
- URI, secret and p
 - Verify that the integration has received the message event
 
 *Cleanup*
-- Stop the LocalStack container
+- Stop the Floci container
 - Delete the Camel K integration
 - Delete the secret from the current namespacce
 
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/amazonS3Client.groovy 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/amazonS3Client.groovy
index 4c6470e9c..21ac44c02 100644
--- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/amazonS3Client.groovy
+++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/amazonS3Client.groovy
@@ -22,14 +22,14 @@ import software.amazon.awssdk.services.s3.S3Client
 
 S3Client s3 = S3Client
         .builder()
-        
.endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}'))
+        
.endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}'))
         .credentialsProvider(StaticCredentialsProvider.create(
                 AwsBasicCredentials.create(
-                        '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}',
-                        '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}')
+                        '${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}',
+                        '${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}')
         ))
         .forcePathStyle(true)
-        .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}'))
+        .region(Region.of('${CITRUS_TESTCONTAINERS_FLOCI_REGION}'))
         .build()
 
 s3.createBucket(b -> b.bucket('${aws.s3.bucketNameOrArn}'))
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/application.properties 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/application.properties
index 83b194f7b..a265e8b46 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/application.properties
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/application.properties
@@ -19,7 +19,7 @@
 aws.s3.bucketNameOrArn=${aws.s3.bucketNameOrArn}
 aws.s3.overrideEndpoint=true
 aws.s3.forcePathStyle=true
-aws.s3.uriEndpointOverride=${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}
-aws.s3.secretKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}
-aws.s3.accessKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}
-aws.s3.region=${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}
+aws.s3.uriEndpointOverride=${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}
+aws.s3.secretKey=${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}
+aws.s3.accessKey=${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}
+aws.s3.region=${CITRUS_TESTCONTAINERS_FLOCI_REGION}
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled
 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.citrus.it.yaml
similarity index 56%
copy from 
tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled
copy to 
tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.citrus.it.yaml
index a133e36b6..85f874fd5 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.citrus.it.yaml
@@ -15,53 +15,53 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-name: aws-ddb-source-test
+name: aws-s3-sink-route-test
 variables:
-  - name: "maxRetryAttempts"
-    value: "20"
-  - name: "aws.ddb.streams"
-    value: "true"
-  - name: "aws.ddb.tableName"
-    value: "movies"
-  - name: "aws.ddb.item.id"
-    value: "1"
-  - name: "aws.ddb.item.year"
-    value: "1977"
-  - name: "aws.ddb.item.title"
-    value: "Star Wars IV"
+  - name: "aws.s3.bucketNameOrArn"
+    value: "sink-bucket"
+  - name: "aws.s3.key"
+    value: "test-sink.txt"
+  - name: "test.message"
+    value: "Hello from S3 sink test"
 actions:
-  # Create LocalStack infrastructure
+  # Create Floci infrastructure
   - testcontainers:
       start:
-        localstack:
+        floci:
           services:
-            - "DYNAMODB"
+            - "S3"
   - waitFor:
       http:
-        url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
 
-  # Create AWS-DDB client
-  - groovy:
-      script:
-        file: "aws/ddb/amazonDDBClient.groovy"
+  # Create AWS-S3 client
+  - camel:
+      createComponent:
+        name: amazonS3Client
+        file: "aws/s3/amazonS3Client.groovy"
 
   # Create Camel JBang integration
   - camel:
       jbang:
         run:
           integration:
-            file: "aws/ddb/aws-ddb-source-pipe.yaml"
+            file: "aws/s3/aws-s3-sink-route.yaml"
             systemProperties:
-              file: "aws/ddb/application.properties"
+              file: "aws/s3/application.properties"
+              properties:
+                - name: "test.message"
+                  value: "${test.message}"
+                - name: "aws.s3.key"
+                  value: "${aws.s3.key}"
 
-  - groovy:
-      script:
-        file: "aws/ddb/putItem.groovy"
-
-  # Verify AWS-DDB source
+  # Verify S3 sink wrote the object
   - camel:
       jbang:
         verify:
-          integration: "aws-ddb-source-pipe"
-          logMessage: |
-            "Star Wars IV"
+          integration: "aws-s3-sink-route"
+          logMessage: "${test.message}"
+
+  # Verify object exists in S3 by reading it back
+  - groovy:
+      script:
+        file: "aws/s3/getS3Object.groovy"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.yaml 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.yaml
similarity index 58%
rename from 
tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.yaml
rename to 
tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.yaml
index 70a998636..67b08ab95 100644
--- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.yaml
@@ -15,28 +15,23 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-s3-uri-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-s3-source
-    properties:
-      bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}"
-      uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}"
-      overrideEndpoint: "{{aws.s3.overrideEndpoint}}"
-      forcePathStyle: "{{aws.s3.forcePathStyle}}"
-      accessKey: "{{aws.s3.accessKey}}"
-      secretKey: "{{aws.s3.secretKey}}"
-      region: "{{aws.s3.region}}"
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: log-sink
-    properties:
-      showHeaders: true
+- route:
+    from:
+      uri: "timer:tick"
+      parameters:
+        period: "10000"
+        repeatCount: 1
+      steps:
+      - setBody:
+          constant: "{{test.message}}"
+      - to:
+          uri: "kamelet:aws-s3-sink"
+          parameters:
+            bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}"
+            accessKey: "{{aws.s3.accessKey}}"
+            secretKey: "{{aws.s3.secretKey}}"
+            region: "{{aws.s3.region}}"
+            overrideEndpoint: "{{aws.s3.overrideEndpoint}}"
+            uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}"
+            forcePathStyle: "{{aws.s3.forcePathStyle}}"
+            keyName: "{{aws.s3.key}}"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-route.yaml
similarity index 60%
copy from 
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
copy to 
tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-route.yaml
index 7155c8c50..5ffc1f0ea 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-route.yaml
@@ -15,27 +15,19 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-sqs-uri-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-sqs-source
-    properties:
-      queueNameOrArn: "{{aws.sqs.queueName}}"
-      uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
-      overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
-      accessKey: "{{aws.sqs.accessKey}}"
-      secretKey: "{{aws.sqs.secretKey}}"
-      region: "{{aws.sqs.region}}"
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: log-sink
-    properties:
-      showHeaders: true
+- route:
+    from:
+      uri: "kamelet:aws-s3-source"
+      parameters:
+        bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}"
+        uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}"
+        overrideEndpoint: "{{aws.s3.overrideEndpoint}}"
+        forcePathStyle: "{{aws.s3.forcePathStyle}}"
+        accessKey: "{{aws.s3.accessKey}}"
+        secretKey: "{{aws.s3.secretKey}}"
+        region: "{{aws.s3.region}}"
+      steps:
+      - to:
+          uri: "kamelet:log-sink"
+          parameters:
+            showHeaders: true
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-to-http-route.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-to-http-route.yaml
new file mode 100644
index 000000000..39e60ad9a
--- /dev/null
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-to-http-route.yaml
@@ -0,0 +1,54 @@
+# ---------------------------------------------------------------------------
+# 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.
+# ---------------------------------------------------------------------------
+
+- route:
+    from:
+      uri: "kamelet:aws-s3-source"
+      parameters:
+        bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}"
+        uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}"
+        overrideEndpoint: "{{aws.s3.overrideEndpoint}}"
+        forcePathStyle: "{{aws.s3.forcePathStyle}}"
+        accessKey: "{{aws.s3.accessKey}}"
+        secretKey: "{{aws.s3.secretKey}}"
+        region: "{{aws.s3.region}}"
+      steps:
+      - to:
+          uri: "kamelet:data-type-action"
+          parameters:
+            scheme: "aws2-s3"
+            format: "application-cloudevents"
+      - to:
+          uri: "kamelet:data-type-action"
+          parameters:
+            scheme: "http"
+            format: "application-cloudevents"
+      - to:
+          uri: "kamelet:data-type-action"
+          parameters:
+            scheme: "text"
+            format: "plain"
+      - removeHeaders:
+          pattern: "Camel*"
+      - to:
+          uri: "kamelet:log-sink"
+          parameters:
+            showHeaders: true
+      - to:
+          uri: "kamelet:http-sink"
+          parameters:
+            url: "{{http.sink.url}}"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.citrus.it.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.citrus.it.yaml
index 13f815e8e..2d241d335 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.citrus.it.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.citrus.it.yaml
@@ -24,15 +24,15 @@ variables:
   - name: "aws.s3.key"
     value: "hello.txt"
 actions:
-  # Create LocalStack infrastructure
+  # Create Floci infrastructure
   - testcontainers:
       start:
-        localstack:
+        floci:
           services:
             - "S3"
   - waitFor:
       http:
-        url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
 
   # Create AWS-S3 client
   - camel:
@@ -45,7 +45,7 @@ actions:
       jbang:
         run:
           integration:
-            file: "aws/s3/aws-s3-to-http.yaml"
+            file: "aws/s3/aws-s3-source-to-http-route.yaml"
             systemProperties:
               file: "aws/s3/application.properties"
               properties:
@@ -89,5 +89,5 @@ actions:
   - camel:
       jbang:
         verify:
-          integration: "aws-s3-to-http"
+          integration: "aws-s3-source-to-http-route"
           logMessage: "${aws.s3.message}"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.yaml 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.yaml
deleted file mode 100644
index 70ddfcc21..000000000
--- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.yaml
+++ /dev/null
@@ -1,79 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-s3-to-http
-spec:
-  integration:
-    dependencies:
-    - "camel:cloudevents"
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-s3-source
-    properties:
-      bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}"
-      uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}"
-      overrideEndpoint: "{{aws.s3.overrideEndpoint}}"
-      forcePathStyle: "{{aws.s3.forcePathStyle}}"
-      accessKey: "{{aws.s3.accessKey}}"
-      secretKey: "{{aws.s3.secretKey}}"
-      region: "{{aws.s3.region}}"
-  steps:
-    - ref:
-        kind: Kamelet
-        apiVersion: camel.apache.org/v1
-        name: data-type-action
-      properties:
-        scheme: "aws2-s3"
-        format: "application-cloudevents"
-    - ref:
-        kind: Kamelet
-        apiVersion: camel.apache.org/v1
-        name: data-type-action
-      properties:
-        scheme: "http"
-        format: "application-cloudevents"
-    - ref:
-        kind: Kamelet
-        apiVersion: camel.apache.org/v1
-        name: data-type-action
-      properties:
-        scheme: "text"
-        format: "plain"
-    - ref:
-        kind: Kamelet
-        apiVersion: camel.apache.org/v1
-        name: drop-headers-action
-      properties:
-        pattern: "Camel*"
-    - ref:
-        kind: Kamelet
-        apiVersion: camel.apache.org/v1
-        name: log-sink
-      properties:
-        showHeaders: true
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: http-sink
-    properties:
-      url: "{{http.sink.url}}"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-knative-broker.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-knative-broker.yaml
index c1522c925..aa56b6237 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-knative-broker.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-knative-broker.yaml
@@ -29,10 +29,10 @@ spec:
       bucketNameOrArn: ${aws.s3.bucketNameOrArn}
       overrideEndpoint: true
       forcePathStyle: true
-      uriEndpointOverride: ${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}
-      accessKey: ${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}
-      secretKey: ${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}
-      region: ${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}
+      uriEndpointOverride: ${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}
+      accessKey: ${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}
+      secretKey: ${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}
+      region: ${CITRUS_TESTCONTAINERS_FLOCI_REGION}
   steps:
     - ref:
         kind: Kamelet
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml
index fcdc5127b..9786bab46 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml
@@ -24,15 +24,15 @@ variables:
   - name: "aws.s3.key"
     value: "hello.txt"
 actions:
-  # Create LocalStack infrastructure
+  # Create Floci infrastructure
   - testcontainers:
       start:
-        localstack:
+        floci:
           services:
             - "S3"
   - waitFor:
       http:
-        url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
 
   # Create AWS-S3 client
   - camel:
@@ -51,17 +51,17 @@ actions:
                 - name: "aws.s3.bucketNameOrArn"
                   value: "${aws.s3.bucketNameOrArn}"
                 - name: "aws.s3.uriEndpointOverride"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
                 - name: "aws.s3.overrideEndpoint"
                   value: "true"
                 - name: "aws.s3.forcePathStyle"
                   value: "true"
                 - name: "aws.s3.secretKey"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}"
                 - name: "aws.s3.accessKey"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}"
                 - name: "aws.s3.region"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}"
 
   # Publish event
   - send:
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.citrus.it.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.citrus.it.yaml
index fc63613f2..599098efc 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.citrus.it.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.citrus.it.yaml
@@ -24,15 +24,15 @@ variables:
   - name: "aws.s3.key"
     value: "hello.txt"
 actions:
-  # Create LocalStack infrastructure
+  # Create Floci infrastructure
   - testcontainers:
       start:
-        localstack:
+        floci:
           services:
             - "S3"
   - waitFor:
       http:
-        url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
 
   # Create AWS-S3 client
   - camel:
@@ -45,23 +45,23 @@ actions:
       jbang:
         run:
           integration:
-            file: "aws/s3/aws-s3-uri-pipe.yaml"
+            file: "aws/s3/aws-s3-source-route.yaml"
             systemProperties:
               properties:
                 - name: "aws.s3.bucketNameOrArn"
                   value: "${aws.s3.bucketNameOrArn}"
                 - name: "aws.s3.uriEndpointOverride"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
                 - name: "aws.s3.overrideEndpoint"
                   value: "true"
                 - name: "aws.s3.forcePathStyle"
                   value: "true"
                 - name: "aws.s3.secretKey"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}"
                 - name: "aws.s3.accessKey"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}"
                 - name: "aws.s3.region"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}"
 
   # Publish event
   - send:
@@ -77,5 +77,5 @@ actions:
   - camel:
       jbang:
         verify:
-          integration: "aws-s3-uri-pipe"
+          integration: "aws-s3-source-route"
           logMessage: "${aws.s3.message}"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/amazonS3Client.groovy 
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/getS3Object.groovy
similarity index 65%
copy from 
tests/camel-kamelets-itest/src/test/resources/aws/s3/amazonS3Client.groovy
copy to tests/camel-kamelets-itest/src/test/resources/aws/s3/getS3Object.groovy
index 4c6470e9c..b44362677 100644
--- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/amazonS3Client.groovy
+++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/getS3Object.groovy
@@ -19,19 +19,24 @@ import 
software.amazon.awssdk.auth.credentials.AwsBasicCredentials
 import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
 import software.amazon.awssdk.regions.Region
 import software.amazon.awssdk.services.s3.S3Client
+import software.amazon.awssdk.services.s3.model.GetObjectRequest
 
 S3Client s3 = S3Client
         .builder()
-        
.endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}'))
+        
.endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}'))
         .credentialsProvider(StaticCredentialsProvider.create(
                 AwsBasicCredentials.create(
-                        '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}',
-                        '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}')
+                        '${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}',
+                        '${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}')
         ))
         .forcePathStyle(true)
-        .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}'))
+        .region(Region.of('${CITRUS_TESTCONTAINERS_FLOCI_REGION}'))
         .build()
 
-s3.createBucket(b -> b.bucket('${aws.s3.bucketNameOrArn}'))
+def response = s3.getObjectAsBytes(GetObjectRequest.builder()
+        .bucket('${aws.s3.bucketNameOrArn}')
+        .key('${aws.s3.key}')
+        .build())
 
-return s3
+String content = response.asUtf8String()
+assert content == '${test.message}' : "Expected '${test.message}' but got '" + 
content + "'"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.citrus.it.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.citrus.it.yaml
new file mode 100644
index 000000000..506a2bbde
--- /dev/null
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.citrus.it.yaml
@@ -0,0 +1,92 @@
+# ---------------------------------------------------------------------------
+# 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.
+# ---------------------------------------------------------------------------
+
+name: aws-sns-sink-route-test
+variables:
+  - name: "aws.sns.topicName"
+    value: "sns-test-topic"
+  - name: "aws.sqs.queueName"
+    value: "sns-test-queue"
+  - name: "test.message"
+    value: "Hello from SNS sink test"
+actions:
+  # Create Floci infrastructure
+  - testcontainers:
+      start:
+        floci:
+          services:
+            - "SNS"
+            - "SQS"
+  - waitFor:
+      http:
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
+
+  # Create SNS topic, SQS queue, and subscribe SQS to SNS
+  - groovy:
+      script:
+        file: "aws/sns/setupSnsToSqs.groovy"
+
+  # Create Camel JBang integration for the SNS sink
+  - camel:
+      jbang:
+        run:
+          integration:
+            file: "aws/sns/aws-sns-sink-route.yaml"
+            systemProperties:
+              properties:
+                - name: "test.message"
+                  value: "${test.message}"
+                - name: "aws.sns.topicName"
+                  value: "${aws.sns.topicName}"
+                - name: "aws.sns.uriEndpointOverride"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
+                - name: "aws.sns.overrideEndpoint"
+                  value: "true"
+                - name: "aws.sns.secretKey"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}"
+                - name: "aws.sns.accessKey"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}"
+                - name: "aws.sns.region"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}"
+
+  # Create event listener to consume the message forwarded from SNS to SQS
+  - camel:
+      jbang:
+        run:
+          integration:
+            file: "aws/sns/aws-sqs-sns-event-listener.yaml"
+            systemProperties:
+              properties:
+                - name: "aws.sqs.queueName"
+                  value: "${aws.sqs.queueName}"
+                - name: "aws.sqs.uriEndpointOverride"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
+                - name: "aws.sqs.overrideEndpoint"
+                  value: "true"
+                - name: "aws.sqs.secretKey"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}"
+                - name: "aws.sqs.accessKey"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}"
+                - name: "aws.sqs.region"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}"
+
+  # Verify message received by the SQS listener
+  - camel:
+      jbang:
+        verify:
+          integration: "aws-sqs-sns-event-listener"
+          logMessage: "${test.message}"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml 
b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.yaml
similarity index 60%
copy from 
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
copy to 
tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.yaml
index 7155c8c50..913cabd64 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.yaml
@@ -15,27 +15,22 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-sqs-uri-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-sqs-source
-    properties:
-      queueNameOrArn: "{{aws.sqs.queueName}}"
-      uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
-      overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
-      accessKey: "{{aws.sqs.accessKey}}"
-      secretKey: "{{aws.sqs.secretKey}}"
-      region: "{{aws.sqs.region}}"
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: log-sink
-    properties:
-      showHeaders: true
+- route:
+    from:
+      uri: "timer:tick"
+      parameters:
+        period: "10000"
+        repeatCount: 1
+      steps:
+      - setBody:
+          constant: "{{test.message}}"
+      - to:
+          uri: "kamelet:aws-sns-sink"
+          parameters:
+            topicNameOrArn: "{{aws.sns.topicName}}"
+            accessKey: "{{aws.sns.accessKey}}"
+            secretKey: "{{aws.sns.secretKey}}"
+            region: "{{aws.sns.region}}"
+            overrideEndpoint: "{{aws.sns.overrideEndpoint}}"
+            uriEndpointOverride: "{{aws.sns.uriEndpointOverride}}"
+            autoCreateTopic: "true"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml 
b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sqs-sns-event-listener.yaml
similarity index 60%
copy from 
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
copy to 
tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sqs-sns-event-listener.yaml
index 7155c8c50..0ba9d0c7c 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sqs-sns-event-listener.yaml
@@ -15,27 +15,15 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-sqs-uri-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-sqs-source
-    properties:
-      queueNameOrArn: "{{aws.sqs.queueName}}"
-      uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
-      overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
-      accessKey: "{{aws.sqs.accessKey}}"
-      secretKey: "{{aws.sqs.secretKey}}"
-      region: "{{aws.sqs.region}}"
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: log-sink
-    properties:
-      showHeaders: true
+- route:
+    from:
+      uri: "aws2-sqs:{{aws.sqs.queueName}}"
+      parameters:
+        accessKey: "{{aws.sqs.accessKey}}"
+        secretKey: "{{aws.sqs.secretKey}}"
+        region: "{{aws.sqs.region}}"
+        overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
+        uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
+      steps:
+      - to:
+          uri: "log:aws-sqs-sns-event-listener"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/sns/setupSnsToSqs.groovy 
b/tests/camel-kamelets-itest/src/test/resources/aws/sns/setupSnsToSqs.groovy
new file mode 100644
index 000000000..eb172c07d
--- /dev/null
+++ b/tests/camel-kamelets-itest/src/test/resources/aws/sns/setupSnsToSqs.groovy
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import software.amazon.awssdk.auth.credentials.AwsBasicCredentials
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
+import software.amazon.awssdk.regions.Region
+import software.amazon.awssdk.services.sns.SnsClient
+import software.amazon.awssdk.services.sqs.SqsClient
+import software.amazon.awssdk.services.sqs.model.QueueAttributeName
+
+def credentials = StaticCredentialsProvider.create(
+        AwsBasicCredentials.create(
+                '${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}',
+                '${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}'))
+
+def region = Region.of('${CITRUS_TESTCONTAINERS_FLOCI_REGION}')
+def endpoint = URI.create('${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}')
+
+SnsClient snsClient = SnsClient.builder()
+        .endpointOverride(endpoint)
+        .credentialsProvider(credentials)
+        .region(region)
+        .build()
+
+SqsClient sqsClient = SqsClient.builder()
+        .endpointOverride(endpoint)
+        .credentialsProvider(credentials)
+        .region(region)
+        .build()
+
+def topicArn = snsClient.createTopic(b -> 
b.name('${aws.sns.topicName}')).topicArn()
+
+def queueUrl = sqsClient.createQueue(b -> 
b.queueName('${aws.sqs.queueName}')).queueUrl()
+def queueArn = sqsClient.getQueueAttributes(b -> b.queueUrl(queueUrl)
+        .attributeNames(QueueAttributeName.QUEUE_ARN))
+        .attributes().get(QueueAttributeName.QUEUE_ARN)
+
+snsClient.subscribe(b -> 
b.topicArn(topicArn).protocol("sqs").endpoint(queueArn)
+        .attributes(Collections.singletonMap("RawMessageDelivery", "true")))
diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/README.md 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/README.md
index 974dc5114..2314ed0ea 100644
--- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/README.md
+++ b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/README.md
@@ -7,7 +7,7 @@ This test verifies the AWS SQS Kamelet source defined in 
[aws-sqs-source.kamelet
 The test verifies the AWS SQS Kamelet source by creating a Camel K integration 
that uses the Kamelet and listens for messages on the
 AWS SQS channel.
 
-The test uses a [LocalStack 
Testcontainers](https://www.testcontainers.org/modules/localstack/) instance to 
start a local AWS SQS service for mocking reasons.
+The test uses a [Floci 
Testcontainers](https://github.com/floci-io/testcontainers-floci) instance to 
start a local AWS SQS service for emulation reasons.
 The Kamelet and the test interact with the local AWS SQS service for 
validation of functionality.
 
 ### Test Kamelet source
@@ -15,7 +15,7 @@ The Kamelet and the test interact with the local AWS SQS 
service for validation
 The test performs the following high level steps for configs - URI, secret and 
property based:
 
 *Preparation*
-- Start the AWS SQS service as LocalStack container
+- Start the AWS SQS service as Floci container
 - Overwrite the Kamelet with the latest source
 - Prepare the Camel AWS SQS client
 
@@ -27,7 +27,7 @@ The test performs the following high level steps for configs 
- URI, secret and p
 - Verify that the integration has received the message event
 
 *Cleanup*
-- Stop the LocalStack container
+- Stop the Floci container
 - Delete the Camel K integration
 - Delete the secret from the current namespacce
 
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/amazonSQSClient.groovy 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/amazonSQSClient.groovy
index 80676fac7..c2fbdd17f 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/amazonSQSClient.groovy
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/amazonSQSClient.groovy
@@ -22,13 +22,13 @@ import software.amazon.awssdk.services.sqs.SqsClient
 
 SqsClient sqsClient = SqsClient
         .builder()
-        
.endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}'))
+        
.endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}'))
         .credentialsProvider(StaticCredentialsProvider.create(
                 AwsBasicCredentials.create(
-                        '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}',
-                        '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}')
+                        '${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}',
+                        '${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}')
         ))
-        .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}'))
+        .region(Region.of('${CITRUS_TESTCONTAINERS_FLOCI_REGION}'))
         .build()
 
 sqsClient.createQueue(s -> s.queueName('${aws.sqs.queueName}'))
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-event-listener.yaml
similarity index 60%
copy from 
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
copy to 
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-event-listener.yaml
index 7155c8c50..da26e400c 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-event-listener.yaml
@@ -15,27 +15,15 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-sqs-uri-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-sqs-source
-    properties:
-      queueNameOrArn: "{{aws.sqs.queueName}}"
-      uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
-      overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
-      accessKey: "{{aws.sqs.accessKey}}"
-      secretKey: "{{aws.sqs.secretKey}}"
-      region: "{{aws.sqs.region}}"
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: log-sink
-    properties:
-      showHeaders: true
+- route:
+    from:
+      uri: "aws2-sqs:{{aws.sqs.queueName}}"
+      parameters:
+        accessKey: "{{aws.sqs.accessKey}}"
+        secretKey: "{{aws.sqs.secretKey}}"
+        region: "{{aws.sqs.region}}"
+        overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
+        uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
+      steps:
+      - to:
+          uri: "log:aws-sqs-sink-event-listener"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.citrus.it.yaml
similarity index 52%
copy from 
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml
copy to 
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.citrus.it.yaml
index 7466bc6c1..ecbf2a278 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.citrus.it.yaml
@@ -15,22 +15,22 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-name: aws-sqs-to-log-uri-based-test
+name: aws-sqs-sink-route-test
 variables:
   - name: "aws.sqs.queueName"
-    value: "queue3"
-  - name: "aws.sqs.message"
-    value: "Hello from SQS Kamelet"
+    value: "sink-queue"
+  - name: "test.message"
+    value: "Hello from SQS sink test"
 actions:
-  # Create LocalStack infrastructure
+  # Create Floci infrastructure
   - testcontainers:
       start:
-        localstack:
+        floci:
           services:
             - "SQS"
   - waitFor:
       http:
-        url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
 
   # Create AWS-SQS client
   - camel:
@@ -43,32 +43,48 @@ actions:
       jbang:
         run:
           integration:
-            file: "aws/sqs/aws-sqs-to-log-uri-based.yaml"
+            file: "aws/sqs/aws-sqs-sink-route.yaml"
             systemProperties:
               properties:
+                - name: "test.message"
+                  value: "${test.message}"
                 - name: "aws.sqs.queueName"
                   value: "${aws.sqs.queueName}"
                 - name: "aws.sqs.uriEndpointOverride"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
                 - name: "aws.sqs.overrideEndpoint"
                   value: "true"
                 - name: "aws.sqs.secretKey"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}"
                 - name: "aws.sqs.accessKey"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}"
                 - name: "aws.sqs.region"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}"
 
-  # Publish event
-  - send:
-      endpoint: 
camel:aws2-sqs://${aws.sqs.queueName}?amazonSQSClient=#amazonSQSClient
-      message:
-        body:
-          data: "${aws.sqs.message}"
+  # Create event listener to consume the message from SQS
+  - camel:
+      jbang:
+        run:
+          integration:
+            file: "aws/sqs/aws-sqs-sink-event-listener.yaml"
+            systemProperties:
+              properties:
+                - name: "aws.sqs.queueName"
+                  value: "${aws.sqs.queueName}"
+                - name: "aws.sqs.uriEndpointOverride"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
+                - name: "aws.sqs.overrideEndpoint"
+                  value: "true"
+                - name: "aws.sqs.secretKey"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}"
+                - name: "aws.sqs.accessKey"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}"
+                - name: "aws.sqs.region"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}"
 
-  # Verify AWS-SQS source
+  # Verify message received by the listener
   - camel:
       jbang:
         verify:
-          integration: "aws-sqs-to-log-uri-based"
-          logMessage: "${aws.sqs.message}"
+          integration: "aws-sqs-sink-event-listener"
+          logMessage: "${test.message}"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.yaml
similarity index 60%
copy from 
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
copy to 
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.yaml
index 7155c8c50..62c3e4418 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.yaml
@@ -15,27 +15,22 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-sqs-uri-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-sqs-source
-    properties:
-      queueNameOrArn: "{{aws.sqs.queueName}}"
-      uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
-      overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
-      accessKey: "{{aws.sqs.accessKey}}"
-      secretKey: "{{aws.sqs.secretKey}}"
-      region: "{{aws.sqs.region}}"
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: log-sink
-    properties:
-      showHeaders: true
+- route:
+    from:
+      uri: "timer:tick"
+      parameters:
+        period: "10000"
+        repeatCount: 1
+      steps:
+      - setBody:
+          constant: "{{test.message}}"
+      - to:
+          uri: "kamelet:aws-sqs-sink"
+          parameters:
+            queueNameOrArn: "{{aws.sqs.queueName}}"
+            accessKey: "{{aws.sqs.accessKey}}"
+            secretKey: "{{aws.sqs.secretKey}}"
+            region: "{{aws.sqs.region}}"
+            overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
+            uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
+            autoCreateQueue: "true"
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-source-route.yaml
similarity index 60%
rename from 
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
rename to 
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-source-route.yaml
index 7155c8c50..0313cd426 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-source-route.yaml
@@ -15,27 +15,18 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
-  name: aws-sqs-uri-pipe
-spec:
-  source:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: aws-sqs-source
-    properties:
-      queueNameOrArn: "{{aws.sqs.queueName}}"
-      uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
-      overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
-      accessKey: "{{aws.sqs.accessKey}}"
-      secretKey: "{{aws.sqs.secretKey}}"
-      region: "{{aws.sqs.region}}"
-  sink:
-    ref:
-      kind: Kamelet
-      apiVersion: camel.apache.org/v1
-      name: log-sink
-    properties:
-      showHeaders: true
+- route:
+    from:
+      uri: "kamelet:aws-sqs-source"
+      parameters:
+        queueNameOrArn: "{{aws.sqs.queueName}}"
+        uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
+        overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
+        accessKey: "{{aws.sqs.accessKey}}"
+        secretKey: "{{aws.sqs.secretKey}}"
+        region: "{{aws.sqs.region}}"
+      steps:
+      - to:
+          uri: "kamelet:log-sink"
+          parameters:
+            showHeaders: true
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml
index 7466bc6c1..a9d7fec5d 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml
@@ -22,15 +22,15 @@ variables:
   - name: "aws.sqs.message"
     value: "Hello from SQS Kamelet"
 actions:
-  # Create LocalStack infrastructure
+  # Create Floci infrastructure
   - testcontainers:
       start:
-        localstack:
+        floci:
           services:
             - "SQS"
   - waitFor:
       http:
-        url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
 
   # Create AWS-SQS client
   - camel:
@@ -49,15 +49,15 @@ actions:
                 - name: "aws.sqs.queueName"
                   value: "${aws.sqs.queueName}"
                 - name: "aws.sqs.uriEndpointOverride"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
                 - name: "aws.sqs.overrideEndpoint"
                   value: "true"
                 - name: "aws.sqs.secretKey"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}"
                 - name: "aws.sqs.accessKey"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}"
                 - name: "aws.sqs.region"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}"
 
   # Publish event
   - send:
diff --git 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml
 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml
index 90e944650..7937edbe5 100644
--- 
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml
+++ 
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml
@@ -22,15 +22,15 @@ variables:
   - name: "aws.sqs.message"
     value: "Hello from SQS Kamelet"
 actions:
-  # Create LocalStack infrastructure
+  # Create Floci infrastructure
   - testcontainers:
       start:
-        localstack:
+        floci:
           services:
             - "SQS"
   - waitFor:
       http:
-        url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+        url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
 
   # Create AWS-SQS client
   - camel:
@@ -43,21 +43,21 @@ actions:
       jbang:
         run:
           integration:
-            file: "aws/sqs/aws-sqs-uri-pipe.yaml"
+            file: "aws/sqs/aws-sqs-source-route.yaml"
             systemProperties:
               properties:
                 - name: "aws.sqs.queueName"
                   value: "${aws.sqs.queueName}"
                 - name: "aws.sqs.uriEndpointOverride"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}"
                 - name: "aws.sqs.overrideEndpoint"
                   value: "true"
                 - name: "aws.sqs.secretKey"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}"
                 - name: "aws.sqs.accessKey"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}"
                 - name: "aws.sqs.region"
-                  value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}"
+                  value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}"
 
   # Publish event
   - send:
@@ -70,5 +70,5 @@ actions:
   - camel:
       jbang:
         verify:
-          integration: "aws-sqs-uri-pipe"
+          integration: "aws-sqs-source-route"
           logMessage: "${aws.sqs.message}"


Reply via email to