[AWS/S3] S3 Presigned Url

2025. 3. 9. 14:11Β·πŸ„ AWS

 

ν•΄λ‹Ή κ²Œμ‹œλ¬Όμ€ μœ„ λ™μ˜μƒμ„ μ°Έκ³ ν•˜μ—¬ μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

 

Amazon S3 μ†Œκ°œ / 객체 μ—…λ‘œλ“œ 방법

Amazon S3λŠ”, Amazon Simple Storage Service의 μ•½μžλ‘œ, μ•„λ§ˆμ‘΄μ˜ 객체 μŠ€ν† λ¦¬μ§€ μ„œλΉ„μŠ€λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

데이터λ₯Ό S3에 μ €μž₯ν•˜λ €λ©΄, bucketκ³Ό κ°μ²΄λΌλŠ” λ¦¬μ†ŒμŠ€λ₯Ό μ‚¬μš©ν•΄μ•Όν•˜λŠ”λ°,

μ—¬κΈ°μ„œ 버킷은 S3에 μ €μž₯된 객체에 λŒ€ν•œ μ»¨ν…Œμ΄λ„ˆ, κ°μ²΄λŠ” 파일과 ν•΄λ‹Ή 파일의 메타 데이터λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

 

이 S3에 객체λ₯Ό μ—…λ‘œλ“œν•˜λŠ” 방법은 κ°„λ‹¨ν•©λ‹ˆλ‹€.

aws μ½˜μ†”μ—μ„œ S3 μ„œλΉ„μŠ€μ— μ§„μž…ν•˜μ—¬ 버킷을 μƒμ„±ν•˜κ³ , κ·Έ μ•ˆμ— 객체λ₯Ό μ—…λ‘œλ“œν•˜λ©΄ λ©λ‹ˆλ‹€.

μ΄λ ‡κ²Œ 객체λ₯Ό μ—…λ‘œλ“œν•˜λŠ” λ°©λ²•μœΌλ‘œλŠ” 크게 4κ°€μ§€λ‘œ 이야기해볼 수 μžˆμŠ΅λ‹ˆλ‹€!

  • Presigned URL μ‚¬μš©
  • νŒŒμΌμ„ AWS μ½˜μ†”μ—μ„œ 직접 μ—…λ‘œλ“œ
  • HTTP μ„œλΈ”λ › λ¦¬ν€˜μŠ€νŠΈμ— Input Stream을 μ΄μš©ν•˜μ—¬ S3에 직접 νŒŒμΌμ„ μ „μ†‘ν•˜λŠ” Stream 방식
  • μŠ€ν”„λ§μ—μ„œ μ œκ³΅ν•˜λŠ” λ©€ν‹°νŒŒνŠΈ 파일 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” 방식

 

μ΄λ ‡κ²Œ 객체λ₯Ό μ—…λ‘œλ“œ ν•œ ν›„, S3의 νŒŒμΌμ„ κ³΅μœ ν•˜λŠ” 방법도 크게 4κ°€μ§€λ‘œ 이야기해 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

  • λͺ¨λ“  νŒŒμΌμ„ νΌλΈ”λ¦­μœΌλ‘œ λ§Œλ“€κΈ°
  • IAM 자격증λͺ… 곡유 (Access Key Pair)
  • IAM μ‚¬μš©μž λΆ€μ—¬ν•˜κΈ°
  • Presigned URL

 

각각의 λ°©λ²•μ˜ μž₯단점을 κ°„λž΅ν•˜κ²Œ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

1. λͺ¨λ“  νŒŒμΌμ„ νΌλΈ”λ¦­μœΌλ‘œ λ§Œλ“€κΈ°

이 방식은, λ³„λ„μ˜ 관리가 ν•„μš” μ—†λ‹€λŠ” μž₯점이 μžˆμ§€λ§Œ,

μ•„λ¬΄λ‚˜ νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œ ν•  수 μžˆλ‹€λŠ” 단점이 μ‘΄μž¬ν•©λ‹ˆλ‹€. λ³΄μ•ˆμƒμœΌλ‘œ μ’‹μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. (μ•„λ¬΄λž˜λ„ ..)

 

2. IAM 자격증λͺ… 곡유(Access Key Pair)

λ‹€μŒμœΌλ‘œ IAM 자격증λͺ…을 κ³΅μœ ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆλ‹€.

이 λ°©λ²•μ˜ 경우, μ§€μ •ν•œ μ‚¬λžŒλ§Œ 곡유 κ°€λŠ₯ν•˜μ§€λ§Œ,

자격증λͺ… 유좜/λ³€κ²½ μ‹œ 곡유자 λͺ¨λ‘μ—κ²Œ λ‹€μ‹œ λΆ€μ—¬κ°€ ν•„μš”ν•˜κ³ ,

