From d796ecc305a561389f360de7e9b5e34b93ab981d Mon Sep 17 00:00:00 2001
From: Sebastian Rieger <sebastian.rieger@informatik.hs-fulda.de>
Date: Mon, 20 Jun 2022 18:01:18 +0200
Subject: [PATCH] added API gateway, as in contrast to AWS Academy, localstack
 allows API gateway creation

---
 .../aws-lambda-localstack/start.py            | 34 +++++++++++--------
 .../aws-lambda-localstack/stop.py             | 16 +++++++--
 2 files changed, 34 insertions(+), 16 deletions(-)

diff --git a/example-projects/counter-demo/aws-lambda-localstack/start.py b/example-projects/counter-demo/aws-lambda-localstack/start.py
index 578229f..47a188e 100644
--- a/example-projects/counter-demo/aws-lambda-localstack/start.py
+++ b/example-projects/counter-demo/aws-lambda-localstack/start.py
@@ -53,6 +53,15 @@ s3Resource = boto3.resource('s3', endpoint_url=endpoint_url)
 lClient = boto3.client('lambda', endpoint_url=endpoint_url)
 apiClient = boto3.client("apigatewayv2", endpoint_url=endpoint_url)
 
+print("Deleting old API gateway...")
+print("------------------------------------")
+response = apiClient.get_apis()
+for api in response["Items"]:
+    if api["Name"] == functionName + '-api':
+        responseDelete = apiClient.delete_api(
+            ApiId=api["ApiId"]
+        )
+
 print("Deleting old function...")
 print("------------------------------------")
 try:
@@ -130,17 +139,14 @@ print("Lambda Function and S3 Bucket to store the counter are available. Sadly,
 #
 # https://348yxdily0.execute-api.eu-central-1.amazonaws.com/default/cloudcomp-counter-demo
 
-# print("creating API gateway...")
-# print("------------------------------------")
-#
-# #apiArn = ""
-# response = apiClient.create_api(
-#     Name=functionName + '-api',
-#     ProtocolType='HTTP',
-#     Target=lambdaFunctionARN
-# )
-# #apiArn=response['']
-#
-# #response = lClient.create_event_source_mapping(
-# #    EventSourceArn=apiArn,
-# #)
+print("creating API gateway...")
+print("------------------------------------")
+
+response = apiClient.create_api(
+    Name=functionName + '-api',
+    ProtocolType='HTTP',
+    Target=lambdaFunctionARN
+)
+apiArn=response
+
+print("API Endpoint can be reached at: http://" + apiArn["ApiEndpoint"])
diff --git a/example-projects/counter-demo/aws-lambda-localstack/stop.py b/example-projects/counter-demo/aws-lambda-localstack/stop.py
index 5406f2a..2457433 100644
--- a/example-projects/counter-demo/aws-lambda-localstack/stop.py
+++ b/example-projects/counter-demo/aws-lambda-localstack/stop.py
@@ -7,6 +7,8 @@ import boto3
 #
 ################################################################################################
 
+endpoint_url = "http://localhost.localstack.cloud:4566"
+
 # you need to create a bucket in S3, here in this demo it is called "cloudcomp-counter", but
 # bucket names need to be world wide unique ;) The demo looks for a file that is named
 # "us-east-1" (same as our default region) in the bucket and expects a number in it to increase
@@ -40,9 +42,19 @@ def cleanup_s3_bucket(s3_bucket):
 
 client = boto3.setup_default_session(region_name=region)
 s3Client = boto3.client('s3')
-s3Resource = boto3.resource('s3')
-lClient = boto3.client('lambda')
+s3Resource = boto3.resource('s3', endpoint_url=endpoint_url)
+lClient = boto3.client('lambda', endpoint_url=endpoint_url)
+apiClient = boto3.client("apigatewayv2", endpoint_url=endpoint_url)
+
 
+print("Deleting old API gateway...")
+print("------------------------------------")
+response = apiClient.get_apis()
+for api in response["Items"]:
+    if api["Name"] == functionName + '-api':
+        responseDelete = apiClient.delete_api(
+            ApiId=api["ApiId"]
+        )
 
 print("Deleting old function...")
 print("------------------------------------")
-- 
GitLab