λ‘œμΌ“πŸΎ
article thumbnail
λ°˜μ‘ν˜•

 

 

S3λŠ” 퍼블릭 μ•‘μ„ΈμŠ€ 차단 κΈ°λŠ₯을 μ΄μš©ν•˜μ—¬ 버킷 λ‚΄ 객체에 λŒ€ν•œ 접근을 μ œν•œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

퍼블릭 μ•‘μ„ΈμŠ€ 차단을 ν™œμ„±ν™” ν•˜κ²Œ 되면 μžμ›μ„ μ•ˆμ „ν•˜κ²Œ λ³΄ν˜Έν•  수 μžˆμ§€λ§Œ, μ™ΈλΆ€μ—μ„œ 접근이 λΆˆκ°€λŠ₯ν•΄ s3 객체에 μ ‘κ·Όν•  수 μ—†μŠ΅λ‹ˆλ‹€.

 

λ”°λΌμ„œ S3λŠ” 퍼블릭 μ•‘μ„ΈμŠ€ 차단을 ν•˜λ©΄μ„œ μ™ΈλΆ€μ—μ„œ μ ‘κ·Όν•  수 방법을 μ œκ³΅ν•΄μ£ΌλŠ”λ°, κ·Έ 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ³ μž ν•©λ‹ˆλ‹€.

 

  1. Pre-Signed-URL 을 μ΄μš©ν•˜μ—¬ S3 객체 μ—…λ‘œλ“œ(PUT)/λ‹€μš΄λ‘œλ“œ(GET) ν•˜κΈ°
  2. Pre-Signed-URL 을 μ΄μš©ν•˜μ—¬ S3 객체 μ—…λ‘œλ“œ(PUT)λ₯Ό μ§„ν–‰ν•˜κ³ , λ‹€μš΄λ‘œλ“œλŠ” μ„œλ²„λ₯Ό ν”„λ‘μ‹œλ‘œ 두어 μ„œλ²„μ—μ„œ S3에 μ ‘κ·Όν•˜μ—¬ λ‹€μš΄λ‘œλ“œ(GET)ν•˜κΈ°
  3. Pre-Signed-URL 을 μ΄μš©ν•˜μ—¬ S3 객체 μ—…λ‘œλ“œ(PUT)λ₯Ό μ§„ν–‰ν•˜κ³ , λ‹€μš΄λ‘œλ“œλŠ” goofysλ₯Ό μ‚¬μš©ν•˜μ—¬ S3 버킷을 λ¦¬λˆ…μŠ€μ— 파일 μ‹œμŠ€ν…œμœΌλ‘œ λ§ˆμš΄νŠΈν•˜μ—¬ λ‹€μš΄λ‘œλ“œ(GET)ν•˜κΈ°

 


Pre-Signed-URL S3 객체 μ—…λ‘œλ“œ/λ‹€μš΄λ‘œλ“œ

 

Pre-Signed-URL 을 μ΄μš©ν•˜μ—¬ μ—…λ‘œλ“œμ™€ λ‹€μš΄λ‘œλ“œλ₯Ό λͺ¨λ‘ 진행할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

Pre-Signed-URL λž€?

정해진 μ‹œκ°„λ™μ•ˆ S3 객체에 μ ‘κ·Ό κΆŒν•œμ„ κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. 정해진 μ‹œκ°„μ΄ 초과되면 더 이상 접근을 ν•  μˆ˜κ°€ μ—†μ–΄μ„œ μžμ›μ„ λ³΄ν˜Έν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

ν΄λΌμ΄μ–ΈνŠΈ - μ„œλ²„ - S3

 

