Skip to content

Commit 8f5211f

Browse files
authored
Merge pull request #238 from bryanyang0528/fixed_delete_fail_but_no_exception_raise
raise Exception if delete_objects failed
2 parents 1e97689 + babeff4 commit 8f5211f

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

awswrangler/s3.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from boto3.s3.transfer import TransferConfig # type: ignore
2020
from pandas.io.common import infer_compression # type: ignore
2121

22+
2223
from awswrangler import _data_types, _utils, catalog, exceptions
2324

2425
_COMPRESSION_2_EXT: Dict[Optional[str], str] = {None: "", "gzip": ".gz", "snappy": ".snappy"}
@@ -289,7 +290,26 @@ def _split_paths_by_bucket(paths: List[str]) -> Dict[str, List[str]]:
289290
def _delete_objects(bucket: str, keys: List[str], client_s3: boto3.client) -> None:
290291
_logger.debug("len(keys): %s", len(keys))
291292
batch: List[Dict[str, str]] = [{"Key": key} for key in keys]
292-
client_s3.delete_objects(Bucket=bucket, Delete={"Objects": batch})
293+
res = client_s3.delete_objects(Bucket=bucket, Delete={"Objects": batch})
294+
deleted = res.get('Deleted')
295+
errors = res.get('Errors')
296+
if errors:
297+
for i in errors:
298+
raise exceptions.ServiceApiError(
299+
'Path: s3://{}/{}\n'
300+
'Error Code: {}\n'
301+
'Message: {}'.format(
302+
bucket,
303+
i.get('Key'),
304+
i.get('Code'),
305+
i.get('Message')
306+
)
307+
)
308+
else:
309+
for i in deleted:
310+
_logger.debug(
311+
's3://{}/{} has been deleted'.format(bucket, i.get('Key'))
312+
)
293313

294314

295315
def describe_objects(

0 commit comments

Comments
 (0)