日々精進

新しく学んだことを書き留めていきます

boto3でS3にファイルがあるかをチェックする

なぜかexistsメソッドは存在せず、以下のように例外が発生するかどうかで判別する。これはやりたくないが。。

class S3Repository:
    def __init__(self, bucket_name: str):
        s3: ServiceResource = boto3.resource('s3')
        self.bucket_name = bucket_name
        self.bucket = s3.Bucket(bucket_name)

    def exists(self, path: str) -> bool:
        try:
            self.bucket.Object(path).load()
        except botocore.exceptions.ClientError as e:
            if e.response['Error']['Code'] == "404":
                return False
            else:
                raise Exception()
        else:

もっとシンプルにやれないものか。

参考: stackoverflow.com