๊ด€๋ฆฌ ๋ฉ”๋‰ด

Hey Tech

AWS Lambda์—์„œ AWS S3 ํŒŒ์ผ ์ฝ์–ด์˜ค๋Š” ๋ฐฉ๋ฒ• ๋ณธ๋ฌธ

SW ๊ฐœ๋ฐœ/Amazon Web Service

AWS Lambda์—์„œ AWS S3 ํŒŒ์ผ ์ฝ์–ด์˜ค๋Š” ๋ฐฉ๋ฒ•

Tony Park (ํ† ๋‹ˆ) 2022. 6. 19. 18:06
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“š ๋ชฉ์ฐจ

โœ… AWS ๊ธฐ๋ณธ ์„ธํŒ…
1. S3 ๋ฒ„ํ‚ท ์ƒ์„ฑ
2. IAM Role ์ƒ์„ฑ
3. Lambda ํ•จ์ˆ˜ ์ƒ์„ฑ
4. Lambda ํ•จ์ˆ˜ ์ž‘์„ฑ

โœ… AWS ๊ธฐ๋ณธ ์„ธํŒ…

๋ณธ๊ฒฉ์ ์œผ๋กœ ํŠœํ† ๋ฆฌ์–ผ์„ ์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ, AWS ํšŒ์›๊ฐ€์ž… ๋ฐ ๋ฆฌ์ „ ๋ณ€๊ฒฝ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ์ ์ธ ์„ธํŒ…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ์„ธํŒ…์ด ๋ฏธ๋น„๋œ ๋ถ„๋“ค๊ป˜์„œ๋Š” ์•„๋ž˜์˜ '๋”๋ณด๊ธฐ' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

1) ์„œ๋น„์Šค ๊ฐ€์ž…

๋จผ์ € AWS ํ™ˆํŽ˜์ด์ง€์— ๋ฐฉ๋ฌธํ•˜์…”์„œ ํšŒ์›๊ฐ€์ž…์„ ํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ตœ์ดˆ ๊ฐ€์ž…ํ•œ ์ด๋ฉ”์ผ ๊ณ„์ •์œผ๋กœ 1๋…„๊ฐ„ ๋ฌด๋ฃŒ ์ฒดํ—˜ํŒ(a.k.a., ํ”„๋ฆฌ ํ‹ฐ์–ด)์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋ฌด๋ฃŒ์ธ ๋งŒํผ ์ €์‚ฌ์–‘ ์„œ๋น„์Šค ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํšŒ์›๊ฐ€์ž… ์‹œ ํ•ด์™ธ ๊ฒฐ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์‹ ์šฉ์นด๋“œ ๋“ฑ๋ก์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์œ ํšจํ•œ ์‹ ์šฉ์นด๋“œ์ธ์ง€ 100์›์„ ๊ฒฐ์ œํ–ˆ๋‹ค๊ฐ€ ๊ณง๋ฐ”๋กœ ์Šน์ธ ์ทจ์†Œ๋˜๋‹ˆ ์œ ํšจํ•œ ์‹ ์šฉ์นด๋“œ๋ฅผ ์ค€๋น„ํ•ด ์ฃผ์„ธ์š”.

2) ์„œ๋น„์Šค ์ง€์—ญ ๋ณ€๊ฒฝ

ํšŒ์›๊ฐ€์ž…๊นŒ์ง€ ์™„๋ฃŒํ•˜์…จ๋‹ค๋ฉด ํ˜„์žฌ PC๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ์ง€์—ญ๊ณผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฑฐ๋ฆฌ์— ์žˆ๋Š” ์„œ๋น„์Šค ์ง€์—ญ(Region)์„ ์„ ํƒํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ถ”ํ›„์— ์„œ๋น„์Šค ์š”๊ธˆ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์ง€๋งŒ, ์„œ๋น„์Šค ์ง€์—ญ๋งˆ๋‹ค ๊ณผ๊ธˆ์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด, AWS ํ™ˆํŽ˜์ด์ง€ ์šฐ์ธก ์ƒ๋‹จ์— ์ง€์—ญ ์ด๋ฆ„์„ ํด๋ฆญํ•˜๋ฉด ์„œ๋น„์Šค ์ง€์—ญ์„ ๋ณ€๊ฒฝํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€ํ•œ๋ฏผ๊ตญ์— ๊ฑฐ์ฃผํ•˜๊ณ  ๊ณ„์‹œ๋‹ค๋ฉด Seoul์„ ์„ ํƒํ•ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

1. S3 ๋ฒ„ํ‚ท ์ƒ์„ฑ

