<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