initial version of counter lambda function
This commit is contained in:
		
							
								
								
									
										41
									
								
								example-projects/counter-demo/aws-lambda/invoke-function.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								example-projects/counter-demo/aws-lambda/invoke-function.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					import boto3
 | 
				
			||||||
 | 
					import json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################################
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Configuration Parameters
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					################################################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					region = 'eu-central-1'
 | 
				
			||||||
 | 
					functionName = 'cloudcomp-counter-lambda-demo'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################################
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# boto3 code
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					################################################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					client = boto3.setup_default_session(region_name=region)
 | 
				
			||||||
 | 
					lClient = boto3.client('lambda')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print("Invoking function...")
 | 
				
			||||||
 | 
					print("------------------------------------")
 | 
				
			||||||
 | 
					try:
 | 
				
			||||||
 | 
					    response = lClient.invoke(
 | 
				
			||||||
 | 
					        FunctionName=functionName,
 | 
				
			||||||
 | 
					        Payload='{ "input": "1" }'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					except lClient.exceptions.ResourceNotFoundException:
 | 
				
			||||||
 | 
					    print('Function not available. No need to delete it.')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					streamingBody = response['Payload']
 | 
				
			||||||
 | 
					result = streamingBody.read()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print(json.dumps(response, indent=4, sort_keys=True, default=str))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print('Payload:\n' + str(result))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										42
									
								
								example-projects/counter-demo/aws-lambda/lambda_function.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								example-projects/counter-demo/aws-lambda/lambda_function.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					# import json
 | 
				
			||||||
 | 
					import base64
 | 
				
			||||||
 | 
					import boto3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def lambda_handler(event, context):
 | 
				
			||||||
 | 
					    s3_client = boto3.client('s3')
 | 
				
			||||||
 | 
					    response = s3_client.get_object(Bucket='vertsys-counter', Key='eu-central-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='vertsys-counter', Key='eu-central-1', Body=str(counter))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    output = ('<html><head><title>TCPTimeCounter REST Service</title>\n'
 | 
				
			||||||
 | 
					              '<meta http-equiv="refresh" content="5"/></head><body>\n'
 | 
				
			||||||
 | 
					              '<h2>HS Fulda - TCPTimeCounter REST Service</h2>\n'
 | 
				
			||||||
 | 
					              '<p><b>HTML-Output:</b> ' + str(counter) + '</p></body>\n'
 | 
				
			||||||
 | 
					              '<form method=POST action="/default/cloudcomp-counter-demo">\n'
 | 
				
			||||||
 | 
					              '<input type="hidden" name="input" value="1">\n'
 | 
				
			||||||
 | 
					              '<input type="submit" value="Increment"></form>\n'
 | 
				
			||||||
 | 
					              # '<hr><b>Lambda Event:</b><br>' + repr(event) + '\n'
 | 
				
			||||||
 | 
					              # '<hr><b>Lambda Context:</b><br>' + repr(context) + '\n'
 | 
				
			||||||
 | 
					              '</body></html>\n')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					        'statusCode': 200,
 | 
				
			||||||
 | 
					        'headers': {
 | 
				
			||||||
 | 
					            'Content-Type': 'text/html',
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        'body': output
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
							
								
								
									
										55
									
								
								example-projects/counter-demo/aws-lambda/start.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								example-projects/counter-demo/aws-lambda/start.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					import boto3
 | 
				
			||||||
 | 
					import zipfile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################################
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Configuration Parameters
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					################################################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					region = 'eu-central-1'
 | 
				
			||||||
 | 
					functionName = 'cloudcomp-counter-lambda-demo'
 | 
				
			||||||
 | 
					roleName = 'arn:aws:iam::309000625112:role/service-role/cloudcomp-counter-demo-role-6rs7pah3'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################################
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# boto3 code
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					################################################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					client = boto3.setup_default_session(region_name=region)
 | 
				
			||||||
 | 
					lClient = boto3.client('lambda')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print("Deleting old function...")
 | 
				
			||||||
 | 
					print("------------------------------------")
 | 
				
			||||||
 | 
					try:
 | 
				
			||||||
 | 
					    response = lClient.delete_function(
 | 
				
			||||||
 | 
					        FunctionName=functionName,
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					except lClient.exceptions.ResourceNotFoundException:
 | 
				
			||||||
 | 
					    print('Function not available. No need to delete it.')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print("creating new function...")
 | 
				
			||||||
 | 
					print("------------------------------------")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					zf = zipfile.ZipFile('lambda-deployment-archive.zip', 'w', zipfile.ZIP_DEFLATED)
 | 
				
			||||||
 | 
					zf.write('lambda_function.py')
 | 
				
			||||||
 | 
					zf.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					with open('lambda-deployment-archive.zip', mode='rb') as file:
 | 
				
			||||||
 | 
					    zipfileContent = file.read()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    response = lClient.create_function(
 | 
				
			||||||
 | 
					        FunctionName=functionName,
 | 
				
			||||||
 | 
					        Runtime='python3.8',
 | 
				
			||||||
 | 
					        Role=roleName,
 | 
				
			||||||
 | 
					        Code={
 | 
				
			||||||
 | 
					            'ZipFile': zipfileContent
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        Handler='lambda_function.lambda_handler',
 | 
				
			||||||
 | 
					        Publish=True,
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
							
								
								
									
										33
									
								
								example-projects/counter-demo/aws-lambda/stop.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								example-projects/counter-demo/aws-lambda/stop.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					import boto3
 | 
				
			||||||
 | 
					import zipfile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################################
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Configuration Parameters
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					################################################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					region = 'eu-central-1'
 | 
				
			||||||
 | 
					functionName = 'cloudcomp-counter-lambda-demo'
 | 
				
			||||||
 | 
					roleName = 'arn:aws:iam::309000625112:role/service-role/cloudcomp-counter-demo-role-6rs7pah3'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################################
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# boto3 code
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					################################################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					client = boto3.setup_default_session(region_name=region)
 | 
				
			||||||
 | 
					lClient = boto3.client('lambda')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print("Deleting old function...")
 | 
				
			||||||
 | 
					print("------------------------------------")
 | 
				
			||||||
 | 
					try:
 | 
				
			||||||
 | 
					    response = lClient.delete_function(
 | 
				
			||||||
 | 
					        FunctionName=functionName,
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					except lClient.exceptions.ResourceNotFoundException:
 | 
				
			||||||
 | 
					    print('Function not available. No need to delete it.')
 | 
				
			||||||
		Reference in New Issue
	
	Block a user