AWS S3 ๊ฐœ๋…์€ ์•„๋ž˜์˜ '๋”๋ณด๊ธฐ' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

AWS S3๋Š” Simple Storage Service์˜ ์•ฝ์–ด์ž…๋‹ˆ๋‹ค. S๊ฐ€ 3๊ฐœ์—ฌ์„œ S3๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. S3๋Š” ์ด๋ฆ„์—์„œ๋ถ€ํ„ฐ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, ํŒŒ์ผ ์„œ๋ฒ„์˜ ์—ญํ• ์„ ํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. S3๋Š” ํŠธ๋ž˜ํ”ฝ์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๋”๋ผ๋„ ์žฅ๋น„๋ฅผ ์ถ”๊ฐ€ ์ฆ์„คํ•  ํ•„์š” ์—†์ด๋„ ํŒŒ์ผ ์„œ๋ฒ„๋ฅผ ๋ฌธ์ œ์—†์ด ๋™์ž‘์‹œํ‚ต๋‹ˆ๋‹ค. S3๋Š” ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์˜ ๊ฐœ์ˆ˜ ์ œํ•œ์ด ์—†๊ณ , ์ตœ์†Œ 1๋ฐ”์ดํŠธ๋ถ€ํ„ฐ ์ตœ๋Œ€ 5 ํ…Œ๋ผ๋ฐ”์ดํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์„œ๋น„์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1) S3 ์ฝ˜์†” ์ ‘๊ทผ

AWS ๊ฒ€์ƒ‰์ฐฝ์— S3๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  S3 ์ฝ˜์†”์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 1).

๊ทธ๋ฆผ 1. S3 ์ฝ˜์†” ์ ‘๊ทผ

2) ๋ฒ„ํ‚ท(Bucket) ์ƒ์„ฑ

๊ทธ๋ฆผ 2์˜ ์šฐ์ธก์— "๋ฒ„ํ‚ท ๋งŒ๋“ค๊ธฐ"๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 2. ๋ฒ„ํ‚ท ๋งŒ๋“ค๊ธฐ ํด๋ฆญ

3) ๋ฒ„ํ‚ท ์ด๋ฆ„ ์„ค์ •

์ง๊ด€์ ์œผ๋กœ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์œผ๋กœ ๋„ค์ด๋ฐํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 3).

๊ทธ๋ฆผ 3. ๋ฒ„ํ‚ท ์ด๋ฆ„ ์„ค์ •

4) ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐ ์•”ํ˜ธํ™” ํ™œ์„ฑํ™”

์•„๋ž˜์˜ ๊ทธ๋ฆผ 4์ฒ˜๋Ÿผ, ๋ฒ„ํ‚ท ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐ ์„œ๋ฒ„ ์ธก ์•”ํ˜ธํ™”๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋งจ ์šฐ์ธก ํ•˜๋‹จ์— "๋ฒ„ํ‚ท ๋งŒ๋“ค๊ธฐ"๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 4. ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐ ์•”ํ˜ธํ™” ํ™œ์„ฑํ™”

4) ํŒŒ์ผ ์—…๋กœ๋“œ

์—…๋กœ๋“œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ํ…Œ์ŠคํŠธ์šฉ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 5).

๊ทธ๋ฆผ 5. ํŒŒ์ผ ์—…๋กœ๋“œ

 

2. IAM Role ์ƒ์„ฑ

IAM์€ Identity and Access Management์˜ ์•ฝ์ž๋กœ, ํŠน์ • ์‚ฌ์šฉ์ž๋‚˜ ๊ทธ๋ฃน์˜ ์„œ๋น„์Šค ํ˜น์€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. IAM ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๊ฐœ๋… ์„ค๋ช…์€ ์ด๊ณณ์„ ์ฐธ๊ณ ํ•ด ์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ IAM Role(์—ญํ• )์€ ํŠน์ • AWS ์„œ๋น„์Šค์˜ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ณด์•ˆ ์ฆ๋ช…์„œ์ž…๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด, AWS ๋‚ด ์–ด๋–ค ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž๊ฒฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

1) IAM ์„œ๋น„์Šค ์ ‘๊ทผ

AWS ๊ฒ€์ƒ‰์ฐฝ์— IAM์„ ์ž…๋ ฅํ•˜์—ฌ IAM ์ฝ˜์†”๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 6).

๊ทธ๋ฆผ 6. IAM ์ฝ˜์†” ์ ‘๊ทผ

2) ์—ญํ•  ์ƒ์„ฑ

