diff --git a/prowler/providers/aws/services/codeartifact/codeartifact_service.py b/prowler/providers/aws/services/codeartifact/codeartifact_service.py index 0719e98a..1765bef4 100644 --- a/prowler/providers/aws/services/codeartifact/codeartifact_service.py +++ b/prowler/providers/aws/services/codeartifact/codeartifact_service.py @@ -110,15 +110,21 @@ class CodeArtifact: sortBy="PUBLISHED_TIME", ) ) - latest_version = latest_version_information["versions"][0][ - "version" - ] - latest_origin_type = latest_version_information["versions"][ - 0 - ]["origin"]["originType"] - latest_status = latest_version_information["versions"][0][ - "status" - ] + latest_version = "" + latest_origin_type = "UNKNOWN" + latest_status = "Published" + if latest_version_information.get("versions"): + latest_version = latest_version_information["versions"][ + 0 + ].get("version") + latest_origin_type = ( + latest_version_information["versions"][0] + .get("origin", {}) + .get("originType", "UNKNOWN") + ) + latest_status = latest_version_information["versions"][ + 0 + ].get("status", "Published") packages.append( Package( @@ -215,7 +221,7 @@ class OriginInformation(BaseModel): class LatestPackageVersionStatus(Enum): - """Possibel values for the package status""" + """Possible values for the package status""" Published = "Published" Unfinished = "Unfinished" diff --git a/prowler/providers/aws/services/ecr/ecr_service.py b/prowler/providers/aws/services/ecr/ecr_service.py index a7a0f7f6..ab6ff0f8 100644 --- a/prowler/providers/aws/services/ecr/ecr_service.py +++ b/prowler/providers/aws/services/ecr/ecr_service.py @@ -2,6 +2,7 @@ import threading from json import loads from typing import Optional +from botocore.exceptions import ClientError from pydantic import BaseModel from prowler.lib.logger import logger @@ -155,11 +156,21 @@ class ECR: logger.info("ECR - List Tags...") try: for repository in self.repositories: - regional_client = self.regional_clients[repository.region] - response = regional_client.list_tags_for_resource( - resourceArn=repository.arn - )["tags"] - repository.tags = response + try: + regional_client = self.regional_clients[repository.region] + response = regional_client.list_tags_for_resource( + resourceArn=repository.arn + )["tags"] + repository.tags = response + + except ClientError as error: + if error.response["Error"]["Code"] == "RepositoryNotFoundException": + logger.warning( + f"{regional_client.region} --" + f" {error.__class__.__name__}[{error.__traceback__.tb_lineno}]:" + f" {error}" + ) + continue except Exception as error: logger.error( f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"