기본 ꡬ쑰
drivers
μ¬μ©ν μ€ν λ¦¬μ§ λλΌμ΄λ²λ€μ μ μν©λλ€."fs"(λ‘컬 νμΌ μμ€ν
)μ "s3"(AWS S3) λ μ’
λ₯λ₯Ό μ§μν©λλ€.
νμ
: Record<DriverKey, () => DriverContract> (DriverKey = "fs" | "s3")
saveToDisk(diskName, key) νΈμΆμμ μ¬μ©ν λλΌμ΄λ²λ₯Ό λͺ
μμ μΌλ‘ μ§μ ν©λλ€. νκ²½λ³λ‘ λ€λ₯Έ λλΌμ΄λ²λ₯Ό μ¬μ©νλ €λ©΄ νκ²½ λ³μλ₯Ό νμ©νμ¬ μ½λ λ 벨μμ λΆκΈ°ν μ μμ΅λλ€.
fs λλΌμ΄λ²
λ‘컬 νμΌ μμ€ν μ νμΌμ μ μ₯ν©λλ€. κ°λ° νκ²½μ μ ν©ν©λλ€.location
νμΌμ΄ μ μ₯λ λλ ν 리 κ²½λ‘μ λλ€. νμ :string (νμ)
visibility
νμΌμ μ κ·Ό κΆνμ μ€μ ν©λλ€. νμ :"public" | "private"
"public": λꡬλ URLλ‘ μ κ·Ό κ°λ₯"private": μΈμ¦λ μ¬μ©μλ§ μ κ·Ό κ°λ₯
urlBuilder
νμΌ URLμ μμ±νλ ν¨μλ€μ μ μν©λλ€.- key: νμΌμ κ³ μ ν€ (μ:
"profile-images/user-123.jpg") - λ°ν: μ κ·Ό κ°λ₯ν URL
- key: νμΌμ κ³ μ ν€
- expiresIn: λ§λ£ μκ° (μ΄, μ νμ )
- λ°ν: μμ URL
s3 λλΌμ΄λ²
AWS S3μ νμΌμ μ μ₯ν©λλ€. νλ‘λμ νκ²½μ μ ν©ν©λλ€.credentials
AWS μΈμ¦ μ 보λ₯Ό μ€μ ν©λλ€. νμ : (νμ)region
S3 λ²ν·μ΄ μμΉν AWS 리μ μ λλ€. νμ :string (νμ)
ap-northeast-2- μμΈus-east-1- λ²μ§λμ λΆλΆus-west-2- μ€λ κ³€eu-west-1- μμΌλλap-southeast-1- μ±κ°ν¬λ₯΄
bucket
νμΌμ μ μ₯ν S3 λ²ν· μ΄λ¦μ λλ€. νμ :string (νμ)
visibility
S3 κ°μ²΄μ ACL(Access Control List)μ μ€μ ν©λλ€. νμ :"public" | "private"
"public": νΌλΈλ¦ μ½κΈ° νμ© (public-readACL)"private": νλΌμ΄λΉ (privateACL, κΈ°λ³Έκ°)
μ€μ μμ
κ°λ° νκ²½: fsλ§ μ¬μ©
fs + S3 (νκ²½λ³ μ ν)
λ λλΌμ΄λ²λ₯Ό λͺ¨λ λ±λ‘νκ³ , μ½λμμ νκ²½ λ³μλ₯Ό κΈ°λ°μΌλ‘ μ¬μ©ν λλΌμ΄λ²λ₯Ό μ νν©λλ€.νμ¬
DriverKeyλ "fs"μ "s3" λ κ°μ§λ§ μ§μν©λλ€. 곡κ°/λΉκ³΅κ° νμΌμ λ³λ λ²ν·μ λλμ΄ μ μ₯νλ λ€μ€ λ²ν· ꡬμ±μ νμ¬ μ§μλμ§ μμ΅λλ€.νμΌ μ λ‘λ μ¬μ©
μ€ν λ¦¬μ§ μ€μ ν@upload λ°μ½λ μ΄ν°μ BufferedFile.saveToDisk()λ₯Ό μ¬μ©νμ¬ νμΌμ μ
λ‘λν μ μμ΅λλ€.
S3 λ²ν· μ€μ
S3λ₯Ό μ¬μ©νκΈ° μ μ AWS μ½μμμ λ²ν·μ μμ±νκ³ μ€μ ν΄μΌ ν©λλ€.1. λ²ν· μμ±
2. CORS μ€μ
νλ‘ νΈμλμμ μ§μ μ λ‘λνλ €λ©΄ CORSλ₯Ό μ€μ ν©λλ€. S3 μ½μ β λ²ν· β κΆν β CORS ꡬμ±:3. IAM κΆν
Sonamuκ° S3μ μ κ·Όνλ €λ©΄ μ μ ν IAM κΆνμ΄ νμν©λλ€. μ΅μ κΆν μ μ± :μ£Όμμ¬ν
1. νκ²½ λ³μ 보μ
2. visibility μ ν
3. νμΌ κ²½λ‘ μ€κ³
λ€μ λ¨κ³
μ€ν λ¦¬μ§ μ€μ μ μλ£νλ€λ©΄:- file-upload - APIμμ νμΌ μ λ‘λ ꡬν
- cache - μΊμ μ€μ
- advanced-features/storage - κ³ κΈ μ€ν λ¦¬μ§ κΈ°λ₯