def list_keys()

in aws_codeseeder/services/s3.py [0:0]


def list_keys(bucket: str) -> List[Dict[str, str]]:
    """List the keys/objects in an S3 Buket

    Parameters
    ----------
    bucket : str
        S3 Bucket name

    Returns
    -------
    List[Dict[str, str]]
        List of Keys and VersionIds
    """
    client_s3 = boto3_client("s3")
    paginator = client_s3.get_paginator("list_object_versions")
    response_iterator = paginator.paginate(Bucket=bucket, PaginationConfig={"PageSize": 1_000})
    keys: List[Dict[str, str]] = []
    for page in response_iterator:
        if "DeleteMarkers" in page:
            for delete_marker in page["DeleteMarkers"]:
                keys.append(
                    {
                        "Key": delete_marker["Key"],
                        "VersionId": delete_marker["VersionId"],
                    }
                )
        if "Versions" in page:
            for version in page["Versions"]:
                keys.append({"Key": version["Key"], "VersionId": version["VersionId"]})
    return keys