이 자격증λͺ…을 개인이 μ§€λ‹ˆκ³  있기 λ•Œλ¬Έμ— 자격증λͺ…μ˜ 관리가 μ–΄λ ΅μŠ΅λ‹ˆλ‹€. λ˜ν•œ, 영ꡬ 자격 증λͺ…이라 λ³΄μ•ˆμ΄ λ›°μ–΄λ‚˜μ§€ μ•Šλ‹€λŠ” 단점이 μžˆμŠ΅λ‹ˆλ‹€.

 

3. IAM μ‚¬μš©μž λΆ€μ—¬ν•˜κΈ°

μ΄λ ‡κ²Œ IAM μ‚¬μš©μžλ₯Ό λΆ€μ—¬ν•˜λŠ” 방법도 λ§ˆμ°¬κ°€μ§€λ‘œ μ§€μ •ν•œ μ‚¬λžŒλ§Œ 곡유 κ°€λŠ₯ν•˜λ‹€λŠ” μž₯점이 μ‘΄μž¬ν•˜μ§€λ§Œ,

IAM μ‚¬μš©μžμ˜ μˆ«μžλŠ” 5000개둜 μ œν•œλ˜μ–΄ 있으며,

λͺ¨λ“  μœ μ €μ—κ²Œ IAM μ‚¬μš©μžλ₯Ό λΆ€μ—¬ν•˜λŠ” 과정이 ν•„μš”ν•΄ λ²ˆκ±°λ‘­μŠ΅λ‹ˆλ‹€.

λ˜ν•œ, μœ μ§€λ³΄μˆ˜κ°€ μ–΄λ ΅λ‹€λŠ” 단점이 μ‘΄μž¬ν•©λ‹ˆλ‹€.

 

4. Presigned URL 

λ§ˆμ§€λ§‰μœΌλ‘œ 이번 κ²Œμ‹œκΈ€μ˜ λͺ©μ , Presigned Urlμž…λ‹ˆλ‹€.

Presigned Url은, κΆŒν•œμ΄ λ‹΄κΈ΄ url을 μƒμ„±ν•˜κ³ , 이 url을 톡해 S3 버킷에 객체λ₯Ό μ—…λ‘œλ“œν•  수 μžˆλ„λ‘ ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

μœ„μ˜ 방식듀과 λΉ„κ΅ν•΄μ„œ 생각해보면, Presigned URL은 μ•žμ„  2,3번 방식과 λ™μΌν•˜κ²Œ μ§€μ •ν•œ μ‚¬λžŒλ§Œ 곡유 κ°€λŠ₯ν•©λ‹ˆλ‹€.

λ˜ν•œ λ§Œλ£ŒκΈ°κ°„λ„ μ„€μ • κ°€λŠ₯ν•˜κ³ , κΆŒν•œμ„ 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

그리고 HTTP 기반으둜 접근이 κ°€λŠ₯ν•˜λ‹€λŠ” μž₯점이 μžˆμŠ΅λ‹ˆλ‹€.

 

κ·Έλ ‡λ‹€λ©΄ 이 presigned url이 ꡬ체적으둜 μ–΄λ–€ 방식인지 μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€! 🚢🏻‍β™€οΈπŸšΆπŸ»‍♀️

 

Presigned URL의 κ°œλ…

Presigned URL 방식은,

κΆŒν•œμ΄ μžˆλŠ” μ‚¬μš©μžκ°€ νŠΉμ • κΆŒν•œμ„ λ‹΄μ•„μ„œ URL을 μƒμ„±ν•˜λ©΄, 이λ₯Ό 톡해 λ‹€λ₯Έ μ‚¬μš©μžκ°€ S3 버킷에 객체λ₯Ό μ—…λ‘œλ“œν•  수 있게 λ˜λŠ” 방식을 μ§€μ›ν•©λ‹ˆλ‹€.

이 방법을 μ‚¬μš©ν•˜λ©΄, 이 url을 μ΄μš©ν•˜λŠ” μ‚¬μš©μžλŠ” AWS λ³΄μ•ˆ 자격 증λͺ…μ΄λ‚˜ κΆŒν•œμ΄ 없어도 객체λ₯Ό μ—…λ‘œλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λ•Œ Presigned Url은 μƒμ„±ν•˜λŠ” μ‚¬μš©μžμ˜ κΆŒν•œμ— 따라 μ œν•œλ©λ‹ˆλ‹€. 이 Url을 μˆ˜μ‹ ν•œ μ‚¬μš©μžλŠ”, url μƒμ„±μžκ°€ ν•΄λ‹Ή 객체λ₯Ό μ—…λ‘œλ“œν•  수 μžˆλŠ” κ²½μš°μ—λ§Œ 객체λ₯Ό μ—…λ‘œλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ, URL 생성 μ‹œ μ§€μ •λœ κΈ°κ°„ λ™μ•ˆλ§Œ μœ νš¨ν•˜κ²Œλ” μ„€μ •ν•˜μ—¬ λ³΄μ•ˆμ„ κ°•ν™”ν•©λ‹ˆλ‹€.

