Skip to main content
Storage λ“œλΌμ΄λ²„λŠ” μ €μž₯된 파일의 URL을 μƒμ„±ν•˜λŠ” 방법을 μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€. URL λΉŒλ”λ₯Ό μ‚¬μš©ν•˜μ—¬ CDN, μ»€μŠ€ν…€ 도메인, Signed URL 등을 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

URL λΉŒλ”λž€?

URL λΉŒλ”λŠ” 파일 ν‚€(key)λ₯Ό URL둜 λ³€ν™˜ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
μ˜ˆμ‹œ:

fs λ“œλΌμ΄λ²„ URL λΉŒλ”

fs λ“œλΌμ΄λ²„λŠ” λ°˜λ“œμ‹œ urlBuilder 섀정이 ν•„μš”ν•©λ‹ˆλ‹€.

κΈ°λ³Έ μ„€μ •

κ²°κ³Ό:

μ»€μŠ€ν…€ 도메인

κ²°κ³Ό:
μ‚¬μš© 사둀: 별도 파일 μ„œλ²„λ‚˜ CDN

정적 파일 μ„œλΉ™

fs λ“œλΌμ΄λ²„λ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” Fastify static ν”ŒλŸ¬κ·ΈμΈμ΄ ν•„μš”ν•©λ‹ˆλ‹€.
효과:

S3 λ“œλΌμ΄λ²„ URL λΉŒλ”

S3 λ“œλΌμ΄λ²„λŠ” 기본적으둜 S3 URL을 μƒμ„±ν•˜μ§€λ§Œ, urlBuilder둜 μ»€μŠ€ν„°λ§ˆμ΄μ§• κ°€λŠ₯ν•©λ‹ˆλ‹€.

κΈ°λ³Έ λ™μž‘ (urlBuilder μ—†μŒ)

κ²°κ³Ό:

CloudFront CDN

CDN을 톡해 νŒŒμΌμ„ μ„œλΉ™ν•˜λ €λ©΄:
μž₯점:
  • λΉ λ₯Έ 전솑 속도 (μ—£μ§€ λ‘œμΌ€μ΄μ…˜)
  • λŒ€μ—­ν­ λΉ„μš© 절감
  • 캐싱

μ»€μŠ€ν…€ 도메인

μ„€μ • 방법:
  1. CloudFront 배포 생성
  2. Origin: S3 버킷
  3. CNAME: cdn.example.com
  4. DNS: cdn.example.com β†’ CloudFront

동적 URL 생성

URL λΉŒλ”μ—μ„œ ν™˜κ²½λ³€μˆ˜λ‚˜ λ‘œμ§μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν™˜κ²½λ³„ URL

κ²°κ³Ό:

경둜 λ³€ν™˜

버전 관리

κ²°κ³Ό:

Signed URL (S3)

S3λŠ” μž„μ‹œ μ ‘κ·Ό URL을 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

getSignedUrl()

κ²°κ³Ό:
μš©λ„:
  • Private 파일 μž„μ‹œ 곡유
  • λ³΄μ•ˆμ΄ ν•„μš”ν•œ λ‹€μš΄λ‘œλ“œ
  • μ‹œκ°„ μ œν•œ μ•‘μ„ΈμŠ€

UploadedFile의 signedUrl

μ‹€μ „ 예제

1. CDN + 버전 관리

κ²°κ³Ό:

2. 닀쀑 CDN

μ‚¬μš©:

3. ν•΄μ‹œ 기반 URL

κ²°κ³Ό:

4. 쑰건뢀 URL

5. 리사이징 μ„œλΉ„μŠ€

URL νƒ€μž…

Sonamu StorageλŠ” 두 κ°€μ§€ URL νƒ€μž…μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

Unsigned URL

일반 곡개 URL
νŠΉμ§•:
  • 영ꡬ적
  • 만료 μ—†μŒ
  • Public 파일용

Signed URL (S3)

μ„œλͺ…λœ μž„μ‹œ URL
νŠΉμ§•:
  • μž„μ‹œμ  (만료 μ‹œκ°„ μ„€μ •)
  • μ„œλͺ…μœΌλ‘œ 보호됨
  • Private 파일용
만료 μ‹œκ°„ μ˜΅μ…˜:

μ£Όμ˜μ‚¬ν•­

URL λΉŒλ” μ‚¬μš© μ‹œ μ£Όμ˜μ‚¬ν•­:
  1. fsλŠ” urlBuilder ν•„μˆ˜: fs λ“œλΌμ΄λ²„λŠ” λ°˜λ“œμ‹œ urlBuilder μ„€μ •
  2. 정적 파일 μ„œλΉ™: fs μ‚¬μš© μ‹œ static ν”ŒλŸ¬κ·ΈμΈ ν•„μš”
  3. HTTPS μ‚¬μš©: ν”„λ‘œλ•μ…˜μ—μ„œλŠ” HTTPS URL μ‚¬μš©
  4. 경둜 인코딩: 특수 문자 처리
  5. μΊμ‹œ λ¬΄νš¨ν™”: URL λ³€κ²½ μ‹œ CDN μΊμ‹œ κ³ λ €

CloudFront μ„€μ •

CloudFrontλ₯Ό URL λΉŒλ”μ™€ ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

1. CloudFront 배포 생성

  1. AWS Console β†’ CloudFront
  2. β€œCreate Distribution” 클릭
  3. Origin:
    • Origin Domain: my-bucket.s3.ap-northeast-2.amazonaws.com
    • Origin Path: (λΉ„μ›Œλ‘ )
  4. Default Cache Behavior:
    • Viewer Protocol Policy: Redirect HTTP to HTTPS
    • Allowed HTTP Methods: GET, HEAD, OPTIONS
  5. Create Distribution

2. Domain 확인

배포 생성 ν›„ Domain Name 확인:

3. URL λΉŒλ” μ„€μ •

4. μ»€μŠ€ν…€ 도메인 (선택)

  1. Route 53μ—μ„œ CNAME λ ˆμ½”λ“œ 생성:
  2. CloudFront 배포 μ„€μ •:
    • Alternate Domain Names (CNAMEs): cdn.example.com
    • SSL Certificate: μΈμ¦μ„œ μΆ”κ°€
  3. URL λΉŒλ” μˆ˜μ •:

λ‹€μŒ 단계

Storage Manager

μ—¬λŸ¬ λ””μŠ€ν¬ κ΄€λ¦¬ν•˜κΈ°

μŠ€ν† λ¦¬μ§€ λ“œλΌμ΄λ²„

fs, S3 λ“œλΌμ΄λ²„ μ„€μ •

파일 μ €μž₯ 및 쑰회

파일 μ—…λ‘œλ“œ 및 λ‹€μš΄λ‘œλ“œ