본문 바로가기
컴퓨터

👨‍💻 [AWS] AWS 의 S3 서비스에 업로드되어 있는 파일을 대상으로 각 파일 별로 Pre Signed URL을 동시에 몇개까지 생성 가능한가요?

by 밝음의기둥 2025. 4. 1.
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

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 동시 생성 최적화 방법

  1. 병렬 처리 (멀티스레딩) 사용
    • Pre-Signed URL 생성은 S3 API를 호출하는 것이므로,
    • 멀티스레딩/비동기 처리를 사용하여 속도를 높일 수 있습니다.
  2. 미리 URL을 생성하고 캐싱
    • URL을 필요할 때마다 생성하는 대신 미리 생성 후 저장하여 사용 가능
    • 예: Redis, DynamoDB 등에 저장해 두고 활용
  3. 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


반응형