def get_bucket_notification_configuration(self, bucket_name): '''Returns the notification configuration of a bucket.''' try: return self.get_client().get_bucket_notification_configuration(Bucket=bucket_name) except ClientError as ce: error_msg = "Error getting S3 bucket configuration" logger.log_exception(error_msg, ce)
def create_bucket(self, bucket_name): try: if not self.client.find_bucket_by_name(bucket_name): # Create the bucket if not found self.client.create_bucket(bucket_name) except ClientError as ce: error_msg = "Error creating the bucket '{0}'".format(self.input_bucket) logger.log_exception(error_msg, ce)
def put_bucket_notification_configuration(self, bucket_name, notification): '''Enables notifications of specified events for a bucket.''' try: self.get_client().put_bucket_notification_configuration(Bucket=bucket_name, NotificationConfiguration=notification) except ClientError as ce: error_msg = "Error configuring S3Client bucket" logger.log_exception(error_msg, ce)
def download_file(self, bucket_name, file_key, file): '''Adds an object to a bucket. https://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.download_fileobj''' try: self.get_client().download_fileobj(bucket_name, file_key, file) except ClientError as ce: error_msg = "Error downloading file '{0}' from bucket '{1}'".format(file_key, bucket_name) logger.log_exception(error_msg, ce)
def list_files(self, bucket_name, key='', continuation_token=None): '''Adds an object to a bucket. https://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.download_fileobj''' try: if continuation_token: return self.get_client().list_objects_v2(Bucket=bucket_name, Prefix=key, ContinuationToken=continuation_token) else: return self.get_client().list_objects_v2(Bucket=bucket_name, Prefix=key) except ClientError as ce: error_msg = "Error listing files from bucket '{0}'".format(bucket_name) logger.log_exception(error_msg, ce)
def find_bucket_by_name(self, bucket_name): try: # If this call works the bucket exists self.get_client().get_bucket_location(Bucket=bucket_name) return True except ClientError as ce: # Function not found if ce.response['Error']['Code'] == 'NoSuchBucket': return False else: error_msg = "Error, bucket '{0}' not found".format(bucket_name) logger.log_exception(error_msg, ce)
def upload_file(self, bucket_name, file_key, file_data): try: self.client.put_object(bucket_name, file_key, file_data) except ClientError as ce: error_msg = "Error uploading the file '{0}' to the S3 bucket '{1}'".format(file_key, bucket_name) logger.log_exception(error_msg, ce)
def add_bucket_folder(self, bucket_name, folder_name): try: self.client.put_object(bucket_name, folder_name) except ClientError as ce: error_msg = "Error creating the folder '{0}' in the bucket '{1}'".format(folder_name, bucket_name) logger.log_exception(error_msg, ce)
def get_bucket_file_list(self, bucket_name, prefix): try: return self.get_client().list_objects_v2(Bucket=bucket_name, Prefix=prefix) except ClientError as ce: error_msg = "Error listing files from bucket '{0}'".format(bucket_name) logger.log_exception(error_msg, ce)
def create_bucket(self, bucket_name): try: self.get_client().create_bucket(ACL='private', Bucket=bucket_name) except ClientError as ce: error_msg = "Error creating the S3 bucket '{0}'".format(bucket_name) logger.log_exception(error_msg, ce)
def add_bucket_folder(self): try: self.client.upload_file(self.input_bucket, self.input_folder) except ClientError as ce: error_msg = "Error creating the folder '{0}' in the bucket '{1}'".format(self.input_bucket, self.input_folder) logger.log_exception(error_msg, ce)