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
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
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
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
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
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
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})
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
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
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
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
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
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
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
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
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