"""AWS (S3) helpers.""" import re _S3_HTTP_PATH = r'^https://(?P.+)\.s3\.amazonaws\.com/(?P.+)$' _S3_PROTOCOL_PATH = r'^s3://(?P[^/]+)/(?P.+)$' def parse_s3_url(s3_url: str) -> tuple[str, str]: """Get bucket and key name from s3 url. Args: s3_url (str): s3 bucket url Returns: tuple: tuple of bucket and key name. """ if not (match := re.search(_S3_HTTP_PATH, s3_url)): match = re.search(_S3_PROTOCOL_PATH, s3_url) if not match: raise ValueError(f'The S3 url {s3_url} is not valid.') return match.group('bucket'), match.group('key')