From d796ecc305a561389f360de7e9b5e34b93ab981d Mon Sep 17 00:00:00 2001 From: Sebastian Rieger 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("------------------------------------")