diff --git a/REGRESSION/resources/config-local.xml b/REGRESSION/resources/config-local.xml
index fc7fd2e..7d060f3 100644
--- a/REGRESSION/resources/config-local.xml
+++ b/REGRESSION/resources/config-local.xml
@@ -8,50 +8,50 @@
-
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
@@ -66,9 +66,9 @@
-
+
-
+
diff --git a/REGRESSION/resources/data/variations/variations_lambda.csv b/REGRESSION/resources/data/variations/variations_lambda.csv
new file mode 100644
index 0000000..663035f
--- /dev/null
+++ b/REGRESSION/resources/data/variations/variations_lambda.csv
@@ -0,0 +1,3 @@
+average,name,subject,marks,header,headerValue,expected
+50,Bob,Physics,"50,50,50,50",X-Amz-Executed-Version,$LATEST,expected_1
+50,John,Physics,"70,60,60,50",X-Amz-Executed-Version,$LATEST,expected_2
diff --git a/REGRESSION/resources/data/variations/variations_s3.csv b/REGRESSION/resources/data/variations/variations_s3.csv
new file mode 100644
index 0000000..f664c95
--- /dev/null
+++ b/REGRESSION/resources/data/variations/variations_s3.csv
@@ -0,0 +1,3 @@
+variable_bucket,variable_file,variable_expected,content_expected
+testlum-var-bucket-1,upload_1.json,1,{"Testlum": "TOP"}
+testlum-var-bucket-2,upload_2.json,2,{"Testlum": "The Best"}
diff --git a/REGRESSION/resources/scenarios/http/lambda/condition/body_1.json b/REGRESSION/resources/scenarios/http/lambda/condition/body_1.json
new file mode 100644
index 0000000..6610cf1
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/condition/body_1.json
@@ -0,0 +1,5 @@
+{
+ "name": "Alice",
+ "subject": "Mathematics",
+ "scores": [90, 85, 92, 88]
+}
diff --git a/REGRESSION/resources/scenarios/http/lambda/condition/expected_1.json b/REGRESSION/resources/scenarios/http/lambda/condition/expected_1.json
new file mode 100644
index 0000000..48b8f5b
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/condition/expected_1.json
@@ -0,0 +1,8 @@
+{
+ "student": "Alice",
+ "subject": "Mathematics",
+ "scores": [90, 85, 92, 88],
+ "average": 88.75,
+ "passed": true,
+ "status": "PASSED"
+}
diff --git a/REGRESSION/resources/scenarios/http/lambda/condition/expected_2.json b/REGRESSION/resources/scenarios/http/lambda/condition/expected_2.json
new file mode 100644
index 0000000..38c749e
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/condition/expected_2.json
@@ -0,0 +1,8 @@
+{
+ "student": "Bob",
+ "subject": "Physics",
+ "scores": [40, 55, 50, 45],
+ "average": 47.5,
+ "passed": false,
+ "status": "FAILED"
+}
diff --git a/REGRESSION/resources/scenarios/http/lambda/condition/scenario.xml b/REGRESSION/resources/scenarios/http/lambda/condition/scenario.xml
new file mode 100644
index 0000000..aed6134
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/condition/scenario.xml
@@ -0,0 +1,53 @@
+
+
+
+ Self test for student-scores-python: student score processor - calculates average, pass/fail status
+
+ AWS Lambda Self scenario
+
+
+
+ lambda
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ "name": "Bob",
+ "subject": "Physics",
+ "scores": [40, 55, 50, 45]
+ }
+
+
+
+
+
+
+
+
diff --git a/REGRESSION/resources/scenarios/http/lambda/body_2.json b/REGRESSION/resources/scenarios/http/lambda/e2e/body_2.json
similarity index 100%
rename from REGRESSION/resources/scenarios/http/lambda/body_2.json
rename to REGRESSION/resources/scenarios/http/lambda/e2e/body_2.json
diff --git a/REGRESSION/resources/scenarios/http/lambda/expected_2.json b/REGRESSION/resources/scenarios/http/lambda/e2e/expected_2.json
similarity index 100%
rename from REGRESSION/resources/scenarios/http/lambda/expected_2.json
rename to REGRESSION/resources/scenarios/http/lambda/e2e/expected_2.json
diff --git a/REGRESSION/resources/scenarios/http/lambda/expected_3.json b/REGRESSION/resources/scenarios/http/lambda/e2e/expected_3.json
similarity index 100%
rename from REGRESSION/resources/scenarios/http/lambda/expected_3.json
rename to REGRESSION/resources/scenarios/http/lambda/e2e/expected_3.json
diff --git a/REGRESSION/resources/scenarios/http/lambda/expected_4.json b/REGRESSION/resources/scenarios/http/lambda/e2e/expected_4.json
similarity index 100%
rename from REGRESSION/resources/scenarios/http/lambda/expected_4.json
rename to REGRESSION/resources/scenarios/http/lambda/e2e/expected_4.json
diff --git a/REGRESSION/resources/scenarios/http/lambda/expected_5.json b/REGRESSION/resources/scenarios/http/lambda/e2e/expected_5.json
similarity index 100%
rename from REGRESSION/resources/scenarios/http/lambda/expected_5.json
rename to REGRESSION/resources/scenarios/http/lambda/e2e/expected_5.json
diff --git a/REGRESSION/resources/scenarios/http/lambda/expected_7.json b/REGRESSION/resources/scenarios/http/lambda/e2e/expected_6.json
similarity index 100%
rename from REGRESSION/resources/scenarios/http/lambda/expected_7.json
rename to REGRESSION/resources/scenarios/http/lambda/e2e/expected_6.json
diff --git a/REGRESSION/resources/scenarios/http/lambda/e2e/expected_7.json b/REGRESSION/resources/scenarios/http/lambda/e2e/expected_7.json
new file mode 100644
index 0000000..e04ded6
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/e2e/expected_7.json
@@ -0,0 +1,31 @@
+[ {
+ "id" : "1",
+ "author" : "J. K. Rowling",
+ "title" : "Harry Potter and Philosopher's Stone",
+ "number" : 1
+}, {
+ "id" : "2",
+ "author" : "J. R. R. Tolkien",
+ "title" : "The Lord of the Rings: The Fellowship of the Ring",
+ "number" : 2
+}, {
+ "id" : "3",
+ "author" : "George R. R. Martin",
+ "title" : "A Game of Thrones",
+ "number" : 3
+}, {
+ "id" : "4",
+ "author" : "Fredrik Backman",
+ "title" : "A Man Called Ove",
+ "number" : 4
+}, {
+ "id" : "5",
+ "author" : "Ivan Franko",
+ "title" : "Kamenyari",
+ "number" : 5
+}, {
+ "id" : "6",
+ "author" : "Taras Shevchenko",
+ "title" : "Kobzar",
+ "number" : 6
+} ]
\ No newline at end of file
diff --git a/REGRESSION/resources/scenarios/http/lambda/expected_8.json b/REGRESSION/resources/scenarios/http/lambda/e2e/expected_8.json
similarity index 100%
rename from REGRESSION/resources/scenarios/http/lambda/expected_8.json
rename to REGRESSION/resources/scenarios/http/lambda/e2e/expected_8.json
diff --git a/REGRESSION/resources/scenarios/http/lambda/request_3.json b/REGRESSION/resources/scenarios/http/lambda/e2e/request_3.json
similarity index 100%
rename from REGRESSION/resources/scenarios/http/lambda/request_3.json
rename to REGRESSION/resources/scenarios/http/lambda/e2e/request_3.json
diff --git a/REGRESSION/resources/scenarios/http/lambda/scenario.xml b/REGRESSION/resources/scenarios/http/lambda/e2e/scenario.xml
similarity index 100%
rename from REGRESSION/resources/scenarios/http/lambda/scenario.xml
rename to REGRESSION/resources/scenarios/http/lambda/e2e/scenario.xml
diff --git a/REGRESSION/resources/scenarios/http/lambda/expected_6.json b/REGRESSION/resources/scenarios/http/lambda/expected_6.json
deleted file mode 100644
index e161a3e..0000000
--- a/REGRESSION/resources/scenarios/http/lambda/expected_6.json
+++ /dev/null
@@ -1,31 +0,0 @@
-[ {
- "number" : 1,
- "author" : "J. K. Rowling",
- "id" : "1",
- "title" : "Harry Potter and Philosopher's Stone"
-}, {
- "number" : 2,
- "author" : "J. R. R. Tolkien",
- "id" : "2",
- "title" : "The Lord of the Rings: The Fellowship of the Ring"
-}, {
- "number" : 3,
- "author" : "George R. R. Martin",
- "id" : "3",
- "title" : "A Game of Thrones"
-}, {
- "number" : 4,
- "author" : "Fredrik Backman",
- "id" : "4",
- "title" : "A Man Called Ove"
-}, {
- "number" : 5,
- "author" : "Ivan Franko",
- "id" : "5",
- "title" : "Kamenyari"
-}, {
- "number" : 6,
- "author" : "Taras Shevchenko",
- "id" : "6",
- "title" : "Kobzar"
-} ]
\ No newline at end of file
diff --git a/REGRESSION/resources/scenarios/http/lambda/repeat/body_1.json b/REGRESSION/resources/scenarios/http/lambda/repeat/body_1.json
new file mode 100644
index 0000000..6610cf1
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/repeat/body_1.json
@@ -0,0 +1,5 @@
+{
+ "name": "Alice",
+ "subject": "Mathematics",
+ "scores": [90, 85, 92, 88]
+}
diff --git a/REGRESSION/resources/scenarios/http/lambda/repeat/expected_1.json b/REGRESSION/resources/scenarios/http/lambda/repeat/expected_1.json
new file mode 100644
index 0000000..48b8f5b
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/repeat/expected_1.json
@@ -0,0 +1,8 @@
+{
+ "student": "Alice",
+ "subject": "Mathematics",
+ "scores": [90, 85, 92, 88],
+ "average": 88.75,
+ "passed": true,
+ "status": "PASSED"
+}
diff --git a/REGRESSION/resources/scenarios/http/lambda/repeat/expected_2.json b/REGRESSION/resources/scenarios/http/lambda/repeat/expected_2.json
new file mode 100644
index 0000000..38c749e
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/repeat/expected_2.json
@@ -0,0 +1,8 @@
+{
+ "student": "Bob",
+ "subject": "Physics",
+ "scores": [40, 55, 50, 45],
+ "average": 47.5,
+ "passed": false,
+ "status": "FAILED"
+}
diff --git a/REGRESSION/resources/scenarios/http/lambda/repeat/scenario.xml b/REGRESSION/resources/scenarios/http/lambda/repeat/scenario.xml
new file mode 100644
index 0000000..8d5bfd7
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/repeat/scenario.xml
@@ -0,0 +1,28 @@
+
+
+
+ Repeat test for student-scores-python lambda: student score processor - calculates average, pass/fail status
+
+ AWS Lambda Repeat scenario
+
+
+
+ lambda
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/REGRESSION/resources/scenarios/http/lambda/self/body_1.json b/REGRESSION/resources/scenarios/http/lambda/self/body_1.json
new file mode 100644
index 0000000..6610cf1
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/self/body_1.json
@@ -0,0 +1,5 @@
+{
+ "name": "Alice",
+ "subject": "Mathematics",
+ "scores": [90, 85, 92, 88]
+}
diff --git a/REGRESSION/resources/scenarios/http/lambda/self/expected_1.json b/REGRESSION/resources/scenarios/http/lambda/self/expected_1.json
new file mode 100644
index 0000000..48b8f5b
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/self/expected_1.json
@@ -0,0 +1,8 @@
+{
+ "student": "Alice",
+ "subject": "Mathematics",
+ "scores": [90, 85, 92, 88],
+ "average": 88.75,
+ "passed": true,
+ "status": "PASSED"
+}
diff --git a/REGRESSION/resources/scenarios/http/lambda/self/expected_2.json b/REGRESSION/resources/scenarios/http/lambda/self/expected_2.json
new file mode 100644
index 0000000..38c749e
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/self/expected_2.json
@@ -0,0 +1,8 @@
+{
+ "student": "Bob",
+ "subject": "Physics",
+ "scores": [40, 55, 50, 45],
+ "average": 47.5,
+ "passed": false,
+ "status": "FAILED"
+}
diff --git a/REGRESSION/resources/scenarios/http/lambda/self/scenario.xml b/REGRESSION/resources/scenarios/http/lambda/self/scenario.xml
new file mode 100644
index 0000000..e2b12d9
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/self/scenario.xml
@@ -0,0 +1,43 @@
+
+
+
+ Self test for student-scores-python lambda: student score processor - calculates average,pass/fail status
+
+ AWS Lambda Self scenario
+
+
+
+ lambda
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ "name": "Bob",
+ "subject": "Physics",
+ "scores": [40, 55, 50, 45]
+ }
+
+
+
+
+
+
+
+
diff --git a/REGRESSION/resources/scenarios/http/lambda/variations/expected_1.json b/REGRESSION/resources/scenarios/http/lambda/variations/expected_1.json
new file mode 100644
index 0000000..41ebb0e
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/variations/expected_1.json
@@ -0,0 +1,8 @@
+{
+ "student" : "Bob",
+ "subject" : "Physics",
+ "scores" : [ 50, 50, 50, 50 ],
+ "average" : 50.0,
+ "passed" : false,
+ "status" : "FAILED"
+}
\ No newline at end of file
diff --git a/REGRESSION/resources/scenarios/http/lambda/variations/expected_2.json b/REGRESSION/resources/scenarios/http/lambda/variations/expected_2.json
new file mode 100644
index 0000000..43ec54e
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/variations/expected_2.json
@@ -0,0 +1,8 @@
+{
+ "student" : "John",
+ "subject" : "Physics",
+ "scores" : [ 70, 60, 60, 50 ],
+ "average" : 60.0,
+ "passed" : true,
+ "status" : "PASSED"
+}
\ No newline at end of file
diff --git a/REGRESSION/resources/scenarios/http/lambda/variations/scenario.xml b/REGRESSION/resources/scenarios/http/lambda/variations/scenario.xml
new file mode 100644
index 0000000..5b28050
--- /dev/null
+++ b/REGRESSION/resources/scenarios/http/lambda/variations/scenario.xml
@@ -0,0 +1,33 @@
+
+
+
+ Variations test for student-scores lambda: student score processor - calculates average, pass/fail status
+
+ AWS Lambda Variations scenario
+
+
+
+ variations_lambda.csv
+ lambda
+
+
+
+
+
+ {
+ "name": "{{name}}",
+ "subject": "{{subject}}",
+ "scores": [{{marks}}]
+ }
+
+
+
+
+
+
+
+
diff --git a/REGRESSION/resources/scenarios/storage/s3/condition_bucket/expected_1.json b/REGRESSION/resources/scenarios/storage/s3/condition_bucket/expected_1.json
new file mode 100644
index 0000000..a09bdfb
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/condition_bucket/expected_1.json
@@ -0,0 +1 @@
+{"Testlum": "TOP"}
diff --git a/REGRESSION/resources/scenarios/storage/s3/condition_bucket/scenario.xml b/REGRESSION/resources/scenarios/storage/s3/condition_bucket/scenario.xml
new file mode 100644
index 0000000..3ce39bf
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/condition_bucket/scenario.xml
@@ -0,0 +1,108 @@
+
+
+
+ Condition bucket test: remove bucket only if condition is true, verify bucket still exists if condition is false
+ S3 Condition Bucket scenario
+
+
+
+ s3
+
+
+
+
+ testlum-cond-true-bucket
+
+
+
+
+
+
+
+ testlum-cond-true-bucket
+
+
+
+
+
+
+
+ testlum-cond-false-bucket
+
+
+
+
+
+
+
+ testlum-cond-false-bucket
+
+
+
+
+
+ upload_1.json
+
+
+
+
+
+
+ expected_1.json
+
+
+
+
+
+
+ testlum-cond-and-bucket
+
+
+
+
+
+
+
+
+
+
+
+ testlum-cond-and-bucket
+
+
+
+
+
+ upload_1.json
+
+
+
+
+
+
+ expected_1.json
+
+
+
+
+
diff --git a/REGRESSION/resources/scenarios/storage/s3/condition_bucket/upload_1.json b/REGRESSION/resources/scenarios/storage/s3/condition_bucket/upload_1.json
new file mode 100644
index 0000000..a09bdfb
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/condition_bucket/upload_1.json
@@ -0,0 +1 @@
+{"Testlum": "TOP"}
diff --git a/REGRESSION/resources/scenarios/storage/s3/condition_file/expected_1.json b/REGRESSION/resources/scenarios/storage/s3/condition_file/expected_1.json
new file mode 100644
index 0000000..a09bdfb
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/condition_file/expected_1.json
@@ -0,0 +1 @@
+{"Testlum": "TOP"}
diff --git a/REGRESSION/resources/scenarios/storage/s3/condition_file/expected_2.json b/REGRESSION/resources/scenarios/storage/s3/condition_file/expected_2.json
new file mode 100644
index 0000000..e123982
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/condition_file/expected_2.json
@@ -0,0 +1 @@
+{"Testlum": "The Best"}
diff --git a/REGRESSION/resources/scenarios/storage/s3/condition_file/scenario.xml b/REGRESSION/resources/scenarios/storage/s3/condition_file/scenario.xml
new file mode 100644
index 0000000..f6ea331
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/condition_file/scenario.xml
@@ -0,0 +1,100 @@
+
+
+
+ Condition file test: remove file only if condition is true, verify other files in bucket remain unchanged if condition is false
+ S3 Condition File scenario
+
+
+
+ s3
+
+
+
+
+ testlum-cond-file-bucket
+
+
+
+
+
+ upload_1.json
+
+
+
+
+
+ upload_2.json
+
+
+
+
+
+
+ expected_1.json
+
+
+
+
+
+
+
+ expected_2.json
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ expected_2.json
+
+
+
+
+
+
+
+ {"Testlum": "The Best"}
+
+
+
+
+
diff --git a/REGRESSION/resources/scenarios/storage/s3/condition_file/upload_1.json b/REGRESSION/resources/scenarios/storage/s3/condition_file/upload_1.json
new file mode 100644
index 0000000..a09bdfb
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/condition_file/upload_1.json
@@ -0,0 +1 @@
+{"Testlum": "TOP"}
diff --git a/REGRESSION/resources/scenarios/storage/s3/condition_file/upload_2.json b/REGRESSION/resources/scenarios/storage/s3/condition_file/upload_2.json
new file mode 100644
index 0000000..e123982
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/condition_file/upload_2.json
@@ -0,0 +1 @@
+{"Testlum": "The Best"}
diff --git a/REGRESSION/resources/scenarios/storage/s3/repeat/expected_1.json b/REGRESSION/resources/scenarios/storage/s3/repeat/expected_1.json
new file mode 100644
index 0000000..a09bdfb
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/repeat/expected_1.json
@@ -0,0 +1 @@
+{"Testlum": "TOP"}
diff --git a/REGRESSION/resources/scenarios/storage/s3/repeat/scenario.xml b/REGRESSION/resources/scenarios/storage/s3/repeat/scenario.xml
new file mode 100644
index 0000000..2bd6c29
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/repeat/scenario.xml
@@ -0,0 +1,57 @@
+
+
+
+ Repeat S3 test: execute storage upload and verify operation multiple times, validate operation
+ result for each execution
+
+ S3 Repeat scenario
+
+
+
+ s3
+
+
+
+
+
+
+ testlum-repeat-bucket-one
+
+
+
+
+
+ upload_1.json
+
+
+
+
+
+
+ expected_1.json
+
+
+
+
+
+
+
+ {"Testlum": "TOP"}
+
+
+
+
+
+
+ testlum-repeat-bucket-one
+
+
+
+
+
diff --git a/REGRESSION/resources/scenarios/storage/s3/repeat/upload_1.json b/REGRESSION/resources/scenarios/storage/s3/repeat/upload_1.json
new file mode 100644
index 0000000..a09bdfb
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/repeat/upload_1.json
@@ -0,0 +1 @@
+{"Testlum": "TOP"}
diff --git a/REGRESSION/resources/scenarios/storage/s3/self/expected_1.json b/REGRESSION/resources/scenarios/storage/s3/self/expected_1.json
new file mode 100644
index 0000000..a09bdfb
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/self/expected_1.json
@@ -0,0 +1 @@
+{"Testlum": "TOP"}
diff --git a/REGRESSION/resources/scenarios/storage/s3/self/expected_2.json b/REGRESSION/resources/scenarios/storage/s3/self/expected_2.json
new file mode 100644
index 0000000..e123982
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/self/expected_2.json
@@ -0,0 +1 @@
+{"Testlum": "The Best"}
diff --git a/REGRESSION/resources/scenarios/storage/s3/self/scenario.xml b/REGRESSION/resources/scenarios/storage/s3/self/scenario.xml
new file mode 100644
index 0000000..2dad9c8
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/self/scenario.xml
@@ -0,0 +1,100 @@
+
+
+
+ Self S3 test: create bucket, upload file, verify upload by download and compare, remove file, remove bucket
+ S3 Self scenario
+
+
+
+ s3
+
+
+
+
+ testlum-self-bucket-one
+
+
+
+
+
+ upload_1.json
+
+
+
+
+
+
+ expected_1.json
+
+
+
+
+
+
+
+ {"Testlum": "TOP"}
+
+
+
+
+
+
+
+
+
+
+
+
+ testlum-self-bucket-one
+
+
+
+
+
+ testlum-self-bucket-one
+
+
+
+
+
+ upload_1.json
+
+
+
+
+
+
+ expected_1.json
+
+
+
+
+
+
+
+
+
+
+
+
+ testlum-self-bucket-one
+
+
+
+
diff --git a/REGRESSION/resources/scenarios/storage/s3/self/upload_1.json b/REGRESSION/resources/scenarios/storage/s3/self/upload_1.json
new file mode 100644
index 0000000..14e817d
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/self/upload_1.json
@@ -0,0 +1 @@
+{"Testlum": "TOP"}
\ No newline at end of file
diff --git a/REGRESSION/resources/scenarios/storage/s3/self/upload_2.json b/REGRESSION/resources/scenarios/storage/s3/self/upload_2.json
new file mode 100644
index 0000000..e123982
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/self/upload_2.json
@@ -0,0 +1 @@
+{"Testlum": "The Best"}
diff --git a/REGRESSION/resources/scenarios/storage/s3/variations/expected_1.json b/REGRESSION/resources/scenarios/storage/s3/variations/expected_1.json
new file mode 100644
index 0000000..a09bdfb
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/variations/expected_1.json
@@ -0,0 +1 @@
+{"Testlum": "TOP"}
diff --git a/REGRESSION/resources/scenarios/storage/s3/variations/expected_2.json b/REGRESSION/resources/scenarios/storage/s3/variations/expected_2.json
new file mode 100644
index 0000000..e123982
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/variations/expected_2.json
@@ -0,0 +1 @@
+{"Testlum": "The Best"}
diff --git a/REGRESSION/resources/scenarios/storage/s3/variations/scenario.xml b/REGRESSION/resources/scenarios/storage/s3/variations/scenario.xml
new file mode 100644
index 0000000..71931d8
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/variations/scenario.xml
@@ -0,0 +1,63 @@
+
+
+
+ Variations S3 test: create bucket, upload file, verify upload, remove file and bucket using variation variables - runs once per CSV row
+ S3 Variations scenario
+
+
+
+ variations_s3.csv
+ s3
+
+
+
+
+ {{variable_bucket}}
+
+
+
+
+
+ {{variable_file}}
+
+
+
+
+
+
+ expected_{{variable_expected}}.json
+
+
+
+
+
+
+
+ {{content_expected}}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{variable_bucket}}
+
+
+
+
diff --git a/REGRESSION/resources/scenarios/storage/s3/variations/upload_1.json b/REGRESSION/resources/scenarios/storage/s3/variations/upload_1.json
new file mode 100644
index 0000000..a09bdfb
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/variations/upload_1.json
@@ -0,0 +1 @@
+{"Testlum": "TOP"}
diff --git a/REGRESSION/resources/scenarios/storage/s3/variations/upload_2.json b/REGRESSION/resources/scenarios/storage/s3/variations/upload_2.json
new file mode 100644
index 0000000..e123982
--- /dev/null
+++ b/REGRESSION/resources/scenarios/storage/s3/variations/upload_2.json
@@ -0,0 +1 @@
+{"Testlum": "The Best"}
diff --git a/docker/docker-compose-mega-test-app.yaml b/docker/docker-compose-mega-test-app.yaml
index d116b75..5b8b050 100644
--- a/docker/docker-compose-mega-test-app.yaml
+++ b/docker/docker-compose-mega-test-app.yaml
@@ -23,7 +23,7 @@ services:
context: ../TEST-API
dockerfile: Dockerfile.jenkins
image: mega-test-api
- container_name: maga-test-api
+ container_name: mega-test-api
ports:
- "8080:8080"
networks:
@@ -41,7 +41,7 @@ services:
context: ../TEST-API
dockerfile: Dockerfile.local
image: mega-test-api
- container_name: maga-test-api
+ container_name: mega-test-api
ports:
- "8080:8080"
networks:
diff --git a/docker/init-data/aws/create-functions.sh b/docker/init-data/aws/create-functions.sh
index 6ba8dd4..96ae688 100755
--- a/docker/init-data/aws/create-functions.sh
+++ b/docker/init-data/aws/create-functions.sh
@@ -18,6 +18,14 @@ awslocal lambda create-function \
--role arn:aws:iam::000000000000:role/lambda-role \
--region eu-central-1
+awslocal lambda create-function \
+ --function-name=student-scores-python \
+ --runtime python3.9 \
+ --zip-file fileb:///etc/localstack/init/ready.d/$ZIP_FILE_NAME \
+ --handler student-scores-python.lambda_handler \
+ --role arn:aws:iam::000000000000:role/lambda-role \
+ --region eu-central-1
+
awslocal lambda create-function \
--function-name=http-request-js \
--runtime nodejs18.x \
diff --git a/docker/init-data/aws/lambda-functions.zip b/docker/init-data/aws/lambda-functions.zip
index 11f7aea..c3d536c 100644
Binary files a/docker/init-data/aws/lambda-functions.zip and b/docker/init-data/aws/lambda-functions.zip differ