Ejemplo n.º 1
0
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'}
Ejemplo n.º 2
0
 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()
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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())
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
    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()
Ejemplo n.º 7
0
def run(event, context):
    queue_url = event.get('queue_url')
    message = event.get('message')
    Queue(url=queue_url).push(message)
    return {'status': 'ok'}
Ejemplo n.º 8
0
 def __enter__(self):
     self.queue = Queue(self.queue_name).create()
     return self