Pre-Signed-URL ν”„λ‘œμ„ΈμŠ€

  1. ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ—κ²Œ pre-signed-url 을 μš”μ²­ν•©λ‹ˆλ‹€.
  2. pre-signed-url λ₯Ό μ‘λ‹΅ν•΄μ€λ‹ˆλ‹€. λ§Œμ•½ μ—…λ‘œλ“œλΌλ©΄ pre-signed-url을 생성할 λ•Œ HttpMethodλ₯Ό PUT으둜, λ‹€μš΄λ‘œλ“œλΌλ©΄ GET으둜 ν•΄μ€λ‹ˆλ‹€.
  3. pre-signed-url λ₯Ό 톡해 S3에 μ—…λ‘œλ“œ ν˜Ήμ€ S3 객체λ₯Ό λ‹€μš΄λ‘œλ“œλ₯Ό ν•©λ‹ˆλ‹€.
  4. μ„±κ³΅μ μœΌλ‘œ λ§ˆμ³€λ‹€λŠ” 응닡값을 ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ³΄λ‚΄μ€λ‹ˆλ‹€.

 

Pre-Signed-URL 을 μ‚¬μš©ν•˜λ―€λ‘œ 얻을 수 μžˆλŠ” 이점

  1. μ„œλ²„λ₯Ό 톡해 μ—…λ‘œλ“œν•˜λŠ” 것이 μ•„λ‹ˆλΌ S3둜 λ°”λ‘œ μ—…λ‘œλ“œν•˜κΈ° λ•Œλ¬Έμ— μ„œλ²„μ˜ λ¦¬μ†ŒμŠ€λ₯Ό μ ˆμ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. 퍼블릭 μ•‘μ„ΈμŠ€ 차단을 ν™œμ„±ν™” ν•˜λ©΄μ„œ S3 객체에 접근이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  3. AWS Pre-Sigend-URL μƒ˜ν”Œ μ½”λ“œ λ₯Ό μ œκ³΅ν•΄μ£ΌκΈ° λ•Œλ¬Έμ— μ‰½κ²Œ 개발 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

Pre-Signed-URL 만 있으면 μ‰½κ²Œ μ—…λ‘œλ“œ/λ‹€μš΄λ‘œλ“œκ°€ κ°€λŠ₯ν•˜μ§€λ§Œ μ•„λž˜μ™€ 같은 λ¬Έμ œκ°€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

Problem) 예λ₯Ό λ“€μ–΄ κ²Œμ‹œκΈ€μ„ μž‘μ„±ν•˜μ˜€λŠ”λ°, 글에 이미지가 μžˆμ„ 경우 μ½”λ“œκ°€ κΉ”λ”ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μ™œλƒν•˜λ©΄ 항상 pre-signed-url 을 톡해 객체에 μ ‘κ·Όν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— 이미지 λ˜ν•œ κ·Έλƒ₯ URL이 μ•„λ‹ˆλΌ pre-signed-url둜 λ°”κΏ”μ€˜μ•Όν•©λ‹ˆλ‹€.

 

→ Problem은 κ²Œμ‹œκΈ€μ„ 뢈러올 λ•Œ λ§ˆλ‹€ pre-signed-url 둜 λ°”κΏ”μ€˜μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— λΉ„νš¨μœ¨μ μΌ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•΄μ£ΌκΈ° μœ„ν•΄μ„  버킷을 ν•˜λ‚˜ λ§Œλ“€μ–΄μ„œ 퍼블릭 μ•‘μ„ΈμŠ€λ₯Ό ν—ˆμš©ν•΄μ£ΌλŠ” 방법이 μžˆμŠ΅λ‹ˆλ‹€. μ€‘μš”ν•œ 파일일 κ²½μš°λŠ” μ•‘μ„ΈμŠ€ 퍼블릭이 μ°¨λ‹¨λœ 버킷에, 이미지와 같은 νŒŒμΌμ€ μ•‘μ„ΈμŠ€ 퍼블릭이 ν—ˆμš©λœ 버킷에 λ„£μ–΄μ€λ‹ˆλ‹€. ν•˜μ§€λ§Œ κ²°κ΅­ 버킷을 2개 관리해야 ν•˜κΈ° λ•Œλ¬Έμ— λΉ„νš¨μœ¨μ  일 수 μžˆμŠ΅λ‹ˆλ‹€.

 

μ‚¬λ‘€λ³„λ‘œ μ•Œμ•„λ³Έ μ•ˆμ „ν•œ s3 κ°€μ΄λ“œ λ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

 


