def send_lambda_request(fn, tests, encounter_id, player): awslambda = boto.connect_awslambda(aws_access_key_id=AWS_ACCESS_KEY, aws_secret_access_key=AWS_SECRET_KEY) player_fn = fn battle_tests = tests battle_test_string = "[" + ",".join(battle_tests) + "]" data = { "fn": base64.b64encode(player_fn), "tests": base64.b64encode(battle_test_string), "encounter_id": encounter_id, "player": player } awslambda.invoke_async("BattleJSTesting", json.dumps(data))
def configure_lambda(stream): """ Configure Lambda function to use Kinesis """ print("Configured AWS Lambda service") IAM_ROLE_ARN = get_iam_role_arn() aws_lambda = boto.connect_awslambda() event_source = kinesis_stream(stream) response_add_event_source = aws_lambda.add_event_source(event_source, FUNCTION_NAME, IAM_ROLE_ARN, batch_size=100, parameters=None) event_source_id = response_add_event_source['UUID'] while response_add_event_source['IsActive'] != 'true': print('Waiting for the event source to become active') sleep(5) response_add_event_source = aws_lambda.get_event_source(event_source_id) print('Added Kinesis as event source for Lambda function')
import os from time import sleep from zipfile import ZipFile import boto from boto.kinesis.exceptions import ResourceInUseException import config # To enable logging: # boto.set_stream_logger('boto') # Initialize the AWS clients. sns = boto.connect_sns() kinesis = boto.connect_kinesis() aws_lambda = boto.connect_awslambda() ml = boto.connect_machinelearning() lambda_execution_policy = open('lambdaExecutionPolicyTemplate.json').read().format(**config.AWS) aws_account_id = config.AWS["awsAccountId"] region = config.AWS["region"] kinesis_stream = config.AWS["kinesisStream"] sns_topic = config.AWS["snsTopic"] lambda_function_name = config.AWS["lambdaFunctionName"] lambda_execution_role = config.AWS["lambdaExecutionRole"] lambda_trust_policy = '{"Statement":[{"Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"},"Action":"sts:AssumeRole"}]}' def role_exists(iam, role_name):
import os from time import sleep from zipfile import ZipFile # To enable logging: # boto.set_stream_logger('boto') def read_file_as_string_then_format(file_name, args): with open(file_name) as file_handle: return file_handle.read().format(**args) # Initialize the AWS clients. sns = boto.connect_sns() kinesis = boto.connect_kinesis() aws_lambda = boto.connect_awslambda() ml = boto.connect_machinelearning() # Load the config file. with open('create-lambda-function.config') as config: config = json.load(config) lambda_execution_policy = read_file_as_string_then_format('lambdaExecutionPolicyTemplate.json', config) lambda_invocation_policy = read_file_as_string_then_format('lambdaInvocationPolicyTemplate.json', config) aws_account_id = config["awsAccountId"] region = config["region"] kinesis_stream = config["kinesisStream"] sns_topic = config["snsTopic"]
import sys sys.path.append(".") # Adds higher directory to python modules path. import base64 import boto import settings iam_client = boto.connect_iam( aws_access_key_id=settings.AWS_ACCESS_KEY_ID, aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY) lambda_client = boto.connect_awslambda( aws_access_key_id=settings.AWS_ACCESS_KEY_ID, aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY) env_variables = dict() # Environment Variables with open('data/lambda.zip', 'rb') as f: zipped_code = base64.b64encode(f.read()) role = iam_client.get_role('lambda_basic_execution') lambda_client.upload_function( 'stee_eye_prepare_json', zipped_code, 'python3.6', role['get_role_response']['get_role_result']['role']['arn'], 'main.handler', 'event')
def setUp(self): self.awslambda = boto.connect_awslambda()