From eea0acf149c3c9f82047db678aad644d1336dd66 Mon Sep 17 00:00:00 2001 From: Andrei Vishniakov <31008759+avishniakov@users.noreply.github.com> Date: Wed, 16 Oct 2024 10:16:54 +0200 Subject: [PATCH] reusable fix --- .../s3/artifact_stores/s3_artifact_store.py | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/zenml/integrations/s3/artifact_stores/s3_artifact_store.py b/src/zenml/integrations/s3/artifact_stores/s3_artifact_store.py index d7963ee5ef..88f1839173 100644 --- a/src/zenml/integrations/s3/artifact_stores/s3_artifact_store.py +++ b/src/zenml/integrations/s3/artifact_stores/s3_artifact_store.py @@ -132,16 +132,7 @@ def __init__( super().__init__(*args, **kwargs) # determine bucket versioning status - key, secret, token, region = self.get_credentials() - s3 = boto3.resource( - "s3", - aws_access_key_id=key, - aws_secret_access_key=secret, - aws_session_token=token, - region_name=region, - ) - bucket = s3.Bucket(self.config.bucket) - versioning = bucket.Versioning() + versioning = self._boto3_bucket.Versioning() if versioning.status == "Enabled": self.is_versioned = True logger.warning( @@ -474,10 +465,27 @@ def _remove_previous_file_versions(self, path: PathType) -> None: if isinstance(path, bytes): path = path.decode() _, prefix = split_s3_path(path) - s3 = boto3.resource("s3") - bucket = s3.Bucket(self.config.bucket) - for version in bucket.object_versions.filter(Prefix=prefix): + for version in self._boto3_bucket.object_versions.filter( + Prefix=prefix + ): if not version.is_latest: version.delete() return + + @property + def _boto3_bucket(self) -> boto3.resources.factory.s3.Bucket: + """Get the boto3 bucket object. + + Returns: + The boto3 bucket object. + """ + key, secret, token, region = self.get_credentials() + s3 = boto3.resource( + "s3", + aws_access_key_id=key, + aws_secret_access_key=secret, + aws_session_token=token, + region_name=region, + ) + return s3.Bucket(self.config.bucket)