"""Amazon SQS connector.""" import boto3 import sentry_sdk from botocore.exceptions import BotoCoreError from daemon_asset_copy import config from ddtrace import tracer def get_sqs_resource(): """Get SQS resource. Returns: boto3.resources.base.ServiceResource: SQS resource represents object-oriented interface of SQS. """ try: if config.SQS_ENDPOINT: sqs_resource = boto3.resource( 'sqs', endpoint_url=config.SQS_ENDPOINT, region_name=config.AWS_REGION ) else: sqs_resource = boto3.resource('sqs', region_name=config.AWS_REGION) return sqs_resource except BotoCoreError as e: if sentry_sdk: sentry_sdk.capture_exception(str(e)) return None @tracer.wrap() def get_queue(queue_url, sqs_resource=None): """Get Amazon SQS queue. Args: queue_url (str): The Queue's url identifier. sqs_resource (boto3.resources.base.ServiceResource): SQS resource. Returns: Queue: Instance of Amazon SQS queue. """ sqs = sqs_resource if sqs_resource else get_sqs_resource() if sqs is None: return None queue = sqs.Queue(queue_url) return queue