示例#1
0
def list_queues(**args):
    """
    info:
        list sqs queues

    args:
        [session] <session.obj>
        [sort_by] <url|name>

    return:
        list | False
    """

    session = args.get('session', create_session())
    sort_by = args.get('sort_by', 'url')
    sqs = session.resource('sqs')

    try:
        if sort_by == 'url':
            return [x.url for x in sqs.queues.all()]

        if sort_by == 'name':
            return [x.url.split('/')[-1] for x in sqs.queues.all()]

    except Exception as err:
        log.error(err)
        return False
示例#2
0
def create_queue(**args):
    """
    info:
        create aws sqs queue

    args:
        [session]    <session.obj>
        [queue_name] <queue_name>
        [attributes] <{'DelaySeconds': '5', ...}>

    return:
        queue_url | False
    """

    session = args.get('session', create_session())
    queue_name = args.get('queue_name', None)
    attributes = args.get('attributes', {})
    sqs = session.resource('sqs')

    if not queue_name:
        log.error('missing argument: queue_name')
        return False

    try:
        queue = sqs.create_queue(QueueName=queue_name, Attributes=attributes)

        return queue.url

    except Exception as err:
        log.error(err)
        return False
示例#3
0
def delete_queu(**args):
    """
    info:
        delete aws sqs queue

    args:
        [session]    <session.obj>
        [queue_url]  <queue_url> (default)
        [queue_name] <queue_name>

    return:
        True | False
    """

    session = args.get('session', create_session())
    queue_url = args.get('queue_url', None)
    queue_name = args.get('queue_name', None)
    sqs = session.client('sqs')

    if not queue_name and queue_url:
        log.error('missing argument: queue_name or queue_url')
        return False

    if queue_name:
        queue_url = get_queue_url(session=session, queue_name=queue_name)

    try:
        sqs.delete_queu(QueueUrl=queue_url)
        log.info(f'queue deleted: {queue_url}')
        return True

    except Exception as err:
        log.error(err)
        return False
示例#4
0
def get_queue_url(**args):
    """
    info:
        return queue url by given queue name

    args:
        [session]    <session.obj>
        [queue_name] <queue_name>

    return:
        url | False
    """

    session = args.get('session', create_session())
    queue_name = args.get('queue_name', None)

    if not queue_name:
        log.error('missing argument: queue_name')
        return False

    try:
        for queue_url in list_queues(session=session):
            if queue_url.split('/')[-1] == queue_name:
                return queue_url
        log.error(f'queue name does not exist: {queue_name}')
        return False

    except Exception as err:
        log.error(err)
        return False
示例#5
0
def list_users(**args):
    session = args.get('session', create_session())

    try:
        iam = session.resource('iam')
        return [x.name for x in iam.users.all()]

    except Exception as err:
        log.error({'args': args, 'error': err})
        return False
示例#6
0
def list_buckets(**args):
    session = args.get('session', create_session())

    try:
        s3 = session.resource('s3')
        return [x.name for x in s3.buckets.all()]

    except Exception as err:
        log.error(err)
        return False
示例#7
0
def create_user(**args):
    session = args.get('session', create_session())
    user_name = args.get('user_name')

    try:
        iam = session.client('iam')
        iam.create_user(UserName=user_name)
        return True

    except Exception as err:
        log.error({'args': args, 'error': err})
示例#8
0
def list_user_access_keys(**args):
    session = args.get('session', create_session())
    user_name = args.get('user_name')

    try:
        iam = session.client('iam')
        keys = iam.list_access_keys(UserName=user_name)
        return [x['AccessKeyId'] for x in keys['AccessKeyMetadata']]

    except Exception as err:
        log.error(err)
        return False
示例#9
0
def delete_bucket(**args):
    session = args.get('session', create_session())
    bucket_name = args.get('bucket_name')

    try:
        s3 = session.resource('s3')
        s3.Bucket(bucket_name).delete()
        log.info('S3 bucket deleted: %s', bucket_name)
        return True

    except Exception as err:
        log.error(err)
        return False
示例#10
0
def list_files(**args):
    session = args.get('session', create_session())
    bucket_name = args.get('bucket_name')
    profile_name = args.get('profile_name', 'default')

    try:
        s3 = session.resource('s3')
        bucket = s3.Bucket(bucket_name)
        return [x.key for x in bucket.objects.all()]

    except Exception as err:
        log.error({'args': args, 
                   'error': err})
        return False
示例#11
0
def create_user_access_key(**args):
    session = args.get('session', create_session())
    user_name = args.get('user_name')

    try:
        iam = session.client('iam')
        key_info = iam.create_access_key(UserName=user_name)['AccessKey']
        return {
            'aws_access_key_id': key_info['AccessKeyId'],
            'aws_secret_access_key': key_info['SecretAccessKey']
        }

    except Exception as err:
        log.error(err)
        return False
示例#12
0
def dowload_file(**args):
    session = args.get('session', create_session())
    bucket_name = args.get('bucket_name')
    file_name = args.get('file_name')
    destination = args.get('destination', file_name)

    try:
        s3 = session.resource('s3')
        s3.Bucket(bucket_name).download_file(
            file_name,
            destination)
    
    except Exception as err:
        log.error(err)
        return False
示例#13
0
def upload_file(**args):
    session = args.get('session', create_session())
    file_name = args.get('file_name')
    bucket_name = args.get('bucket_name')

    try:
        s3 = session.client('s3')
        s3.upload_file(
            file_name,
            bucket_name,
            file_name)

    except Exception as err:
        log.error({'args': args, 
                   'error': err})
        return False
示例#14
0
def bucket_info(**args):
    session = args.get('session', create_session())
    bucket_name = args.get('bucket_name')

    try:
        s3 = session.resource('s3')
        bucket = s3.Bucket(bucket_name)
        size_list = [x.size for x in bucket.objects.all()]
        region_name = s3.meta.client.get_bucket_location(
            Bucket=bucket_name)['LocationConstraint']

        return {'bucket_name': bucket_name,
                'bucket_size_b': sum(size_list),
                'number_of_files': len(size_list),
                'region_name': region_name}

    except Exception as err:
        log.error(err)
        return False
示例#15
0
def create_bucket(**args):
    session = args.get('session', create_session())
    bucket_prefix = args.get('bucket_prefix', str(uuid.uuid4()))
    bucket_name = args.get('bucket_name', 'unnamed')

    try:
        region_name = session.region_name
        s3 = session.resource('s3')
        s3.create_bucket(
            Bucket=f'{bucket_name}-{bucket_prefix}',
            CreateBucketConfiguration={
                'LocationConstraint': region_name})
          
        log.info('S3 bucket created: %s %s', 
            region_name, 
            bucket_name)
        return True
        
    except Exception as err:
        log.error(err)
        return False
示例#16
0
def send_message(**args):
    """
    info:
        send a message to a aws sqs queue

    args:
        [session]    <session.obj>
        [queue_name] <queue_name>
        [body]       <message_body>
        [attributes] <{}>

    return:
        True | False
    """

    session = args.get('session', create_session())
    queue_name = args.get('queue_name', None)
    body = args.get('body', None)
    attributes = args.get('attributes', {})
    sqs = session.resource('sqs')

    if not queue_name:
        log.error('missing argument: queue_name')
        return False

    if not body:
        log.error('missing argument: body')
        return False

    try:
        queue = sqs.get_queue_by_name(QueueName=queue_name)
        queue.send_message(MessageBody=body, MessageAttributes=attributes)
        log.info(f'message send to queue: {queue_name} {body}')
        return True

    except Exception as err:
        log.error(err)
        return False