์ขŒ์ธก์— "์—ญํ• " ํ…์ŠคํŠธ๋ฅผ ํด๋ฆญํ•˜์‹  ํ›„, ์šฐ์ธก์— "์—ญํ•  ๋งŒ๋“ค๊ธฐ" ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”(๊ทธ๋ฆผ 7).

๊ทธ๋ฆผ 7. IAM ์—ญํ•  ์ƒ์„ฑ

3) Lamda ์„ ํƒ

์•„๋ž˜์˜ ๊ทธ๋ฆผ 8์ฒ˜๋Ÿผ, ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” Lambda๋ฅผ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด๋ฏ€๋กœ Lambda๋ฅผ ์„ ํƒํ•œ ํ›„, ํ•˜๋‹จ์— "๋‹ค์Œ" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. AWS Lambda ๊ฐœ๋…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์†Œ๊ฐœ๋Š” ์ด๊ณณ์„ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.

๊ทธ๋ฆผ 8. ๋žŒ๋‹ค ์„ ํƒ

4) s3 ์•ก์„ธ์Šค ๊ถŒํ•œ ์ถ”๊ฐ€

๊ถŒํ•œ ์ •์ฑ… ๊ฒ€์ƒ‰์ฐฝ์— S3๋ฅผ ์ž…๋ ฅํ•œ ํ›„ ์•„๋ž˜์— AmazonS3FullAccess๋ฅผ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 9). ์—…๋กœ๋“œํ•  ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š” ์„œ๋น„์Šค(S3)์— ๋Œ€ํ•œ ๋ชจ๋“  ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 9. S3 ์•ก์„ธ์Šค ๊ถŒํ•œ ์ถ”๊ฐ€

5) ์—ญํ•  ์ด๋ฆ„ ์„ค์ •

์•„๋ž˜์˜ ๊ทธ๋ฆผ 10์ฒ˜๋Ÿผ, ์—ญํ• ์˜ ์ด๋ฆ„์„ ์ง๊ด€์ ์œผ๋กœ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ์ž‘์„ฑํ•˜์‹  ํ›„, ๋งจ ํ•˜๋‹จ์— "์—ญํ•  ์ƒ์„ฑ" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 10. ์—ญํ•  ์ด๋ฆ„ ์„ค์ •

3. Lambda ํ•จ์ˆ˜ ์ƒ์„ฑ

AWS Lambda์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๊ฐœ๋… ์„ค๋ช…์€ ์•„๋ž˜์˜ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.
https://heytech.tistory.com/397

 

AWS Lambda ๊ฐœ๋…, ์žฅ๋‹จ์ , ์‚ฌ์šฉ๋ชฉ์ 

๐Ÿ“š ๋ชฉ์ฐจ 1. ๊ฐœ๋… 2. ์žฅ๋‹จ์  3. ์‚ฌ์šฉ๋ชฉ์  ์ฐธ๊ณ ์ž๋ฃŒ 1. ๊ฐœ๋… Amazon Web Service(AWS) Lambda๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฝ”๋“œ(=ํ•จ์ˆ˜)๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ปดํ“จํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” Serverless ์ปดํ“จํŒ… ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค(๊ทธ๋ฆผ 1

heytech.tistory.com

1) Lambda ์ฝ˜์†” ์ ‘๊ทผ

AWS ํ™ˆํŽ˜์ด์ง€ ๊ฒ€์ƒ‰์ฐฝ์—์„œ Lambda๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ Lambda ์ฝ˜์†”๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 11).

๊ทธ๋ฆผ 11. Lambda ์ฝ˜์†” ์ ‘๊ทผ

2) Lambda ํ•จ์ˆ˜ ์ƒ์„ฑ

"ํ•จ์ˆ˜ ์ƒ์„ฑ" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 12).

๊ทธ๋ฆผ 12. ํ•จ์ˆ˜ ์ƒ์„ฑ

3) Lambda ํ•จ์ˆ˜ ์ƒ์„ฑ ์˜ต์…˜

์•„๋ž˜์˜ ๊ทธ๋ฆผ 13์ฒ˜๋Ÿผ ์•„๋ž˜์˜ ์˜ต์…˜์„ ์„ ํƒํ•˜์‹  ํ›„ ๋งจ ํ•˜๋‹จ์— "ํ•จ์ˆ˜ ์ƒ์„ฑ" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  • ํ•จ์ˆ˜ ์ด๋ฆ„: ์ง๊ด€์ ์œผ๋กœ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑ
  • ๋Ÿฐํƒ€์ž„: ์–ธ์–ด ๋ฐ ๋ฒ„์ „ ์„ ํƒ(e.g., Python)
  • ์‹คํ–‰ ์—ญํ• : "๊ธฐ์กด ์—ญํ•  ์‚ฌ์šฉ" ์„ ํƒ ํ›„ ์•ž์„œ ์ƒ์„ฑํ•œ IAM Role ์„ ํƒ

