diff --git a/example-projects/counter-demo/aws-lambda-localstack/aws-mockup-credentials/config b/example-projects/counter-demo/aws-lambda-localstack/aws-mockup-credentials/config new file mode 100644 index 0000000..a8c11c6 --- /dev/null +++ b/example-projects/counter-demo/aws-lambda-localstack/aws-mockup-credentials/config @@ -0,0 +1,2 @@ +[default] +region = us-east-1 diff --git a/example-projects/counter-demo/aws-lambda-localstack/aws-mockup-credentials/credentials b/example-projects/counter-demo/aws-lambda-localstack/aws-mockup-credentials/credentials new file mode 100644 index 0000000..a1738e6 --- /dev/null +++ b/example-projects/counter-demo/aws-lambda-localstack/aws-mockup-credentials/credentials @@ -0,0 +1,3 @@ +[default] +aws_access_key_id=test +aws_secret_access_key=test diff --git a/example-projects/counter-demo/aws-lambda-localstack/invoke-function.py b/example-projects/counter-demo/aws-lambda-localstack/invoke-function.py new file mode 100644 index 0000000..8f0a7a0 --- /dev/null +++ b/example-projects/counter-demo/aws-lambda-localstack/invoke-function.py @@ -0,0 +1,47 @@ +from datetime import date +import json +import boto3 + +################################################################################################ +# +# Configuration Parameters +# +################################################################################################ + +endpoint_url = "http://localhost.localstack.cloud:4566" + +# region = 'eu-central-1' +region = 'us-east-1' +functionName = 'cloudcomp-counter-lambda-demo' + + +################################################################################################ +# +# boto3 code +# +################################################################################################ + + +client = boto3.setup_default_session(region_name=region) +lClient = boto3.client('lambda', endpoint_url=endpoint_url) + + +print("Invoking function...") +print("------------------------------------") +try: + response = lClient.invoke( + FunctionName=functionName, + Payload='{ "input": "1" }' + ) +except lClient.exceptions.ResourceNotFoundException: + print('Function not available.') + +streamingBody = response['Payload'] +result = streamingBody.read() +jsonResult = json.loads(result) + +print(json.dumps(response, indent=4, sort_keys=True, default=str)) + +print('Payload:\n' + str(result) + "\n") + +print("Counter is now at: " + jsonResult['headers']['x-hsfd-counter']) diff --git a/example-projects/counter-demo/aws-lambda-localstack/lambda_function.py b/example-projects/counter-demo/aws-lambda-localstack/lambda_function.py new file mode 100644 index 0000000..a611d8b --- /dev/null +++ b/example-projects/counter-demo/aws-lambda-localstack/lambda_function.py @@ -0,0 +1,52 @@ +# import json +import base64 +import os +import boto3 + + +def lambda_handler(event, context): + print('## ENVIRONMENT VARIABLES') + print(os.environ) + print('## EVENT') + print(event) + + globally_unique_s3_group_bucket_name = os.environ.get("bucketName") + print('Trying to access bucket: ' + globally_unique_s3_group_bucket_name) + + s3_client = boto3.client('s3') + response = s3_client.get_object(Bucket=globally_unique_s3_group_bucket_name, Key='us-east-1') + + counter = int(response['Body'].read().decode('utf-8')) + + debug = "" + incr = 0 + if 'body' in event: + body = str(base64.b64decode(event['body']).decode("utf-8")) + if body.startswith('input'): + incr = int(body.rsplit('=')[1]) + elif 'input' in event: + incr = int(event['input']) + + if incr is not 0: + counter = counter + incr + response = s3_client.put_object(Bucket=globally_unique_s3_group_bucket_name, Key='us-east-1', Body=str(counter)) + + output = ('
HTML-Output: ' + str(counter) + '
\n' + '\n' + # '