"""Entrypoint for lambda function.""" import boto3 import src.config as config from src.connectors.logger import get_current_logger from src.logic.parsers import parse_queue_name class InvocationContext: """This is for passing around the invoke context to logger.""" correlation_id = None def handler(event, context): """Entrypoint to Lambda function. Args: event (optional): AWS Lambda event dependent structure with metadata. context (LambdaContext): AWS Lambda context. """ InvocationContext.correlation_id = context.aws_request_id log = get_current_logger(InvocationContext.correlation_id) log.info('Running "{}"'.format(config.LAMBDA_NAME)) queue_urls = [] client = boto3.client('sqs') for search_prefix in config.QUEUE_SEARCH_PREFIXES: response = client.list_queues( QueueNamePrefix=search_prefix) if 'QueueUrls' in response: queue_urls.extend(response['QueueUrls']) log.info('Tagging "{} queues."'.format(len(queue_urls))) for url in queue_urls: # get the queue name from url url_sections = url.split('/') queue_name = url_sections[len(url_sections) - 1] log.info('Working on "{}."'.format(queue_name)) try: tags = parse_queue_name(queue_name) except ValueError: pass else: if all(tags): client.tag_queue( QueueUrl=url, Tags={ 'environment': tags[0], 'encoder_id': str(tags[1]), 'dpm_priority': str(tags[2]), 'store_priority': str(tags[3]) }) log.info('Finishing "{}"'.format(config.LAMBDA_NAME))