Amazon S3 μ½˜μ†”μ—μ„œ, Presigned URL을 생성할 λ•Œ 만료 μ‹œκ°„μ€ 1λΆ„ ~ 12μ‹œκ°„ μ‚¬μ΄λ‘œ μ„€μ •ν•  수 있으며, AWS CLI ν˜Ήμ€ AWS SDKλ₯Ό μ‚¬μš©ν•˜λŠ” κ²½μš°μ—λŠ” μ΅œλŒ€ 7μΌκΉŒμ§€ 섀정이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

즉 정리해보면, Presigned URL을 톡해 Amazon S3 λ²„ν‚·μ˜ 정책을 μ—…λ°μ΄νŠΈ ν•˜μ§€ μ•Šμ•„λ„, S3 객체에 μ œν•œλœ μ‹œκ°„ λ™μ•ˆ μ ‘κ·Όν•  수 μžˆλŠ” κΆŒν•œμ„ λΆ€μ—¬ν•˜μ—¬ μ—…λ‘œλ“œ λ˜λŠ” λ‹€μš΄λ‘œλ“œλ₯Ό μ§„ν–‰ν•  수 있게 λ©λ‹ˆλ‹€.

 

Presigned URL의 λ™μž‘ κ³Όμ •

  1. ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ—κ²Œ Presigned URL을 μš”μ²­ν•¨.
  2. 이후 μ„œλ²„λŠ”, AWS Credential 인증 과정을 κ±°μ³μ„œ S3에 μš”μ²­ν•¨.
  3. μ΄λ•Œ 버킷 이름과 HTTP Method, 만료 μ‹œκ°„ 등을 놓고 Presigned URL을 생성함.
  4. μ„œλ²„λŠ” S3λ‘œλΆ€ν„° Presigned URL을 λ°˜ν™˜λ°›μŒ.
  5. λ‹€μŒ μ„œλ²„λŠ”, ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ•žμ„œ λ°˜ν™˜λ°›μ€ URL을 전달함.
  6. 이후 ν΄λΌμ΄μ–ΈνŠΈλŠ” ν•΄λ‹Ή Presigned URL둜 HTTP μš”μ²­μ„ 보내면, μ§€μ •λœ 버킷 및 디렉토리에 객체가 μ—…λ‘œλ“œ 됨.
  7. μΆ”κ°€μ μœΌλ‘œ μ„œλ²„λŠ” ν•΄λ‹Ή μ΄λ―Έμ§€μ˜ μ£Όμ†Œλ₯Ό String ν˜•νƒœλ‘œ λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•  수 있음.

 

