@@ -41,14 +41,19 @@ def file_exists_on_s3(self, key):
4141 '''
4242 try :
4343 self .client .head_object (Bucket = self .bucket .name , Key = key )
44- return True
44+ return True , None
4545 except ClientError as e :
46+ msg = None
4647 if e .response ['Error' ]['Code' ] in ['404' , '412' ]:
47- return False
48+ msg = f'File { key } does not exist in the specified S3 bucket path.'
49+ return False , msg
50+ if e .response ['Error' ]['Code' ] in ['403' ]:
51+ msg = f'Access Denied: Unable to access files in the specified S3 bucket path: { key } '
52+ return False , msg
4853 else :
49- self . log . error ( 'Unknown S3 client error!' )
54+ msg = f 'Unknown S3 client error!'
5055 self .log .exception (e )
51- return False
56+ return False , msg
5257
5358 def put_file_obj (self , key , data , md5_base64 ):
5459 return self .bucket .put_object (Key = key ,
@@ -62,23 +67,48 @@ def upload_file_obj(self, key, data, config=None, extra_args={'ACL': BUCKET_OWNE
6267 def get_object_size (self , key ):
6368 try :
6469 res = self .client .head_object (Bucket = self .bucket_name , Key = key )
65- return res ['ContentLength' ]
70+ return res ['ContentLength' ], None
6671 except ClientError as e :
67- return None
72+ msg = None
73+ if e .response ['Error' ]['Code' ] in ['404' , '412' ]:
74+ msg = f'File { key } does not exist in the specified S3 bucket path.'
75+ return None , msg
76+ if e .response ['Error' ]['Code' ] in ['403' ]:
77+ msg = f'Access Denied: Unable to access files in the specified S3 bucket path: { key } '
78+ return None , msg
79+ else :
80+ msg = f'Unknown S3 client error!'
81+ self .log .exception (e )
82+ return None , msg
6883
6984 def same_size_file_exists (self , key , file_size ):
70- return file_size == self .get_object_size (key )
85+ file_size1 , msg = self .get_object_size (key )
86+ if msg :
87+ self .log .error (msg )
88+ return False
89+ return file_size == file_size1
7190
7291 def download_object (self , key , local_file_path ):
7392 try :
7493 self .bucket .download_file ( key , local_file_path )
75- return True
94+ return True , None
7695 except ClientError as ce :
77- self .log .error (ce )
78- return False
96+ msg = None
97+ if e .response ['Error' ]['Code' ] in ['404' , '412' ]:
98+ msg = f'File { key } does not exist in the specified S3 bucket path.'
99+ return False , msg
100+ if e .response ['Error' ]['Code' ] in ['403' ]:
101+ msg = f'Access Denied: Unable to access files in the specified S3 bucket path: { key } '
102+ return False , msg
103+ else :
104+ msg = f'Unknown S3 client error!'
105+ self .log .exception (e )
106+ return False , msg
79107 except Exception as e :
108+ #
109+ msg = f'Unknown error!'
80110 self .log .error (e )
81- return False
111+ return False ,
82112
83113 def close (self ):
84114 self .client .close ()
0 commit comments