def run(event, context): queue_2 = Queue( url= 'https://sqs.eu-west-2.amazonaws.com/244560807427/unit_tests_temp_queue' ) queue_2.push(event) return {'status': 'ok'}
def test_attributes_create__exists__list(self): assert Queue().exists() is False with Temp_Queue() as temp_Queue: assert 'QueueArn' in set(temp_Queue.queue.attributes()) assert 'unit_tests_temp_queue_' in temp_Queue.queue_name assert temp_Queue.queue.exists() is True assert len(Queue().list()) > 0 self.result = temp_Queue.queue.attributes()
def test_lambda_write_to_queue(self): queue_name = 'unit_tests_temp_queue' # Queue(queue_name).create() lambda_name = 'osbot_aws.lambdas.dev.write_queue' message = 'this is a message sent from an lambda function...' queue = Queue(queue_name) queue_url = queue.url() payload = {'queue_url': queue_url, 'message': message} lambda_obj = Lambda_Package(lambda_name) assert lambda_obj.invoke(payload) == {'status': 'ok'} assert Queue(queue_name).pull() == message
def _test_s3_bucket_to_sqs(self): s3 = S3() queue = Queue('unit_tests_temp_queue') #.create() bucket_name = 'bucket-42-temp' region = 'eu-west-2' lambda_obj = Lambda_Package( 'osbot_aws.lambdas.pocs.send_event_data_to_queue' ).update_with_root_folder() lambda_arn = lambda_obj._lambda.function_Arn() bucket_arn = s3.bucket_arn(bucket_name) queue_arn = queue.arn() #lambda_obj.invoke({'a':43}) #s3.bucket_create(s3_bucket, region) def add_notification(source_arn): result = lambda_obj._lambda.client().permission_add( FunctionName=lambda_arn, StatementId='1', Action='lambda:InvokeFunction', Principal='s3.amazonaws.com', SourceArn=source_arn, SourceAccount=IAM().account_id()) Dev.pprint(result) #Dev.pprint(result == { 'Statement': '{"Sid":"1","Effect":"Allow","Principal":{"Service":"s3.amazonaws.com"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:eu-west-2:244560807427:function:osbot_aws_lambdas_pocs_send_event_data_to_queue","Condition":{"StringEquals":{"AWS:SourceAccount":"244560807427"},"ArnLike":{"AWS:SourceArn":"arn:aws:sqs:eu-west-2:244560807427:unit_tests_temp_queue"}}}'}) #add_notification(bucket_arn) #return # resource = s3.s3_bucket_notification(bucket_name) # config = { 'LambdaFunctionConfigurations': [{ 'LambdaFunctionArn': lambda_arn , # 'Events' : ['s3:ObjectCreated:*']}]} # Dev.pprint(config) # Dev.pprint(resource.put(NotificationConfiguration=config)) #Dev.pprint(resource.lambda_function_configurations) #Dev.pprint(s3.s3().get_bucket_notification_configuration(Bucket=bucket_name)) #bucket_notification = s3.BucketNotification('bucket_name') #Dev.pprint(bucket_notification) #s3.boto_client_s3().bucket_notification() Dev.pprint(queue.pull()) Dev.pprint(queue.pull())
class Temp_Queue: def __init__(self): self.name_prefix = 'unit_tests_temp_queue_' self.queue_name = Misc.random_string_and_numbers( prefix=self.name_prefix) self.queue = None def __enter__(self): self.queue = Queue(self.queue_name).create() return self def __exit__(self, type, value, traceback): assert self.queue.delete() is True
def _test_sqs_to_lamdba_to_sqs(self): queue_1 = Queue('unit_tests_temp_queue__1').create() queue_2 = Queue('unit_tests_temp_queue__2').create() lambda_obj = Lambda_Package('osbot_aws.lambdas.pocs.send_event_data_to_queue') #.update_with_root_folder() payload = {'queue_url': queue_2.url(), 'message': 'test 123'} #queue_1.attributes_update({'VisibilityTimeout': '61'}) # needs to be bigger than lambda timeout queue_1_arn = queue_1.attributes().get('QueueArn') function_arn = lambda_obj._lambda.function_Arn() #Dev.pprint(lambda_obj.role_arn) # needed to add the extra priv to pull SQS messages #result = lambda_obj._lambda.boto_lambda().list_event_source_mappings(EventSourceArn=queue_1_arn) # result = lambda_obj._lambda.boto_lambda().create_event_source_mapping( # EventSourceArn=queue_1_arn, # FunctionName=function_arn, # Enabled=True, # BatchSize=1 # ) queue_1.push('some message 1') queue_1.push('some message 2') queue_1.push('some message 3') queue_1.push('some message 4') #lambda_obj.invoke(payload) sleep(2) Dev.pprint(queue_2.pull()) Dev.pprint(queue_2.pull()) Dev.pprint(queue_2.pull()) Dev.pprint(queue_2.pull()) queue_1.delete() queue_2.delete()
def run(event, context): queue_url = event.get('queue_url') message = event.get('message') Queue(url=queue_url).push(message) return {'status': 'ok'}
def __enter__(self): self.queue = Queue(self.queue_name).create() return self