Presigned URL의 μž₯점

  • μ„œλ²„ λΆ€ν•˜ κ°μ†Œ
    • 이미지 νŒŒμΌμ€ μš©λŸ‰μ΄ 큰 κ²½μš°κ°€ λ§Žμ•„, json을 μ£Όκ³ λ°›λŠ” 일반적인 API μš”μ²­μ— λΉ„ν•΄ μ„œλ²„μ— 더 큰 λΆ€ν•˜λ₯Ό 주게 됨.
    • λ”°λΌμ„œ, 이미지 μ—…λ‘œλ“œκ°€ λ°±μ—”λ“œ μ„œλ²„λ₯Ό 거치게 될 경우, μ„œλ²„μ— 큰 뢀담이 κ°€ν•΄μ§€κ²Œ 됨.
    • κ·Έλ ‡λ‹€λ©΄ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ λ°”λ‘œ μ—…λ‘œλ“œν•˜λ©΄ λ˜μ§€ μ™œ ꡳ이 μ„œλ²„λ₯Ό κ±°μΉ˜λ‚˜?
    • → λ³΄μ•ˆ λ•Œλ¬Έ. μ„œλ²„λ₯Ό κ±°μΉ˜μ§€ μ•Šμ„ λ•ŒλŠ” κΆŒν•œμ΄ μ—†λŠ” μ‚¬μš©μžλ„ S3에 μ ‘κ·Όν•  수 있기 λ•Œλ¬Έ.
  • λ³΄μ•ˆ κ°•ν™”
    • ν•˜μ§€λ§Œ Presigned URL을 μ‚¬μš©ν•˜λ©΄ 이미 S3에 객체λ₯Ό μ—…λ‘œλ“œν•  수 μžˆλŠ” κΆŒν•œμ„ κ°–κ³  μžˆλŠ” μƒνƒœμ΄κΈ° λ•Œλ¬Έμ— 이미지λ₯Ό μ—…λ‘œλ“œν•  λ•Œ λ°±μ—”λ“œ μ„œλ²„λ₯Ό κ±°μΉ˜μ§€ μ•Šκ³ λ„ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ λ°”λ‘œ S3에 μ—…λ‘œλ“œκ°€ κ°€λŠ₯ν•˜κ²Œ 됨.
    • μ΄μ „μ—λŠ”, λ°±μ—”λ“œκ°€ 이미지λ₯Ό μž„μ‹œλ‘œ μ €μž₯해놨닀가, S3에 전달함과 λ™μ‹œμ— λ³΄μ•ˆ μ ˆμ°¨λ„ ν•œ λ²ˆμ— 진행함. ν•˜μ§€λ§Œ, Presigned URL 방식을 μ‚¬μš©ν•˜λ©΄, λ°±μ—”λ“œλŠ” url μƒμ„±μœΌλ‘œ λ³΄μ•ˆμ ˆμ°¨ μž‘μ—…λ§Œ ν•΄μ£Όκ³ , ν΄λΌμ΄μ–ΈνŠΈκ°€ S3둜 λ°”λ‘œ μ—…λ‘œλ“œν•  수 μžˆλ„λ‘ 과정을 λΆ„λ¦¬ν•˜κ²Œ 됨.
    • λ˜ν•œ, 파일 μ—…λ‘œλ“œλ₯Ό μœ„ν•΄ λ„€νŠΈμ›Œν¬ λŒ€μ—­ν­μ΄λ‚˜ λ³„λ„μ˜ 앱을 μ œμž‘ν•  ν•„μš”κ°€ μ—†μœΌλ―€λ‘œ μ„œλ²„λŠ” λ©”λͺ¨λ¦¬μ™€ λ„€νŠΈμ›Œν¬ μžμ›μ„ μ ˆμ•½ν•  수 있게 됨.
    • 두 번째둜, 만료 κΈ°κ°„ μ„€μ •μœΌλ‘œ λ³΄μ•ˆμ„ κ°•ν™”ν•  수 있음.
      • Presigned URL 생성 μ‹œ, access ν—ˆμš© κΈ°κ°„κ³Ό λ²”μœ„λ₯Ό μ„€μ •ν•  수 μžˆμ–΄μ„œ μœ νš¨κΈ°κ°„ λ™μ•ˆμ— μ§€μ •λœ μ‚¬μš©μžλ§Œ 접근이 κ°€λŠ₯ν•˜λ„λ‘ μ œμ–΄ν•  수 있음.
      • μ΄λŸ¬ν•œ 방법을 톡해 URL이 νƒˆμ·¨ λ‹Ήν•˜λ”λΌλ„ 만료 기간이 되면 μžλ™μœΌλ‘œ κΆŒν•œμ΄ μ‚¬λΌμ§€κ²Œ 됨.

 

 

λ‹€μŒ κΈ€μ—μ„œλŠ”,

S3λ₯Ό ν”„λ‘œμ νŠΈμ— μ μš©ν•œ 과정에 λŒ€ν•΄ μ μ–΄λ³΄κ² μŠ΅λ‹ˆλ‹€!

'πŸ„ AWS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[AWS/S3] Spring Boot ν”„λ‘œμ νŠΈμ— Presigned Url μ μš©ν•˜κΈ°  (0) 2025.03.23
'πŸ„ AWS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [AWS/S3] Spring Boot ν”„λ‘œμ νŠΈμ— Presigned Url μ μš©ν•˜κΈ°
.eun
.eun
Univ. student, majoring Computer Engineering / minoring Art&Technology.
  • .eun
    eun *
    .eun
  • 전체
    였늘
    μ–΄μ œ
    • λΆ„λ₯˜ (15)
      • πŸ’» CS (6)
        • OperatingSystem | 운영체제 (2)
        • Database | λ°μ΄ν„°λ² μ΄μŠ€ (2)
        • FullStackServiceNetworking .. (2)
      • πŸ„ AWS (2)
      • πŸ› οΈ Infra (1)
      • πŸ’¬ Medium (1)
      • 🚢🏻‍♀️ deVlog (4)
      • πŸ”‹ etc. (1)
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • νƒœκ·Έ
    • λ°©λͺ…둝
  • 링크

    • blog.
  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    JavaScript
    Python
    ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄
    μ›Ή ν”„λ‘ νŠΈμ—”λ“œ
    기술적 μ˜μ‚¬κ²°μ •
    개발자
    λ§€λ ₯
    κ³ΌλΆ€ν•˜
    μ½”λ”©ν…ŒμŠ€νŠΈ
    메타인지
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
.eun
[AWS/S3] S3 Presigned Url
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”