S3 객체 μ—…λ‘œλ“œλŠ” Pre-Signed-URL , λ‹€μš΄λ‘œλ“œλŠ” ν”„λ‘μ‹œ μ„œλ²„λ₯Ό 톡해

 

internet == S3

 

 

μ—…λ‘œλ“œλŠ” pre-signed-url 을 톡해 λ™μΌν•˜κ²Œ μ§„ν–‰λ˜κ³ , λ‹€μš΄λ‘œλ“œλ§Œ λ‹€λ¦…λ‹ˆλ‹€.

 

  1. ν΄λΌμ΄μ–ΈνŠΈκ°€ ν”„λ‘μ‹œ μ„œλ²„μ—κ²Œ λ‹€μš΄λ‘œλ“œν•  νŒŒμΌμ— λŒ€ν•΄ μš”μ²­ν•©λ‹ˆλ‹€.
  2. ν”„λ‘μ‹œ μ„œλ²„λŠ” AWS Credential을 κ°–κ³  있기 λ•Œλ¬Έμ— S3 버킷에 접근이 κ°€λŠ₯ν•˜κ³ , 객체λ₯Ό κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
  3. κ°€μ Έμ˜¨ 객체λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ „λ‹¬ν•΄μ€λ‹ˆλ‹€.

 

μœ„ 방식을 μ΄μš©ν•˜κ²Œ 되면 λ‹€μŒκ³Ό 같은 이점이 μžˆμŠ΅λ‹ˆλ‹€.

 

  1. μ„œλ²„μ˜ 인증을 톡해 S3 객체λ₯Ό κ°€μ Έμ˜¬ 수 μžˆμœΌλ―€λ‘œ, 퍼블릭 μ•‘μ„ΈμŠ€ 차단을 ν™œμ„±ν™” ν•  수 있고, pre-signed-url κ°€ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€.
  2. pre-signed-url 와 같이 정해진 μ‹œκ°„μ΄ μ—†μœΌλ―€λ‘œ, ν”„λ‘μ‹œ μ„œλ²„μ—κ²Œ 인증받은 ν΄λΌμ΄μ–ΈνŠΈλΌλ©΄ κ³„μ†ν•΄μ„œ 객체에 접근이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  3. AWS μƒ˜ν”Œμ½”λ“œ 을 μ œκ³΅ν•΄μ£ΌκΈ° λ•Œλ¬Έμ— μ‰½κ²Œ 개발이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

 

ν•˜μ§€λ§Œ μœ„ 방식을 μ΄μš©ν•˜κ²Œ 되면 늘 ν”„λ‘μ‹œ μ„œλ²„λ₯Ό 톡해 S3 에 μ ‘κ·Όν•˜κΈ° λ•Œλ¬Έμ— 속도 μΈ‘λ©΄μ—μ„œ 느릴 수 μžˆμŠ΅λ‹ˆλ‹€. ν”„λ‘μ‹œ μ„œλ²„κ°€ S3 버킷 λ‚΄ 객체λ₯Ό 미리 가지고 μžˆλ‹€λ©΄, μ’€ 더 λΉ λ₯΄μ§€ μ•Šμ„κΉŒμš”?

 


S3 객체 μ—…λ‘œλ“œλŠ” Pre-Signed-URL , λ‹€μš΄λ‘œλ“œλŠ” goofys λ₯Ό ν†΅ν•œ 마운트

 

goofys λž€?

Go둜 μž‘μ„±λœ S3 mount νŒ¨ν‚€μ§€μ΄λ©°, goofysλ₯Ό μ‚¬μš©ν•˜λ©΄ S3 버킷을 λ¦¬λˆ…μŠ€μ—μ„œ 파일 μ‹œμŠ€ν…œμœΌλ‘œ 마운트 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

goofys λŠ” κ΄€λ ¨ κΈ€λ‘œ λŒ€μ²΄ ν•©λ‹ˆλ‹€.

 

AWS S3와 goofys 연동

λ°˜μ‘ν˜•
profile on loading

Loading...