๊ทธ๋ฆผ 13. ๋žŒ๋‹ค ํ•จ์ˆ˜ ์ƒ์„ฑ ์˜ต์…˜

4. Lambda ํ•จ์ˆ˜ ์ž‘์„ฑ

lambda_function.py ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

import json
import boto3
import botocore

BUCKET_NAME = 'file-upload-system-s3'
DIR_NAME = 'data/'
FILE_NAME = 'test.txt'
KEY = DIR_NAME + FILE_NAME

s3 = boto3.client('s3')

def lambda_handler(event, context):
    data = s3.get_object(Bucket = BUCKET_NAME, Key = KEY)
    res = data['Body'].read()
    print(res)
    return {
        'statusCode': 200,
        'body': json.dumps(res.decode('UTF-8'))
    }
  • 1~3๋ฒˆ์งธ ์ค„: ํ•„์š” ํŒจํ‚ค์ง€ import
  • 5~8๋ฒˆ์งธ ์ค„: S3 ๋ฒ„ํ‚ท ์ด๋ฆ„, ํŒŒ์ผ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ, ํŒŒ์ผ๋ช… ์„ ์–ธ
  • 13๋ฒˆ์งธ ์ค„: get_object() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
  • 14๋ฒˆ์งธ ์ค„: read() ํ•จ์ˆ˜๋Š” Byte ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ ์ฝ์–ด์˜ด
  • 18๋ฒˆ์งธ ์ค„: Byte ๋ฐ์ดํ„ฐ๋ฅผ UTF-8๋กœ decode ํ•˜์—ฌ ์ถœ๋ ฅ

์•„๋ž˜์˜ ๊ทธ๋ฆผ 14์™€ ๊ฐ™์ด, Deploy ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 14. ๋ฐฐํฌ ๋ฒ„ํŠผ ํด๋ฆญ

5. ๊ฒฐ๊ณผ

์•„๋ž˜์˜ ๊ทธ๋ฆผ 15์™€ ๊ฐ™์ด, ํ…Œ์ŠคํŠธ ํƒญ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ํ…Œ์ŠคํŠธ์šฉ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์šฐ์ธก์— ํ…Œ์ŠคํŠธ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 15. ํ…Œ์ŠคํŠธ ์ด๋ฒคํŠธ ์ƒ์„ฑ

์•„๋ž˜์˜ ๊ทธ๋ฆผ 16๊ณผ ๊ฐ™์ด, ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ํ…์ŠคํŠธ ํŒŒ์ผ ๋‚ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅ๋œ ๊ฒƒ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 16. ํŒŒ์ผ ์ฝ์–ด์˜ค๊ธฐ ์„ฑ๊ณต

๐Ÿ“Œ ์ฐธ๊ณ ํ•  ๋งŒํ•œ ํฌ์ŠคํŒ…

1.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (1) React ๊ธฐ๋ฐ˜ Frontend ๊ฐœ๋ฐœ
2.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (2) AWS IAM ์—ญํ•  ์ƒ์„ฑ
3.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (3) AWS Lambda ์ƒ์„ฑ
4.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (4) AWS S3 ์ƒ์„ฑ
5.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (5) AWS API Gateway ์ƒ์„ฑ
6.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (6) AWS Lambda ํ•จ์ˆ˜ ์ž‘์„ฑ
7.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (7) Axios ๊ธฐ๋ฐ˜ API Call
8.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (8) ํŒŒ์ผ ์—…๋กœ๋“œ ํ…Œ์ŠคํŠธ
9.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (9) AWS S3 ๊ธฐ๋ฐ˜ ์›น ํ˜ธ์ŠคํŒ…

ํฌ์ŠคํŒ… ๋‚ด์šฉ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ๋ณด์™„ํ•  ์ ์ด ์žˆ๋‹ค๋ฉด ์•„๋ž˜์— ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์„ธ์š”!
๊ทธ๋Ÿผ ์˜ค๋Š˜๋„ ๋ฉ‹์ง„ ํ•˜๋ฃจ ๋งŒ๋“œ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค :)
๊ณ ๋ง™์Šต๋‹ˆ๋‹ค๐Ÿ˜Š

728x90
๋ฐ˜์‘ํ˜•