<aside> 💡 presigned URL를 추출하는 방법은 총 세가지(S3 콘솔, AWS Explorer, SDK)가 있지만 본 실습에서는 Python SDK를 사용하고자 한다.

</aside>

참고

Sharing objects using presigned URLs

# 한장씩 url 추출, 단 data_path 필요
def get_dataset_url(bucket_name, data_path, timeout=3600):
    url = boto3.client("s3").generate_presigned_url(
        ClientMethod="get_object", Params={"Bucket": bucket_name, "Key": data_path}, ExpiresIn=timeout
    )
    return url

# 원하는 bucket, target dir에 있는 모든 데이터셋의 url 추출
def get_dataset_urls(bucket_name, target_dir="", timeout=3600):
    objects = boto3.client("s3").list_objects(Bucket=bucket_name, Prefix=target_dir)
    urls = {}
    for object in objects["Contents"]:
        name = object["Key"].split("/")[-1]
        urls[name] = boto3.client("s3").generate_presigned_url(
            ClientMethod="get_object", Params={"Bucket": bucket_name, "Key": object["Key"]}, ExpiresIn=timeout
        )
    return urls