From 694aa448a40d6e10ca66aeb2a1a1ba8e8bc11817 Mon Sep 17 00:00:00 2001 From: Pepe Fagoaga Date: Mon, 11 Dec 2023 09:36:26 +0100 Subject: [PATCH] fix(s3): Handle NoSuchBucket in the service (#3173) --- .../providers/aws/services/s3/s3_service.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/prowler/providers/aws/services/s3/s3_service.py b/prowler/providers/aws/services/s3/s3_service.py index 841f152c..12a85b41 100644 --- a/prowler/providers/aws/services/s3/s3_service.py +++ b/prowler/providers/aws/services/s3/s3_service.py @@ -101,6 +101,15 @@ class S3(AWSService): if "MFADelete" in bucket_versioning: if "Enabled" == bucket_versioning["MFADelete"]: bucket.mfa_delete = True + except ClientError as error: + if error.response["Error"]["Code"] == "NoSuchBucket": + logger.warning( + f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) + else: + logger.error( + f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) except Exception as error: if bucket.region: logger.error( @@ -153,6 +162,15 @@ class S3(AWSService): bucket.logging_target_bucket = bucket_logging["LoggingEnabled"][ "TargetBucket" ] + except ClientError as error: + if error.response["Error"]["Code"] == "NoSuchBucket": + logger.warning( + f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) + else: + logger.error( + f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) except Exception as error: if regional_client: logger.error( @@ -224,6 +242,15 @@ class S3(AWSService): grantee.permission = grant["Permission"] grantees.append(grantee) bucket.acl_grantees = grantees + except ClientError as error: + if error.response["Error"]["Code"] == "NoSuchBucket": + logger.warning( + f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) + else: + logger.error( + f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) except Exception as error: if regional_client: logger.error( @@ -241,6 +268,15 @@ class S3(AWSService): bucket.policy = json.loads( regional_client.get_bucket_policy(Bucket=bucket.name)["Policy"] ) + except ClientError as error: + if error.response["Error"]["Code"] == "NoSuchBucket": + logger.warning( + f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) + else: + logger.error( + f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) except Exception as error: if "NoSuchBucketPolicy" in str(error): bucket.policy = {}