"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
AWS 의 S3 서비스에 업로드되어 있는 파일을 대상으로 각 파일 별로 Pre Signed URL을 동시에 몇개까지 생성 가능한지 간략히 알아보았습니다.

질문 >
AWS 의 S3 서비스에 업로드되어 있는 파일을 대상으로 각 파일 별로 Pre Signed URL을 동시에 몇개까지 생성 가능한가요?
답변 >
AWS S3의 Pre-Signed URL 생성 개수에는 제한이 없으며, 원하는 만큼 동시 생성 가능합니다.
하지만, 몇 가지 고려해야 할 사항이 있습니다.
🔹 Pre-Signed URL 생성 개수 제한 없음
- Pre-Signed URL은 AWS S3의 API 요청을 통해 동적으로 생성되므로,
- 이론적으로는 무제한으로 생성 가능합니다.
- 제한이 걸리는 경우는 AWS 계정의 API 요청 속도(Throttle Limit) 때문입니다.
🔹 API 요청 속도 제한 (Rate Limit)
Pre-Signed URL은 S3의 generate_presigned_url() API를 통해 생성됩니다.
AWS는 한 번에 과도한 API 요청을 하면 속도를 제한(Throttle)할 수 있습니다.
- 일반적으로 초당 수천 개의 Pre-Signed URL을 생성해도 문제없습니다.
- 하지만, 대량 생성 시 API 호출이 제한될 가능성이 있음
- (예: 초당 5,500건 이상의 API 요청 발생 시 조정될 수 있음)
- AWS 서비스 제한 요청(Request Limit Increase) 을 통해 API 속도 증가 요청 가능 (AWS Support)
🔹 Pre-Signed URL 동시 생성 최적화 방법
- 병렬 처리 (멀티스레딩) 사용
- Pre-Signed URL 생성은 S3 API를 호출하는 것이므로,
- 멀티스레딩/비동기 처리를 사용하여 속도를 높일 수 있습니다.
- 미리 URL을 생성하고 캐싱
- URL을 필요할 때마다 생성하는 대신 미리 생성 후 저장하여 사용 가능
- 예: Redis, DynamoDB 등에 저장해 두고 활용
- CloudFront + 서명된 쿠키(Signed Cookies) 사용
- 대량의 Pre-Signed URL을 관리하기 어려운 경우,하나의 서명된 쿠키로 접근 제어 가능
- CloudFront Signed Cookies를 사용하면 여러 파일에 대한
🔹 Python으로 다수의 Pre-Signed URL 생성 예제
import boto3
import concurrent.futures
s3_client = boto3.client('s3')
def generate_presigned_url(bucket_name, object_key, expiration=3600):
return s3_client.generate_presigned_url(
'get_object',
Params={'Bucket': bucket_name, 'Key': object_key},
ExpiresIn=expiration
)
# 여러 개의 Pre-Signed URL을 병렬로 생성
def generate_multiple_urls(bucket_name, keys):
with concurrent.futures.ThreadPoolExecutor() as executor:
future_to_key = {executor.submit(generate_presigned_url, bucket_name, key): key for key in keys}
return {future_to_key[future]: future.result() for future in concurrent.futures.as_completed(future_to_key)}
# 예제 실행
bucket_name = "your-bucket-name"
object_keys = ["file1.jpg", "file2.jpg", "file3.jpg"]
signed_urls = generate_multiple_urls(bucket_name, object_keys)
for key, url in signed_urls.items():
print(f"{key}: {url}")
🚀 실행 결과
file1.jpg: <https://your-bucket.s3.amazonaws.com/file1.jpg?AWSAccessKeyId=>...
file2.jpg: <https://your-bucket.s3.amazonaws.com/file2.jpg?AWSAccessKeyId=>...
file3.jpg: <https://your-bucket.s3.amazonaws.com/file3.jpg?AWSAccessKeyId=>...
🔹 결론
✅ Pre-Signed URL은 제한 없이 동시 생성 가능
✅ 하지만 API 요청 속도 제한이 있을 수 있으므로 최적화 필요
✅ 대량 생성 시 멀티스레딩, 캐싱, CloudFront 서명 쿠키 활용 고려
🎬 유튜브 채널 🎬
위로그@WiLog
📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리(Willee) 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌
www.youtube.com
🎬 치지직 채널 🎬
위로그 채널 - CHZZK
지금, 스트리밍이 시작됩니다. 치지직-
chzzk.naver.com