Amazon Web Services ํ•œ๊ตญ ๋ธ”๋กœ๊ทธ

AWS Well-Architected Framework ํ•œ๊ตญ์–ด ๋ฐฑ์„œ ๊ณต๊ฐœ

on | in AWS ๋ฐฑ์„œ ๋ฐ ์„ค๋ช…์„œ, ํ•œ๊ตญ ๊ธฐ์ˆ  ๋ฌธ์„œ |

์—ฌ๋Ÿฌ๋ถ„์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํด๋ผ์šฐ๋“œ ๋‚ด์—์„œ ํ›Œ๋ฅญํ•œ ๊ตฌ์กฐ๋กœ ์„ค๊ณ„(Well-Architected)ํ•˜์—ฌ ๊ทธ ์™„์„ฑ๋„๋ฅผ ๋†’ํž ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜ ์ฒœ๊ฐœ์˜ ๊ณ ๊ฐ์‚ฌ์˜ ํ˜‘๋ ฅ๊ณผ AWS ์†”๋ฃจ์…˜์ฆˆ ์•„ํ‚คํ…ํŠธ๋ฅผ ํ†ตํ•ด ํด๋ผ์šฐ๋“œ ์‹œ์Šคํ…œ ์„ค๊ณ„๋ฅผ ์œ„ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๋ฐ ํ•ต์‹ฌ ์ „๋žต์„ AWS Well-Architected Framework์œผ๋กœ ์ •๋ฆฌํ•œ ๋ฐ” ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ์— ํ•œ๊ตญ ๊ณ ๊ฐ์„ ์œ„ํ•ด AWS Well-Architected Framework ํ•œ๊ตญ์–ด ๊ธฐ์ˆ  ๋ฐฑ์„œ(PDF ๋ฒ„์ „)๋ฅผ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ์—์„œ๋Š” ์ข‹์€ ์„ค๊ณ„๋ฅผ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋น„๊ตํ•˜์—ฌ, ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AWS Well-Architected๋Š” ๋ณด์•ˆ์„ฑ, ์‹ ๋ขฐ์„ฑ ๋ฐ ์„ฑ๋Šฅ ํšจ์œจ, ๋น„์šฉ ์ตœ์ ํ™” ๋“ฑ ๋„ค ๊ฐ€์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, ์ง€๋‚œ AWS Cloud 2016 ํ–‰์‚ฌ์—์„œ๋Š” ์–‘์Šน๋„ AWS ์†”๋ฃจ์…˜์ฆˆ ์•„ํ‚คํ…ํŠธ๊ป˜์„œ AWS Well-Architected Framework์— ๋Œ€ํ•œ ๊ฐ•์—ฐ์„ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ตœ๊ณ ์˜ ํด๋ผ์šฐ๋“œ ์•„ํ‚คํ…์ณ ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ๋น„๋ฒ•๋„ ์–ป์œผ์‹œ๊ณ , ์—ฌ๋Ÿฌ๋ถ„์˜ ํ˜„์žฌ ์•„ํ‚คํ…์ณ์— ๋Œ€ํ•ด ๋˜๋Œ์•„ ๋ณด๊ณ , ๊ฐœ์„ ํ•  ์‚ฌํ•ญ์„ ํ™•์ธํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

โ€“ AWS์ฝ”๋ฆฌ์•„ ๋งˆ์ผ€ํŒ…ํŒ€

AWS ๋ณด์•ˆ ๊ธฐ์ˆ  ๋ฐฑ์„œ ํ•œ๊ตญ์–ด ๋ฒ„์ „ ๋Œ€๊ฑฐ ๊ณต๊ฐœ

on | in ๋ณด์•ˆ ๋‰ด์Šค ๋ฐ ๋ฌธ์„œ, ํ•œ๊ตญ ๊ธฐ์ˆ  ๋ฌธ์„œ |

์•„๋งˆ์กด ์›น ์„œ๋น„์Šค์—์„œ๋Š” 2016๋…„ 1์›” ์„œ์šธ ๋ฆฌ์ „ ๊ฐœ์„ค ์ดํ›„ ํ•œ๊ตญ ๊ณ ๊ฐ๋“ค์˜ ํด๋ผ์šฐ๋“œ ๋ณด์•ˆ๊ณผ ๊ด€๋ จํ•œ ๋‹ค์–‘ํ•œ ์ •๋ณด์— ๋Œ€ํ•œ ์š”๊ตฌ์™€ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•„์™”์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ ๊ธ€๋กœ๋ฒŒ ๋ฌธ์„œ๋กœ ์˜์–ด๋กœ ์ œ๊ณต ์ค‘์ธ ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ  ๋ฐฑ์„œ ์ค‘์— ํŠน๋ณ„ํžˆ ๋ณด์•ˆ ๋ถ„์•ผ ๋ฐฑ์„œ๋ฅผ ์—„์„  ํ›„ ํ•œ๊ตญ์–ด ์ž‘์—…์„ ์ง„ํ–‰ํ•˜์—ฌ, ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹ค์ˆ˜์˜ ์‹ ๊ทœ ๋ณด์•ˆ ๊ธฐ์ˆ  ๋ฐฑ์„œ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ๋ณด์•ˆ ๊ธฐ์ˆ  ๋ฐฑ์„œ๋ฅผ ํ†ตํ•ด ๊ณ ๊ฐ๋“ค์ด AWS ํด๋ผ์šฐ๋“œ ๋ณด์•ˆ์— ๋Œ€ํ•œ ์ดํ•ด๋„๋ฅผ ๋†’์ด๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ฃผ๋ณ€์˜ ๋งŽ์€ ๋ถ„๋“ค์—๊ฒŒ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. (์•„๋ž˜ ๋งํฌ๋ฅผ ๋ˆ„๋ฅด์‹œ๋ฉด, PDF ๋ฒ„์ „์œผ๋กœ ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.)

์‹ ๊ทœ ํ•œ๊ตญ์–ด ๋ณด์•ˆ ๊ธฐ์ˆ  ๋ฐฑ์„œ

  • ๊ทœ๋ชจ๋ณ„ ๋ณด์•ˆ: AWS ๊ธฐ๋ฐ˜ ๊ฑฐ๋ฒ„๋„Œ์Šค โ€จโ€จโ€จโ€จ โ€“ ๋ณธ ๊ธฐ์ˆ  ๋ฐฑ์„œ๋Š” AWS๋กœ ์›Œํฌ๋กœ๋“œ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๋•Œ ์ž์ฃผ ๊ฐ„๊ณผ๋˜๋Š” ์žฅ์ ์€ ์ œ๊ณต๋˜๋Š” ๋งŽ์€ ๊ฑฐ๋ฒ„๋„Œ์Šค ํ™œ์„ฑ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๊ทœ๋ชจ์— ๋งž๋Š” ๋”์šฑ ๋†’์€ ๋ณด์•ˆ ์ˆ˜์ค€์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” AWS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ IT ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ๋†’์€ ์ˆ˜์ค€์˜ ๊ฑฐ๋ฒ„๋„Œ์Šค๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทœ๋ชจ๋ณ„ ๋ณด์•ˆ: AWS์—์„œ ๋กœ๊น…ํ•˜๊ธฐ โ€จโ€จโ€จโ€จ โ€“ ๋ณธ ๊ธฐ์ˆ  ๋ฐฑ์„œ๋Š” ๋กœ๊น…๊ณผ ๊ด€๋ จ๋œ ์ผ๋ฐ˜์ ์ธ ๊ทœ์ • ์ค€์ˆ˜ ์š”๊ตฌ ์‚ฌํ•ญ์˜ ๊ฐœ์š” ๋ฐ AWS CloudTrail์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. AWS CloudTrail์€ ๋ณด์•ˆ ๋ฐ ์šด์˜ ๊ด€์ ์—์„œ ๋งค์šฐ ์œ ์šฉํ•œ ์ผ๋ฐ˜ ๋กœ๊น… ๋„๋ฉ”์ธ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • Securing Data at Rest with Encryption(์ €์žฅ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”)โ€จ  โ€“ ๋ณธ ๊ธฐ์ˆ  ๋ฐฑ์„œ๋Š”  AWS ์„œ๋น„์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์•”ํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์— ๋Œ€ํ•ด ๊ฐœ๊ด„์ ์œผ๋กœ ์„ค๋ช…ํ•˜๊ณ  ์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ์ €์žฅ๋˜๋Š” ์œ„์น˜์™€ ์•”ํ˜ธํ™” ํ‚ค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์ œ์–ด ๋ฐฉ๋ฒ•์˜ ๊ด€์ ์—์„œ ์ด๋Ÿฌํ•œ ์˜ต์…˜์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ธก ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•๊ณผ ํด๋ผ์ด์–ธํŠธ ์ธก ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•œ AWS ์„œ๋น„์Šค์—์„œ ์ด๋Ÿฌํ•œ ์•”ํ˜ธํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐœ๋ณ„์ ์ธ ์˜ˆ๋ฅผ ํ†ตํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • AWS ์‚ฌ์šฉ์„ ์œ„ํ•œ ๊ฐ์‚ฌ ๋ณด์•ˆ ์ฒดํฌ๋ฆฌ์ŠคํŠธโ€จ  โ€“ ๋ณธ ๊ธฐ์ˆ  ๋ฐฑ์„œ๋Š” AWS ๊ณ ๊ฐ์˜ ๋‚ด๋ถ€ ๊ทœ์ • ์ค€์ˆ˜ ํŒ€๊ณผ ์ด๋Ÿฌํ•œ ํŒ€์˜ ์™ธ๋ถ€ ๊ฐ์‚ฌ์ž ๊ทธ๋ฆฌ๊ณ  ๋‚ด๋ถ€ ๊ฒ€ํ†  ๋˜๋Š” ์™ธ๋ถ€ ๊ฐ์‚ฌ๋ฅผ ์œ„ํ•ด AWS ์‚ฌ์šฉ์„ ํ‰๊ฐ€ ๋˜๋Š” ๊ฐ์‚ฌํ•˜๋Š” ๋‹ด๋‹น์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฐ์—… ๋˜๋Š” ๊ทœ์ œ ํ‘œ์ค€์—์„œ ์š”๊ตฌํ•  ์ˆ˜ ์žˆ๋Š”, ์กฐ์ง์˜ AWS ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๋ณด์•ˆ ํ‰๊ฐ€๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฑ์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์šด์˜ ์ค€๋น„ ์ƒํƒœ ํ‰๊ฐ€์— ์œ ์šฉํ•œ ์šด์˜ ๋ฐ ์•„ํ‚คํ…์ฒ˜ ์ง€์นจ์„ ์ œ๊ณตํ•˜๋Š” ์šด์˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋ฐฑ์„œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.โ€จ
  • AWS Security by Design ์†Œ๊ฐœ  โ€“ ๋ณธ ๊ธฐ์ˆ  ๋ฐฑ์„œ๋Š” ๊ณ ๊ฐ์ด AWS ๊ณ„์ • ์„ค๊ณ„๋ฅผ ์ •ํ˜•ํ™”ํ•˜๊ณ , ๋ณด์•ˆ ์ œ์–ด๋ฅผ ์ž๋™ํ™”ํ•˜๊ณ , ๊ฐ์‚ฌ๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋„๋ก ํ•ด์ฃผ๋Š” ๋ณด์•ˆ ๋ณด์žฅ ์ ‘๊ทผ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ณธ ๋ฐฑ์„œ์—์„œ๋Š” Security by Design์˜ ๊ฐœ๋…์„ ์„ค๋ช…ํ•˜๊ณ , ์—ฌ๋Ÿฌ ์‚ฐ์—…๊ณ„์— ๋Œ€๊ทœ๋ชจ์˜ ๋ณด์•ˆ ๋ฐ ๊ทœ์ • ์ค€์ˆ˜๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ 4๋‹จ๊ณ„ ์ ‘๊ทผ๋ฒ•์„ ์†Œ๊ฐœํ•˜๋ฉฐ, AWS ๊ณ ๊ฐ์ด AWS ํ™˜๊ฒฝ์— ๋ณด์•ˆ์„ ์ ์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์ œ์–ด๊ฐ€ ์ž‘๋™ ์ค‘์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

์ด์™ธ, ๊ธฐ์กด์— ์žˆ๋˜ ๋ณด์•ˆ ๋ฐ ์ปดํ”Œ๋ผ์ด์–ธ์Šค ๊ด€๋ จ ๋ฐฑ์„œ์˜ ๋ชฉ๋ก๋„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด ํ•œ๊ตญ์–ด ๋ณด์•ˆ ๊ธฐ์ˆ  ๋ฐฑ์„œ

  • AWS Security Best Practices(AWS ๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€)โ€จ โ€“ ๋ณธ ๊ธฐ์ˆ  ๋ฐฑ์„œ๋Š” Information Security Management System(ISMS)๋ฅผ ์ •์˜ํ•˜๊ณ  ์กฐ์ง์˜ ๋ณด์•ˆ ์ •์ฑ… ๋ฐ ํ”„๋กœ์„ธ์Šค ์„ธํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ AWS ํด๋ผ์šฐ๋“œ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ฐ ์ž์‚ฐ์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ AWS์˜ ์ž์‚ฐ์„ ํ™•์ธ, ๋ถ„๋ฅ˜ ๋ฐ ๋ณดํ˜ธํ•˜๊ณ  ๊ณ„์ •, ์‚ฌ์šฉ์ž ๋ฐ ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•œ AWS ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ด€๋ฆฌ ๋ฐ ํด๋ผ์šฐ๋“œ์—์„œ ๋ฐ์ดํ„ฐ, ์šด์˜ ์ฒด์ œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์ „๋ฐ˜์ ์ธ ์ธํ”„๋ผ๋ฅผ ๋ณด์•ˆ ์กฐ์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ๋ณด์•ˆ ์ฃผ์ œ์˜ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • AWS Risk and Compliance(Amazon Web Services: ์œ„ํ—˜ ๋ฐ ๊ทœ์ • ์ค€์ˆ˜)โ€จโ€จโ€จโ€จโ€จ โ€“ ๋ณธ ๊ธฐ์ˆ  ๋ฐฑ์„œ๋Š”  AWS ๊ณ ๊ฐ์ด IT ํ™˜๊ฒฝ์„ ์ง€์›ํ•˜๋Š” ๊ธฐ์กด์˜ ์ œ์–ด ํ”„๋ ˆ์ž„์›Œํฌ์— AWS๋ฅผ ํ†ตํ•ฉํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ ๋งŒํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” AWS ์ปจํŠธ๋กค์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ธฐ๋ณธ ์ ‘๊ทผ๋ฒ•์„ ํฌํ•จํ•˜๋ฉฐ ๊ณ ๊ฐ์ด ์ œ์–ด ํ™˜๊ฒฝ์„ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๋ฐ˜์ ์ธ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ๊ทœ์ • ์ค€์ˆ˜ ๋ฌธ์ œ์— ๋Œ€ํ•œ AWS ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
  • Overview of Security Processes(Amazon Web Services: ๋ณด์•ˆ ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์š”)โ€จ โ€“ ๋ณธ ๊ธฐ์ˆ  ๋ฐฑ์„œ๋Š”  โ€œAWS๊ฐ€ ๋‚ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋ฐ ์–ด๋– ํ•œ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?โ€๋ผ๋Š” ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, AWS์˜ ๋ฌผ๋ฆฌ์  ๋ณด์•ˆ ์šด์šฉ ํ”„๋กœ์„ธ์Šค๋ฅผ AWS ๊ด€๋ฆฌ ํ•˜์— ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ๋ฐ ์ธํ”„๋ผ์˜ ๊ด€์ ์—์„œ ์„ค๋ช…ํ•˜๊ณ  ์„œ๋น„์Šค๋ณ„ ๋ณด์•ˆ ๊ตฌํ˜„์— ๋Œ€ํ•ด์„œ๋„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  •  DDoS ๋Œ€์‘์„ ์œ„ํ•œ AWS ๋ชจ๋ฒ”์‚ฌ๋ก€โ€จ โ€“ ๋ณธ ๊ธฐ์ˆ  ๋ฐฑ์„œ๋Š” DDoS(Distributed Denial of Service) ๊ณต๊ฒฉ์— ๋Œ€๋น„ํ•˜์—ฌ Amazon Web Services(AWS)์—์„œ ์‹คํ–‰ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณต์›๋ ฅ์„ ๋†’์ด๊ณ ์ž ํ•˜๋Š” ๊ณ ๊ฐ์„ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ๋ฐฑ์„œ์—์„œ๋Š” DDoS(Distributed Denial of Service) ๊ณต๊ฒฉ์˜ ๊ฐœ์š”, ๊ฐ€์šฉ์„ฑ ์œ ์ง€์— ๋„์›€์ด ๋˜๋Š” ๊ธฐ์ˆ , ์ฐธ์กฐ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์„ค๋ช…์„ ํ†ตํ•ด ๋ณต์›๋ ฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ์ง€์นจ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Amazon GameLift๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ  ํŒ ๋ชจ์Œ

on | in Amazon GameLift, ํ•œ๊ตญ ๊ธฐ์ˆ  ๋ฌธ์„œ |

์ง€๋‚œ 2์›” 11์ผ ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์‹ ๊ทœ Lumberyard, Amazon GameLift ๋ฐ Twitch ํ†ตํ•ฉ ์„œ๋น„์Šค๋ผ๋Š” ๋ฐ˜๊ฐ€์šด ์†Œ์‹์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Amazon Lumberyard๋Š” CryEngine์— ๊ธฐ๋ฐ˜ํ•œ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์—”์ง„์ž…๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ ํ˜•ํƒœ๋กœ ์ œ๊ณต๋˜๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ๋นŒ๋“œํ•ด์„œ ์›ํ•˜๋Š” ๊ฒŒ์ž„์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ CryEngine 3.8.1์„ ๊ธฐ๋ณธ์œผ๋กœ AWS ์„œ๋น„์Šค์™€ GameLift๋ฅผ ์ง€์›ํ•˜๋„๋ก ์ œ๊ณต๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Lumberyard์— ๋Œ€ํ•œ ํŠœํ† ๋ฆฌ์–ผ ์ž๋ฃŒ๋Š” ์‹œ์ž‘ํ•˜๊ธฐ ๊ธฐ์ˆ  ๋ฌธ์„œ๋‚˜ Amazon GameDev Tutorials๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” Amazon GameLift์— ๋Œ€ํ•œ ์†Œ๊ฐœ์™€ ์ฒซ ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฌ์šด ๋ฌธ์ œ๋“ค์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ๋“ฑ์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

Amazon GameLift๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
Amazon GameLift๋Š” ์„ธ์…˜ ๊ธฐ๋ฐ˜์˜ ๋ฉ€ํ‹ฐ ํ”Œ๋ ˆ์ด์–ด ๊ฒŒ์ž„ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌ, ์šด์˜, ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด ๋‹ค๋ฅธ AWS ์„œ๋น„์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ด€๋ฆฌํ˜•์œผ๋กœ ์ œ๊ณต๋˜์–ด ๊ฒŒ์ž„ ์„œ๋ฒ„๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

Amazon GameLift ์„œ๋น„์Šค๋Š” ํด๋ผ์šฐ๋“œ์—์„œ ๊ฒŒ์ž„ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•  ๋•Œ ์ƒ๊ธฐ๋Š” ์–ด๋ ค์šด ์ ์„ ํ•ด์†Œํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•œ ์ดํ›„์— ์ด๊ฒƒ์„ ๋ฐฐํฌํ•˜๊ณ  ํ™•์žฅ์„ฑ ์žˆ๊ฒŒ ์šด์˜ํ•˜๋Š” ๊ฒƒ์€ ์‰ฌ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฒŒ์ž„ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ์ตœ์ดˆ๋กœ ๊ฒŒ์ž„์ด ์˜คํ”ˆ ๋˜์—ˆ์„ ๋•Œ, ์˜ˆ์ธก ํ•  ์ˆ˜ ์—†๋Š” ํŠธ๋ž˜ํ”ฝ์œผ๋กœ ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ์„œ๋ฒ„์˜ ๋‹ค์šด์€ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์•Œ๋ ค์ง€๊ณ , ๊ฒŒ์ž„ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋‚ด์—์„œ ์ข‹์ง€ ์•Š์€ ํ‰ํŒ์ด ๋งŒ๋“ค์–ด์ ธ์„œ ๊ฒŒ์ž„ ์„œ๋น„์Šค์— ์น˜๋ช…์ ์ด ๋  ์†Œ์ง€๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. GameLift๋Š” AWS์˜ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, ๋ฉ€ํ‹ฐ ํ”Œ๋ ˆ์ด์–ด ๊ฒŒ์ž„์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์„œ๋ฒ„ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฐ„์— ์ถ•์ ๋œ ๊ฒŒ์ž„ ์„œ๋น„์Šค ๊ธฐ์ˆ  ์ง€์‹์— ๊ธฐ๋ฐ˜ํ•ด์„œ AWS ๋‚ด๋ถ€ ์ „๋ฌธ๊ฐ€๋“ค์— ์˜ํ•ด ์„ค๊ณ„ ๋ฐ ๊ฐœ๋ฐœ๋˜์—ˆ๊ณ , ๊ฒŒ์ž„ ๋””๋ฒ„๊น…์ด๋‚˜ ํ”Œ๋ ˆ์ด์–ด๋“ค์˜ ์ƒํƒœ๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๊ฒŒ์ž„ ํ…”๋ฆฌ๋ฉ”ํŠธ๋ฆฌ(telemetry)๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์„ธ์…˜ํ˜• ๋ฉ€ํ‹ฐ ํ”Œ๋ ˆ์ด์–ด ๊ฒŒ์ž„์—๋„ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์˜ค๋žœ ์‹œ๊ฐ„๋™์•ˆ ์„ธ์…˜์ด ์œ ์ง€๋˜๋ฉด์„œ ์ƒํ˜ธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™๊ธฐํ™” ๋˜๋Š” ํ˜•ํƒœ ๋ณด๋‹ค๋Š” ์ผ์ • ์‹œ๊ฐ„ ์•ˆ์— ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ํ”Œ๋ ˆ์ดํ•˜๋ฉด์„œ ์ƒํ˜ธ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ๊ฒŒ์ž„์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

Amazon GameLift์— ๋Œ€ํ•œ ์ถ”์ฒœ ๊ฒŒ์ž„ ์ข…๋ฅ˜๋Š” ์•„๋ž˜ ํ‘œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ ํ•ฉํ•œ ๊ฒŒ์ž„ ํ˜•์‹ ๊ฒŒ์ž„ ์˜ˆ
FPS Call of Duty, Evolce
MOBA(Multiplayer Online Battle Arena)s Legue of Legends, Heroes of the Storm
Survival/Sandbox Minecraft, Ark
Racing Mario Kart, Kart Rider
Sports NBA2K, FIFA

MMO๋‚˜ ๋ชจ๋ฐ”์ผ ์†Œ์…œ ๊ฒŒ์ž„ ๋ฐ ์ „์šฉ ์„œ๋ฒ„๊ฐ€ ์—†๋Š” P2P ๊ฒŒ์ž„ ๋“ฑ์€ ์ ํ•ฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, Amazon GameLift๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐœ๋ฐœํ•˜๊ธฐ ์ ํ•ฉํ•œ ๊ฒŒ์ž„์€ ์ „์šฉ ์„œ๋ฒ„(dedicate server) ํ˜•์‹ ๊ฒŒ์ž„์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GameLift์— ์˜ˆ์ œ ์„œ๋น„์Šค ์˜ฌ๋ฆฌ๊ธฐ
ํ–ฅํ›„์—๋Š” GameLift์— ๋‹ค์–‘ํ•œ ๊ฒŒ์ž„ ์—”์ง„๊ณผ๋„ ์—ฐ๋™ํ•œ๋‹ค๋Š” ๊ณ„ํš์ด์ง€๋งŒ, ํ˜„์žฌ๋Š” Lumberyard๋งŒ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Lumberyard์—๋Š” ์—ฌ๋Ÿฌ ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”๋ฐ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ์ƒ˜ํ”Œ ๊ฒŒ์ž„๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ ๊ฒŒ์ž„ ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผ ํ•˜๋ฉด ์†์‰ฝ๊ฒŒ ์ƒ˜ํ”Œ ๊ฒŒ์ž„์„ ๋นŒ๋“œํ•˜๊ณ  GameLift๋กœ ์„œ๋น„์Šค๋ฅผ ์˜ฌ๋ ค ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” ํŠœํ† ๋ฆฌ์–ผ ๊ทธ ์ž์ฒด ๋ณด๋‹ค๋Š” ์ƒ˜ํ”Œ์„ ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์—์„œ ๋‚˜์˜ค๋Š” ๋ฒ„๊ทธ๋ผ๋˜๊ฐ€ ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ธฐ์ˆ  ํŒ์„ ์‚ดํŽด๋ณด๋„๋ก ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๋จผ์ € ๊ธฐ์ˆ  ํŒ์„ ์„ค๋ช…ํ•˜๊ธฐ ์•ž์„œ์„œ ์ƒ˜ํ”Œ ํ”„๋กœ๊ทธ๋žจ์„ GameLift์— ์˜ฌ๋ฆฌ๋Š” ๋‹จ๊ณ„๋ฅผ ๊ฐ„๋‹จํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. Lumberyard์˜ ์„ค์น˜
    • Visual Studio 2013, update 4๋ฅผ ์„ค์น˜ํ•œ๋‹ค.
    • Lumberyard๋ฅผ ํ’€๊ณ , 3rd ํŒŒํ‹ฐ ํˆด๋“ค์„ ๋ชจ๋‘ ์„ค์น˜ํ•œ๋‹ค.
    • ์˜ˆ์ œ ๊ฒŒ์ž„ ํŠœํ† ๋ฆฌ์–ผ๋Œ€๋กœ ์„œ๋ฒ„ ์˜ˆ์ œ๋ฅผ ์„ ํƒํ•œ ์ดํ›„์— ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•œ๋‹ค.
    • ๋นŒ๋“œ ํŒจํ‚ค์ง€๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค ์˜ˆ) install.bat ๋“ฑ์„ ์ ์ ˆํžˆ ์ˆ˜์ •ํ•œ๋‹ค.
  2. ๋นŒ๋“œ๋œ ํŒจํ‚ค์ง€๋ฅผ ์„œ๋ฒ„๋กœ ์—…๋กœ๋“œ
    • AWS CLI๋ฅผ ์„ค์น˜ํ•œ๋‹ค.
    • GameLift๋ฅผ ์œ„ํ•œ Policy๋ฅผ ์ƒ์„ฑํ•˜๊ณ , AWS IAM ์œ ์ €๋ฅผ ๋ถ™์ธ๋‹ค.
    • CLI ๋ช…๋ น์„ ํ†ตํ•ด GameLift์— ๋นŒ๋“œ๋œ ์„œ๋ฒ„ ํŒจํ‚ค์ง€๋ฅผ ์˜ฌ๋ฆฐ๋‹ค.
  3. GameLift Fleet์„ ์ƒ์„ฑ
    • Fleet์ด๋ฆ„, ์„œ๋ฒ„ ๋นŒ๋“œ, ์ธ์Šคํ„ด์Šค ํƒ€์ž…์„ ์„ ํƒํ•œ๋‹ค.
    • EC2 ํฌํŠธ ์„ธํŒ…์„ ํ•œ๋‹ค.
    • ๋Ÿฐ์น˜ ํŒจ์Šค์™€ ๋Ÿฐ์น˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค.
  4. ๊ฒŒ์ž„ ํด๋ผ์ด์–ธํŠธ ์ƒ์„ฑ
    • GameLiftClient.bat๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    • ๊ฒŒ์ž„ ์„ธ์…˜์„ ์ƒ์„ฑํ•œ๋‹ค.
    • ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๊ฒŒ์ž„ ์„ธ์…˜์— ์ ‘๊ทผํ•œ๋‹ค

ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋‚˜ ์‹ค์ˆ˜๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ  ํŒ
์œ„์™€ ๊ฐ™์ด GameLift์— ์ƒ˜ํ”Œ ๊ฒŒ์ž„์„ ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ ํŒ์„ ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

Tip 1. Unicode ๋ฌธ์ œ
์•ž์„œ ์„ค๋ช…ํ•œ ๋‹จ๊ณ„ ์ค‘ ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผ ํ•˜๋Š” ์™€์ค‘์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด์„œ, ์ปดํŒŒ์ผ์ด ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํŒŒ์ผ์ด Unicode ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ์ €์žฅ์ด ๋˜์ง€ ์•Š์•„ ์ฃผ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๊ณ  Visual Studio์—์„œ ํ•ด๋‹น ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š”IntersectorSegment.cppํŒŒ์ผ์— ๋Œ€ํ•œ ์ˆ˜์ • ๋‚ด์—ญ์ž…๋‹ˆ๋‹ค.


[๊ทธ๋ฆผ 1] ํŒŒ์ผ ์ธ์ฝ”๋”ฉ ํƒ€์ž… ๋ณ€๊ฒฝ

UTF-8 ํŒŒ์ผ ํƒ€์ž…์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜๋Š” ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋งค์šฐ ์ต์ˆ™ํ•œ ์ผ์ด๋ฏ€๋กœ ์‰ฝ๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์„œ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Tip 2. Install.bat ๋“ฑ ๋ฐฐ์น˜ ํŒŒ์ผ ์˜ค๋ฅ˜
๋นŒ๋“œ ํŒจํ‚ค์ง€๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ํ”ํ•œ ์˜ค๋ฅ˜๋Š” ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ •ํ™•ํžˆ ๋งŒ๋“ค์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Install.batํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.

vcredist_x64.exe /q

๋งŒ์•ฝ ์—ฌ๊ธฐ์„œ /q ์˜ต์…˜์„ ์‹ค์ˆ˜๋กœ ๊ธฐ์ˆ ํ•˜์ง€ ์•Š์€ ์ฑ„ ํŒจํ‚ค์ง•์„ ํ•˜๊ณ , GameLift๋กœ ์˜ฌ๋ ธ๋‹ค๋ฉด ์„œ๋ฒ„ ๊ทธ๋ฃน(Fleet)์„ ์ƒ์„ฑํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

LEET STATUS changed sequentially like this: NEW ๏ƒ  DOWNLOADING ๏ƒ  ERROR.

๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ข… ์˜ค๋ฅ˜๋กœ ์ธํ•œ ๊ฒฐ๊ณผ๋Š” ๋นŒ๋“œ๋ฅผ GameLift๋กœ ์˜ฌ๋ฆด ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์„œ๋ฒ„ ๊ทธ๋ฃน(Fleet) ๋“ฑ์„ ์ƒ์„ฑํ•  ๋•Œ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๊ณ , ๋˜ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ์ง๊ด€์ ์ด์ง€ ์•Š์•„ ๋””๋ฒ„๊น…์— ๋งค์šฐ ์–ด๋ ค์›€์„ ๊ฒช์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๊ผญ ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ์˜ ์—๋Ÿฌ๋ฅผ ํ™•์ธํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Tip 3. EC2 ํฌํŠธ์„ค์ •
๊ฒŒ์ž„ ์„œ๋ฒ„ ๊ทธ๋ฃน(Fleet)์„ ์ƒ์„ฑํ•  ๋•Œ, EC2 port ์— ๋Œ€ํ•œ ์„ค์ •์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ˜์†”์—์„œ ์ž‘์—…ํ•  ๋•Œ ํฌํŠธ ์„ค์ • ์ €์žฅ์ด ๋˜๋„๋ก ํ•˜๋ ค๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ ์ชฝ์˜ ์ž‘์€ ์•„์ด์ฝ˜์„ ๋ˆŒ๋Ÿฌ์„œ ์ €์žฅ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ”ํžˆ ๊ทธ๋ƒฅ ๊ฐ’์„ ๊ธฐ๋กํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ €์žฅ๋  ์ค„ ์•Œ๊ณ  ๊ฐ’๋งŒ ๋„ฃ์€ ๋‹ค์Œ Initialize Fleet ๋ฒ„ํŠผ๋งŒ ๋ˆ„๋ฅผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ํฌํŠธ ์„ค์ •์ด ๋˜์ง€ ์•Š์•„์„œ ๋ฌธ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.


[๊ทธ๋ฆผ 2] EC2 ํฌํŠธ ์„ค์ •

Fleet์„ ์ƒ์„ฑํ•œ ์ดํ›„์—๋Š” ๊ฐ ์„ค์ • ๊ฐ’์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ EC2 ํฌํŠธ๊ฐ€ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ๊ทธ๋ฆผ 3์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


[๊ทธ๋ฆผ 3] Fleet ์˜ ์„ค์ • ๊ฒฐ๊ณผ ํ™•์ธ

Tip 4. GameLiftClient.bat ์ˆ˜์ •ํ•˜๊ธฐ
๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆ˜์ •์ด ํ•„์š”ํ•œ ๊ฒƒ์€ ๊ฒŒ์ž„ ํด๋ผ์ด์–ธํŠธ ์ƒ์„ฑ ์‹œ GameLiftClient.bat๋ฅผ ์ƒ์„ฑํ•œ๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ํŠœํ† ๋ฆฌ์–ผ ๋ฌธ์„œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ–ˆ์ง€๋งŒ, ์ถ”๊ฐ€์ ์œผ๋กœ ๋‘ ๊ฐœ์˜ ์ •๋ณด๊ฐ€ ๋” ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

MultiplayerProjectLauncher.exe +sv_port 33435 +gamelift_endpoint gamelift.us-east-1.amazonaws.com +gamelift_aws_region us-east-1 +gamelift_fleet_id  +gamelift_aws_access_key  +gamelift_aws_secret_key  +map gameliftlobby

์•„๋ž˜์™€ ๊ฐ™์ด ์—”๋“œํฌ์ธํŠธ์™€ ๋ฆฌ์ „ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

MultiplayerProjectLauncher.exe +sv_port 33435 +gamelift_endpoint gamelift.us-east-1.amazonaws.com +gamelift_aws_region us-east-1 +gamelift_fleet_id  +gamelift_aws_access_key  +gamelift_aws_secret_key  +map gameliftlobby

๋ฐฐ์น˜ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์‹คํ–‰๋œ ๊ฒŒ์ž„์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” Amazon GameLift์˜ ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ธํŒ…ํ•˜๋ฉด์„œ ํ”ํžˆ ๋งˆ์ฃผ์น˜๊ฒŒ ๋˜๋Š” ์˜ค๋ฅ˜๋ฅผ ํ”ผํ•˜๋Š” ํŒ์„ ์„ค๋ช…ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์—๋Š” Amazon GameLift SDK๋ฅผ ์ด์šฉํ•ด์„œ ์ง์ ‘ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋ฅผ ์„ธํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ณธ ๊ธ€์€ ์•„๋งˆ์กด์›น์„œ๋น„์Šค ์ฝ”๋ฆฌ์•„์˜ ์†”๋ฃจ์…˜์ฆˆ ์•„ํ‚คํ…ํŠธ๊ฐ€ ๊ตญ๋‚ด ๊ณ ๊ฐ์„ ์œ„ํ•ด ์ „ํ•ด ๋“œ๋ฆฌ๋Š” AWS ํ™œ์šฉ ๊ธฐ์ˆ  ํŒ์„ ๋ณด๋‚ด๋“œ๋ฆฌ๋Š” ์ฝ”๋„ˆ๋กœ์„œ, ์ด๋ฒˆ ๊ธ€์€ ๋ฐ•์„ ์šฉ ์†”๋ฃจ์…˜์ฆˆ ์•„ํ‚คํ…ํŠธ๊ป˜์„œ ์ž‘์„ฑํ•ด์ฃผ์…จ์Šต๋‹ˆ๋‹ค.

Amazon RDS โ€“ MySQL 5.7 ์ง€์› ์‹œ์ž‘

on | in Amazon RDS |

์˜ค๋Š˜๋ถ€ํ„ฐ Amazon RDS์—์„œ MySQL 5.7์„ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ์ถœ์‹œ์—๋Š” MySQL ์„ฑ๋Šฅ ํ–ฅ์ƒ ๋ฐ ํ™•์žฅ์„ฑ, ๋ณด์•ˆ ๊ธฐ๋Šฅ ํ–ฅ์ƒ ๋“ฑ๋„ ํ•จ๊ป˜ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • MySQL JSON ๋„ค์ดํ‹ฐ๋ธŒ ์ง€์›: JSON ๋ฐ์ดํ„ฐ ๋ฐ ๋นŒํŠธ์ธ ํ•จ์ˆ˜ (JSON_ARRAY, JSON_OBJECT, JSON_QUOTE, JSON_CONTAINS, JSON_CONTAINS_PATH, JSON_EXTRACT, JSON_KEYS, JSON_SEARCH, JSON_APPEND, JSON_ARRAY_APPEND, JSON_ARRAY_INSERT, JSON_INSERT, JSON_MERGE, JSON_REMOVE, JSON_REPLACE, JSON_SET, JSON_UNQUOTE, JSON_DEPTH, JSON_LENGTH, JSON_TYPE, and JSON_VALID).
  • Performance Schema๋ฅผ ํ†ตํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ ํ†ต๊ณ„ ์ œ๊ณต
  • ํŒŒ์‹ฑ, EXPLAIN ๋ฐ ์ฟผ๋ฆฌ ์ตœ์ ํ™” ์„ฑ๋Šฅ ๊ฐœ์„ 
  • GIS๋ฅผ ์œ„ํ•œ ๋„ค์ดํ‹ฐ๋ธŒ InnoDB ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ ์ธ๋ฑ์Šค ์ง€์› ๋ฐ Boost.Geometry ํ†ตํ•ฉ (์ž์„ธํ•œ ๊ฒƒ์€ MySQL 5.7 and GIS, an Example ๋ฐ Making Use of Boost Geometry in MySQL GIS์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.)
  • ์‹ ๊ทœ ํด๋ฝ ๋ชจ๋“œ๋ฅผ ํ†ตํ•œ ๋ณ‘๋ ฌ ๋ฆฌํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ (๋” ์ž์„ธํ•œ ๊ฒƒ์€ Multi-threaded Replication Performance in MySQL 5.7์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.)
  • InnoDB ํ™•์žฅ์„ฑ ๋ฐ ์ž„์‹œ ํ…Œ์ด๋ธ” ์„ฑ๋Šฅ ํ–ฅ์ƒ ๋ฐ ๋™์  buffer pool ํฌ๊ธฐ ๋ณ€๊ฒฝ๊ณผ ์ถฉ๋Œ ๋ณต๊ตฌ ๊ฐœ์„ .

๊ธฐํƒ€ ๋” ์ž์„ธํ•œ ๊ฒƒ์€ MySQL 5.7 Release Notes์„ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์‹œ์ž‘ํ•˜๊ธฐ
AWS ๊ด€๋ฆฌ ์ฝ˜์†”, AWS Command Line Interface (CLI), AWS Tools for Windows PowerShell ๋ฐ RDS API (CreateDBInstance) ๋˜๋Š” CloudFormation ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€๋ฆฌ ์ฝ˜์†”์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•:

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด EC2 ์ธ์Šคํ„ด์Šค์˜ ๋ณด์•ˆ ๊ทธ๋ฃน์„ ํŽธ์ง‘ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ ๊ทœ Performance Schema๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MySQL 5.7์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜์‹œ๊ณ  ๋‚œ ํ›„, ์—…๊ทธ๋ ˆ์ด๋“œ ํ•˜์‹œ๊ธธ ๊ถŒ์žฅํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์˜ค๋Š˜ ๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ!
Amazon RDS for MySQL 5.7 ์ธ์Šคํ„ด์Šค๋Š”US East (Northern Virginia), US West (Northern California), US West (Oregon), Europe (Ireland), Europe (Frankfurt), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Asia Pacific (Seoul), China (Beijing), South America (Brazil) ๋ฐ AWS GovCloud (US) ๋ฆฌ์ „์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

โ€” Jeff;

์ด ๊ธ€์€ Amazon RDS Update โ€“ Support for MySQL 5.7์˜ ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ์ž…๋‹ˆ๋‹ค.

AWS Lambda ํ•จ์ˆ˜์—์„œ VPC๋‚ด ์ž์› ์ ‘๊ทผ ๊ธฐ๋Šฅ ์ถœ์‹œ

on | in AWS Lambda |

๋ช‡ ๋‹ฌ ์ „์— ๊ณง AWS Lambda ํ•จ์ˆ˜์—์„œ VPC๋‚ด ์ž์›์„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ๋ผ๊ณ  ์˜ˆ๊ณ ํ•ด ๋“œ๋ ธ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜ ๋ถ€ํ„ฐ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Lambda ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด Amazon Redshift ๋ฐ์ดํ„ฐ์›จ์–ด ํ•˜์šฐ์Šค, Amazon ElastiCache ํด๋Ÿฌ์Šคํ„ฐ, Amazon Relational Database Service (RDS) ์ธ์Šคํ„ด์Šค ๋ฐ ํŠน์ • VPC ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค ์—”๋“œ ํฌ์ธํŠธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์ž์‹ ์˜ VPC๋ฅผ ํ•˜๋‚˜ ์„ ํƒํ•˜๊ณ  ์ ์ ˆํ•œ ์„œ๋ธŒ๋„ท๊ณผ ๋ณด์•ˆ ๊ทธ๋ฃน์„ ์ง€์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Lambda ํ•จ์ˆ˜๊ฐ€ VPC ๋‚ด์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด Lambda๋Š” ์ด๋Ÿฌํ•œ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ Elastic Network Interfaces (ENI)์™€ ์‚ฌ์„ค IP ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

VPC๋‚ด ๋ฆฌ์†Œ์Šค ์ ‘๊ทผํ•˜๊ธฐ
์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ๋•Œ ์„ค์ •ํ•˜๊ฑฐ๋‚˜, VPC ์ ‘๊ทผ์„ ์œ„ํ•ด ๊ธฐ์กด ํ•จ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Lambda ์ฝ˜์†” ๋˜๋Š” CLI์—์„œ ๊ธฐ๋Šฅ์„ ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์•„๋ž˜๋Š” ์ฝ˜์†”์—์„œ ์„ค์น˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์œ„์˜ ํ™”๋ฉด์— ๋”ฐ๋ผ ์„ค์ •ํ•˜๋ฉด ๋˜๋ฉฐ, ๋” ์ž์„ธํ•œ ๊ฒƒ์€ Configuring a Lambda Function to Access Resources in an Amazon VPC์˜ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์•Œ์•„ ๋‘์‹ค ์ 
์•„๋ž˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์•Œ์•„๋‘์‹œ๋ฉด ์ข‹์€ ์ ๋“ค์ž…๋‹ˆ๋‹ค.

ENI & IP ์ฃผ์†Œ ์ž์› โ€“ ์ฒ˜๋ฆฌํ•  ์ด๋ฒคํŠธ ์ˆ˜์— ๋”ฐ๋ผ Lambda๊ฐ€ ์ž๋™์œผ๋กœ ํ™•์žฅํ•˜๋ฏ€๋กœ VPC๋Š” ์ง€์ •๋œ ์„œ๋ธŒ๋„ท์— ์ถฉ๋ถ„ํ•œ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ธํ„ฐ๋„ท ์ ‘์† โ€“ ํŠน์ • ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์ด ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ธํ„ฐ๋„ท์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํ•จ์ˆ˜๊ฐ€ ์ธํ„ฐ๋„ท ์ ‘์†์ด ํ•„์š”ํ•˜๋‹ค๋ฉด, VPC์—์„œ Managed NAT Gateway๋ฅผ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ (์ž์„ธํ•œ ๋‚ด์šฉ์€ AWS ์‹ ๊ทœ NAT ๊ฒŒ์ดํŠธ์›จ์ด ์„œ๋น„์Šค ์ถœ์‹œ! ์ฐธ๊ณ ) ์ž์‹ ์˜ NAT ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ณด์•ˆ ๊ทธ๋ฃน โ€“ ๋žŒ๋‹ค ํ•จ์ˆ˜๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ณด์•ˆ ๊ทธ๋ฃน์ด ์„œ๋ธŒ๋„ท๊ณผ ์ธํ„ฐ๋„ท ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

S3 ์—”๋“œํฌ์ธํŠธ โ€“VPC์— ์žˆ๋Š” S3 ์—”๋“œ ํฌ์ธํŠธ(์ž์„ธํ•œ ๋‚ด์šฉ์€ New โ€“ VPC Endpoint for Amazon S3)์— ์ ‘๊ทผ ๊ธฐ๋Šฅ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์˜จ๋ผ์ธ ์„ธ๋ฏธ๋‚˜ โ€“ ๋” ์ž์„ธํ•œ ์‚ฌํ•ญ์€ Essentials: Introducing AWS VPC Support for AWS Lambda ์˜จ๋ผ์ธ ์„ธ๋ฏธ๋‚˜์— ์ฐธ์—ฌํ•ด ๋ณด์‹ญ์‹œ์˜ค.

โ€” Jeff;

์ด ๊ธ€์€ New โ€“ Access Resources in a VPC from Your Lambda Functions์˜ ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ์ž…๋‹ˆ๋‹ค.

๊ฒŒ์ž„ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์‹ ๊ทœ Lumberyard, Amazon GameLift ๋ฐ Twitch ํ†ตํ•ฉ ์„œ๋น„์Šค

on | in Amazon GameLift, Lumberyard, Twitch |

์„ธ๊ณ„ ์ˆ˜์ค€์˜ ํ’ˆ์งˆ ๋†’์€ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์€ ๋งค์šฐ ์–ด๋ ต๊ณ  ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์ด ๋งŽ์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ์‚ฌ์šฉ์ž๋“ค์˜ ์š”๊ตฌ๋Š” ๋งค์šฐ ๋†’๊ณ , ๋ฐ์Šคํฌํ†ฑ, ์ฝ˜์†”, ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ ๋“ฑ ๋‹ค์–‘ํ•œ ์†Œ์…œ ๊ฒŒ์ž„์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„์€ ๊ณ ์œ ์˜ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ํ๋ฆ„์— ์˜ํ•œ ๊ธด ๊ฐœ๋ฐœ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๊ณ , ์„ฑ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ˆ˜์‹ญ ๋งŒ ๋˜๋Š” ์ˆ˜๋ฐฑ ๋งŒ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํ•˜๋ฃจ ๋งŒ์— ์‚ฌ์šฉํ•ด ๋ณด๊ณ  ์ธ๊ธฐ๋ฅผ ์–ป์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฐ๊ฒฝ์—์„œ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ๊ณผ์ •์„ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜์‘ํ•˜๋„๋ก ์„ค๊ณ„ ํ•ด ๋‚˜๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ํŒ€์€ ์Šคํ† ๋ฆฌ ๋””์ž์ธ, ๊ฒŒ์ž„ ๋””์ž์ธ, ๋ฌผ๋ฆฌ ๋…ผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ์‚ฌ์šด๋“œ ์ œ์ž‘, ๊ทธ๋ž˜ํ”ฝ ๋””์ž์ธ, ์‹œ๊ฐ ํšจ๊ณผ ๋ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ „๋ฌธ ๊ธฐ์ˆ ์„ ๊ฐ–์ถ˜ ํŒ€์›๋“ค์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ž„์ด ์ธํ„ฐ๋„ท ๊ธฐ๋ฐ˜์ด๋ผ๋ฉด, ๋†’์€ ํ™•์žฅ์„ฑ, ์œ ์—ฐํ•œ ์˜จ๋ผ์ธ ์Šคํ† ๋ฆฌ์ง€, ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๋ฐ ๊ด€๋ฆฌ, ๋ณด์•ˆ ๋“ฑ ๋‹ค์–‘ํ•œ ์ „๋ฌธ์„ฑ์„ ๊ฐ–์ถœ ํ•„์š”๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

18~36 ๊ฐœ์›”์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒŒ์ž„ ๊ฐœ๋ฐœ๊ณผ ์ฐฝ์˜์  ์ œ์ž‘ ์ž‘์—…์„ ์œ„ํ•ด ๊ฒŒ์ž„ ์ŠคํŠœ๋””์˜ค์— ์žˆ์–ด์„œ๋Š” ์ƒ๋‹นํ•œ ๊ธˆ์ „์  ๋ถ€๋‹ด์ด ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๊ฒŒ์ž„์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์‰ฝ์ง€ ์•Š์€ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

์‹ ๊ทœ AWS ๊ฒŒ์ž„ ์„œ๋น„์Šค
์˜ค๋Š˜ ๋‘ ๊ฐœ์˜ ์‹ ๊ทœ AWS ๊ฒŒ์ž„ ์„œ๋น„์Šค๋ฅผ ํด๋ผ์šฐ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์ „๋ฌธ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•ด ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์—…๊ณ„์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ฒŒ์ž„ ์—”์ง„๊ณผ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์—ฌ๊ธฐ์— AWS ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ „์ฒด ํŒจํ‚ค์ง€๋Š” Twitch ๋น„๋””์˜ค ํ”Œ๋žซํผ๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์—ฐ๊ณ„ํ•˜๊ณ  ๊ด€๋ จ AWS ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค, ์Šคํ† ๋ฆฌ์ง€ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์ด ๋ฐœํ‘œํ•˜๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

Lumberyard โ€“ ์ „๋ฌธ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๊ฒŒ์ž„ ์—”์ง„๊ณผ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค. CryEngine, Double Helix ๋ฐ AWS ๋“ฑ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ๊ณผ ์ฆ๋ช…๋œ ๊ธฐ์ˆ ์„ ํ•จ๊ป˜ ์œตํ•ฉํ•˜์—ฌ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์—์„œ ๋‚ญ๋น„๋ฅผ ์—†์• ๊ณ  ๋‹จ๊ณ„๋ฅผ ๋‹จ์ˆœํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Lumberyard ๊ฒŒ์ž„ ์—”์ง„์œผ๋กœ ํด๋ผ์šฐ๋“œ ์—ฐ๊ฒฐ ๋ฐ 3D ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์„ ์ง€์›ํ•˜๊ณ  ๊ฒŒ์ž„ ์ž์‚ฐ์˜ ๊ด€๋ฆฌ ๋ฐ ์ธ๊ณต ์ง€๋Šฅ(AI), ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ์Œํ–ฅ ๋“ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์ธก๋ฉด์—์„œ๋Š” Lumberyard IDE์— ์˜ํ•ด ์‹ค๋‚ด ๋ฐ ์•ผ์™ธ ํ™˜๊ฒฝ์ด๋‚˜ ์บ”๋ฒ„์Šค์—์„œ ์„ค๊ณ„๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด ์ „๋ฌธ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์ž„๋ฒ ๋””๋“œ ์ฝ˜ํ…์ธ  ํ๋ฆ„๊ณผ ๋ฆฌ์†Œ์Šค ํŒŒ์ดํ”„ ๋ผ์ธ, Photoshop, Maya, 3ds Max์—์„œ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์„ ๋‚˜์ค‘์— IDE์—์„œ ๊ฐ€์ ธ์™€ ํŽธ์ง‘ํ•˜์—ฌ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ C++ ๋ฐ Visual Studio (AWS SDK for C++) ๋ฐ Flow Graph ๋„๊ตฌ์™€ Cloud Canvas๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์šฐ๋“œ ์—ฐ๊ฒฐ ๊ฒŒ์ž„์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Amazon GameLift โ€“ ์ตœ๊ทผ ๋งŽ์€ ๊ฒŒ์ž„์€ ํ™œ์„ฑ ์‚ฌ์šฉ์ž ์—ฐ๊ฒฐ ์ˆ˜์— ๋”ฐ๋ผ ํ™•์žฅ์„ฑ ๋†’์€ ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Amazon GameLift๋Š” Lumberyard์—์„œ ๊ตฌ์ถ•ํ•œ ๊ฒŒ์ž„์—์„œ ๋ฉ€ํ‹ฐ ํ”Œ๋ ˆ์ด์–ด๋กœ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅํ•œ ๊ฒŒ์ž„ ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ ์ˆ˜์— ๋”ฐ๋ผ ํ™•์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. AWS ๊ฒŒ์ž„ ์„œ๋ฒ„์˜ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ , ํ”Œ๋ ˆ์ด์–ด๋กœ ๋ถ€ํ„ฐ ์‹คํ–‰ ๋ถ€ํ•˜์— ๋”ฐ๋ผ ํ™•์žฅํ•˜๋„๋ก EC2 ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์„œ๋ฒ„ ๊ตฌ์ถ•, ํ™•์žฅ, ์‹คํ–‰ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ž์ฒด์ ์œผ๋กœ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  GameLift์—์„œ ์ผ์ผ ํ™œ์„ฑ ์‚ฌ์šฉ์ž ์ˆ˜(DAU)์— ๋Œ€ํ•ด ์ผ๋ฐ˜ EC2 ์˜จ๋””๋ฉ˜๋“œ ๋น„์šฉ, ์ปดํ“จํŒ… ์„ฑ๋Šฅ, ์Šคํ† ๋ฆฌ์ง€, ๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ์— ์‚ฌ์šฉํ•œ ๋งŒํผ ์ง€๋ถˆํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Twitch ํ†ตํ•ฉ โ€“ ์ตœ๊ทผ ๊ฒŒ์ž„ ์‚ฌ์šฉ์ž๋“ค์€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„์„ ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” Twitch์—์„œ ๋‹ค๋ฅธ ํ”Œ๋ ˆ์ด์–ด์™€ ํŒฌ๋ผ๋ฆฌ ๊ต๋ฅ˜๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์™€ ์•„๋งˆ์ถ”์–ด ์„ ์ˆ˜๋Š” Twitch์—์„œ ์ž์‹ ์˜ ์ „๋ฌธ ๋ถ„์•ผ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ํŒฌ์„ ๋Š˜๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ตœ๊ทผ ์ƒํ™ฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์–‘ํ•œ ๊ด€๊ณ„๋ฅผ ํ‚ค์›Œ ๊ฐ•ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด Lumberyard์—์„œ ๊ตฌ์ถ• ๋œ ๊ฒŒ์ž„๊ณผ ๋‘ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด Twitch ๊ธฐ๋Šฅ๊ณผ ์—ฐ๊ณ„ํ•˜์—ฌ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Twitch ChatPlay๋Š” Twitch ์ฑ„ํŒ… ๋Œ€ํ™” ์† ํŠน์ • ํ‚ค์›Œ๋“œ์— ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒŒ์ด๋จธ๊ฐ€ ๊ฐ€์žฅ ๊ธฐ๋Œ€ํ•˜๋Š” ํ–‰๋™์„ ํ•ด ์ฃผ๋„๋ก ์ฑ„ํŒ…์—์„œ ์ œ์•ˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Twitch JoinIn ์ฑ„ํŒ… ์ฑ„๋„ ๋‚ด์—์„œ ๊ฒŒ์ด๋จธ๋ฅผ ๋ฉค๋ฒ„๋กœ ๋Œ์—ฌ ๋“ค์ด๊ธฐ ์œ„ํ•œ ์•Œ๋ฆผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋Š” AWS ๋‹ค๋ฅธ ๋งŽ์€ ์„œ๋น„์Šค์ฒ˜๋Ÿผ ๋…์ฐฝ์ ์ธ ๊ธฐ๋Šฅ์„ ๊ฒŒ์ž„์—์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•œ ๋น ๋ฅธ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ๋ฐฉํ–ฅ ์ „ํ™˜ ๋ฐ ์‚ฌ์šฉ์ž๋ผ๋ฆฌ์˜ ์—ฐ๊ฒฐ๊ณผ ์˜ค๋ฝ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ ๊ฐ ์ง€์› ์„œ๋น„์Šค โ€“ ๊ฐ์ข… ๊ธฐ์ˆ  ๋„์›€๋ง(๋ฌธ์„œ ๋ฐ ๋™์˜์ƒ), ์ „์šฉ ํฌ๋Ÿผ์„ ํฌํ•จํ•œ ๊ณ ๊ฐ ์ง€์›๋„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฉ”๋‰ด์— ๋Œ€ํ•ด์„œ AWS ์œ ์ƒ ์ง€์›๋„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Lumberyard๋กœ ๊ฒŒ์ž„ ๊ฐœ๋ฐœํ•˜๊ธฐ
Lumberyard๊ฐ€ ์˜ค๋Š˜ ๋ฐœํ‘œ ์ฃผ์š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์•ž์„œ ์ด์•ผ๊ธฐํ•œ ๋Œ€๋กœ ์ „๋ฌธ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๋กœ ๊ณ ํ’ˆ์งˆ์˜ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ฒŒ์ž„์„ ๊ฐœ๋ฐœ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋””์ž์ธํ•œ ์ƒˆ๋กœ์šด ๊ฒŒ์ž„ ์—”์ง„์ด๋ฉฐ, ๋‹ค์Œ ํ™˜๊ฒฝ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • Windows โ€“ Vista, Windows 7, 8, and 10.
  • Console โ€“ PlayStation 4 and Xbox One.

๋ชจ๋ฐ”์ผ ๋‹จ๋ง์ด๋‚˜ VR ํ—ค๋“œ์…‹์€ ํ˜„์žฌ ํ™•์ธ ์ค‘์ด๋ฉฐ, ๋ช‡ ๊ฐœ์›” ๋‚ด์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Lumberyard ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ Windows PC ๋˜๋Š” ๋…ธํŠธ๋ถ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋™์ž‘ ์†๋„๊ฐ€ ๋น ๋ฅธ ์ฟผ๋“œ ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ, ์ตœ์†Œ 8GB์˜ ๋ฉ”๋ชจ๋ฆฌ, 200GB์˜ ๋””์Šคํฌ ์—ฌ์œ  ๊ณต๊ฐ„ 2GB ์ด์ƒ์˜ ๋ฉ”๋ชจ๋ฆฌ์—์„œ Direct X 11 ํ˜ธํ™˜์˜ ํ•˜์ด ์—”๋“œ ๋น„๋””์˜ค ์นด๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Visual Studio 2013 Update 4 ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ฐ Visual C ++ ์žฌ๋ฐฐํฌ ํŒจํ‚ค์ง€๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Lumberyard Zip ํŒŒ์ผ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ…œํ”Œ๋ฆฟ ์ž์‚ฐ๊ณผ ํŽธ์ง‘๊ธฐ๋ฅผ ์œ„ํ•œ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Lumberyard ๊ฒŒ์ž„ ์—”์ง„ ๋ฐ”์ด๋„ˆ๋ฆฌ์™€ ์†Œ์Šค ์ฝ”๋“œ๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ๊ณ , ์ฐธ์กฐ ์šฉ์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜์—ฌ๋„ ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ฒŒ์ž„์„ ์ฐจ๋ณ„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋งž์ถคํ˜• ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด๋„ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Zip ํŒŒ์ผ์€ ๋Ÿฐ์ฒ˜๋„ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, Lumberyard ๋ฐ ๊ธฐํƒ€ ๋Ÿฐํƒ€์ž„ SDK ๋„๊ตฌ ๋ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ œ๋Œ€๋กœ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Lumberyard Editor๋Š” ๊ฐœ๋ฐœ ์ค‘์ธ ๊ฒŒ์ž„์„ ์บก์Аํ™”ํ•˜๊ฑฐ๋‚˜ ๊ฒŒ์ž„ ์—์…‹ ํŽธ์ง‘์— ์‚ฌ์šฉํ•  ํŽธ์ง‘ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

Lumberyard Editor๋Š” Asset Browser, Layer Editor, LOD Generator, Texture Browser, Material Editor, Geppetto (character and animation tools), Mannequin Editor, Flow Graph (visual programming), AI Debugger, Track View Editor, Audio Controls Editor, Terrain Editor , Terrain Texture Layers Editor, Particle Editor, Time of Day Editor, Sun Trajectory Tool, Composition Editor, Database View, UI Editor๋ฅผ ํฌํ•จํ•œ ์ œํ’ˆ๊ตฐ์ž…๋‹ˆ๋‹ค. ๋ชจ๋‘ ๋„๊ตฌ ๋ชจ์Œ์„ ํ†ตํ•ด ํ™”๋ฉด์—์„œ ์กฐ์ž‘ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒŒ์ž„์— ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์œผ๋กœ์„œ ์„ ํƒ๋œ ๋ชจ๋“ˆ ์–‘์‹์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด Gems๋ผ๋Š” ์ฝ”๋“œ ํŒจํ‚ค์ง• ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Gems์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด, ๊ฒŒ์ž„ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. Lumberyard์—๋Š” AWS์™€ ์—ฐ๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ Gems๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋ฐ–์—๋„ ๊ตฌ๋ฆ„, ๊ฒŒ์ž„ ํšจ๊ณผ, GameLift ์ ‘๊ทผ, ๋น›, ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ๋น„, ๋ˆˆ, ํ† ๋„ค์ด๋„, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค, ๋ฉ€ํ‹ฐ ํ”Œ๋ ˆ์ด์–ด ๊ธฐ๋Šฅ, ์ˆฒ ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Flow Graph์™€ Cloud Canvas๊ธฐ๋ฐ˜ ์ฝ”๋”ฉ
์˜ˆ์ „์—๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ C++์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ๋ผ์ดํ”„ ์‚ฌ์ดํด(ํŽธ์ง‘/์ปดํŒŒ์ผ/์‹คํ–‰)์„ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ Lumberyard๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ Lua์™€ Flow Graph๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Flow Graph๋Š” ๋ณต์žกํ•œ ๊ฒŒ์ž„ ๋กœ์ง์„ ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์‹  ๋น„์ฃผ์–ผ ์Šคํฌ๋ฆฝํŒ… ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ๊ฒŒ์ž„์˜ ์„ค์ •, ์†Œ๋ฆฌ ์ œ์–ด ํšจ๊ณผ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๊ธฐ ๊ตฌ์ถ• ๋œ ๋…ธ๋“œ ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Flow Graph๋Š” ๋…ธ๋“œ์™€ ๋งํฌ์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์‹ฑ๊ธ€ ๋ ˆ๋ฒจ์€ ๋‹ค์ค‘ ๊ทธ๋ž˜ํ”„๋ฅผ ํฌํ•จํ•˜๊ณ  ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ๋Š” ๊ฒŒ์ž„ ์—”ํ‹ฐํ‹ฐ๋‚˜ ํ–‰๋™์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋งํฌ๋Š” ํ•œ ๋…ธ๋“œ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค๋ฅธ ๋…ธ๋“œ์˜ ์ž…๋ ฅ๊ณผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž…๋ ฅ์€ ์—ฌ๋Ÿฌ ํƒ€์ž…(Boolean, Float, Int, String, Vector)์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ถœ๋ ฅ ํฌํŠธ๋Š” ์–ด๋А ์ž…๋ ฅ ํฌํŠธ์—์„œ๋„ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅํ•˜๋ฉฐ, (๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด) ์ž๋™์œผ๋กœ ํ˜• ๋ณ€ํ™˜์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

30๊ฐœ๊ฐ€ ๋„˜๋Š” ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ์œผ๋ฉฐ, AWS ์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” (Cloud Canvas๋ผ๋Š”) ์„ธํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Amazon Simple Queue Service (SQS)์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ 2๊ฐœ์˜ ๋…ธ๋“œ์™€ Amazon Simple Notification Service (SNS)์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ 4 ๊ฐœ์˜ ๋…ธ๋“œ, Amazon DynamoDB์— Read/Write๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” 7๊ฐœ์˜ ๋…ธ๋“œ, AWS Lambda ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ฐœ์˜๋…ธ๋“œ, Amazon Cognito๋ฅผ ์‚ฌ์šฉํ•œ ํ”Œ๋ ˆ์ด์–ด์˜ ์ธ์ฆ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ฐœ ๋“ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. AWS๋ฅผ ํ˜ธ์ถœ ํ•˜๋Š” ๋ชจ๋“  ๊ฒŒ์ž„์€ Cloud Canvas๋ฅผ ์„ค์ •ํ•˜๊ณ , AWS Identity and Access Management (IAM)๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Lambda ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” DailyGiftLambda ์‚ฌ์šฉ ์˜ˆ:
DailyGiftLambda:

์•„๋ž˜๋Š” โ€œDaily Giftโ€๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ Lambda์™€ DynamoDB๋ฅผ ์‚ฌ์šฉํ•œ Flow Graph์ž…๋‹ˆ๋‹ค.

๋” ์ž์„ธํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋Š” Lumberyard User Guide Cloud Canvas ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

Amazon GameLift ๊ธฐ๋ฐ˜ ๋ฐฐํฌ
๋งŒ์•ฝ ์ œ์ž‘ ๊ฒŒ์ž„์ด ๋†’์€ ํ™•์žฅ์„ฑ ๋ฐ ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜์˜ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด Amazon GameLift๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ธธ ๊ถŒํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ฐœ์ธ ์ŠˆํŒ… ๊ฒŒ์ž„, ์„œ๋ฐ”์ด๋ฒŒ ๋ ˆ์ด์Šค, ์Šคํฌ์ธ , MOBA(๋ฉ€ํ‹ฐ ํ”Œ๋ ˆ์ด ๋ฐฐํ‹€ ์•„๋ ˆ๋‚˜) ๋“ฑ ์‚ฌ์šฉ์ž ๊ฐ„ ๊ณต์œ  ์—ฐ๊ฒฐ, ์ •๊ธฐ์  ๋™๊ธฐํ™” ๋“ฑ์ด ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๊ฒŒ์ž„์„ ์„œ๋น„์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์ธก ๋กœ์ง๋ฅผ ๋นŒ๋“œํ•œ ํ›„์— Amazon GameLift์— ์—…๋กœ๋“œํ•˜๋ฉด Windows ๊ธฐ๋ฐ˜ AMI (Amazon Machine Image)์œผ๋กœ ๋ช‡ ๋ถ„๋งŒ์— ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. AMI๊ฐ€ ์ค€๋น„ ์žˆ๋‹ค๋ฉด, Amazon GameLift ๊ทธ๋ฃน์„ ๋งŒ๋“ค๊ณ , AMI๋กœ ์„ค์ •ํ•˜๋ฉด ๋ฐฑ์—”๋“œ ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ์ค‘์ธ ๊ฒŒ์ž„ ์„ธ์…˜์€ Amazon GameLift ์ฝ˜์†”์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Flow Graph ์ฝ”๋“œ๋Š” Amazon GameLift Gem์„ ๋งŒ๋“ค ์ˆ˜ ์„ธ์…˜ ์ƒ์„ฑ ๋ฐ ์„œ๋น„์Šค ๊ฐœ์‹œ๋ฅผ ์ œ์–ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ Amazon GameLift ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

Twitch ํ†ตํ•ฉํ•˜๊ธฐ
๊ฐœ๋ฐœํ•œ ๊ฒŒ์ž„์— Twitch ChatPlay๊ณผ Twitch JoinIn์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์—ฐ๊ณ„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ์กด ํ”Œ๋žซํผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒŒ์ž„์„ ๋งŒ๋“ค๋ฉด, ์ง€์ •๋œ Twitch ์ฑ„๋„์— ์ž…๋ ฅ๋œ ํ‚ค์›Œ๋“œ๋ฅผ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜โ€‹โ€‹ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ‚ค์›Œ๋“œ๋กœ ๋นจ๊ฐ•, ๋…ธ๋ž‘, ํŒŒ๋ž‘, ๋…น์ƒ‰, ์˜ค๋ Œ์ง€์™€ ๋ณด๋ผ์ƒ‰์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€๊ฒฉ ๋ฐ ์„œ๋น„์Šค ์ง€์—ญ
Lumberyard๊ณผ Amazon GameLift ์˜ค๋Š˜ ๋ถ€ํ„ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ฒŒ์ž„์„ ์†์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด ๋ณด์„ธ์š”.

๋ฌด๋ฃŒ๋กœ ์ œ๊ณต๋˜๋Š” Lumberyard๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋…๋ฆฝ ์‹คํ–‰ํ˜• ๊ฒŒ์ž„์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ, Cloud Canvas์—์„œ ์„ค์ •๋œ IAM ์‚ฌ์šฉ์ž๋ฅผ ์‚ฌ์šฉํ•ด AWS ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ AWS SDK for C++๋ฅผ ์‚ฌ์šฉ ํ•˜๋Š”๋ฐ๋งŒ ๋น„์šฉ์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. (GameLift๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.)

Amazon GameLift๋Š” US East (Northern Virginia) ๋ฐ US West (Oregon) ๋ฆฌ์ „์—์„œ ํ˜„์žฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๊ฐ์˜ ํ”ผ๋“œ๋ฐฑ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ฆฌ์ „์—๋„ ๊ณ„์† ํ™•๋Œ€ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ ์ด์šฉ ๋ฒ”์œ„๋Š” c3.large ์ธ์Šคํ„ด์Šค์—์„œ ์ตœ๋Œ€ ์›”๊ฐ„ 125์‹œ๊ฐ„ (์ตœ์žฅ 1 ๋…„)๊นŒ์ง€ ์ด์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„์—๋Š” ์‚ฌ์šฉ EC2 ์ธ์Šคํ„ด์Šค์˜ ์ •์ƒ ๊ฐ€๊ฒฉ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ๋‹น EBS ์Šคํ† ๋ฆฌ์ง€๋Š” 1 ๊ฐœ์›” ๋‹น 50GB์˜ ๋น„์šฉ์ด 1,000 ๋ฐ์ผ๋ฆฌ ์•กํ‹ฐ๋ธŒ ์œ ์ € ๋‹น 1๊ฐœ์›”์— USD 1.5์ž…๋‹ˆ๋‹ค.

โ€” Jeff;

์ด ๊ธ€์€ Lumberyard + Amazon GameLift + Twitch for Games on AWS์˜ ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ์ž…๋‹ˆ๋‹ค.

์—†์–ด์ง€๋Š” ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋Œ€ํ•œ 120๊ฐ€์ง€ ์•„์ด๋””์–ด

on | in Fun |

์ˆ˜์ˆ˜๊ป˜๊ธฐ๋ฅผ ํ•˜๋‚˜ ๋‚ด๊ฒ ์Šต๋‹ˆ๋‹ค. ์—„์ฒญ ํฐ ๊ฑด๋ฌผ์ธ๋ฐ, ์•ˆ์—๋Š” ๋งค์šฐ ์ถฅ๊ณ  ๋“ค์–ด๊ฐ€๊ธฐ ์–ด๋ ค์šด ๊ฒƒ์ด ๋ฌด์—‡์ผ๊นŒ์š”? ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ๋น„์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ AWS ํด๋ผ์šฐ๋“œ๋กœ ์ „ํ™˜ํ•œ ๋‹ค์Œ ๋‚จ๊ฒจ์ง„ โ€œ๋ฐ์ดํ„ฐ ์„ผํ„ฐโ€์ž…๋‹ˆ๋‹ค. ํ•œ๋•Œ๋Š” IT ๊ด€๋ จ ์ข…์‚ฌ์ž๋“ค์˜ ์ž๋ถ€์‹ฌ์ด๊ธฐ๋„ ํ–ˆ์ง€๋งŒ, ์ด์ œ๋Š” ์„ธ์ƒ์ด ๋ฐ”๋€Œ์–ด ํฌ๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ํž˜๋“  ์ฐฝ๊ณ ์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ AWS ๊ณ ๊ฐ๋“ค์ด ์ด๋ฏธ ๊ธฐ์กด์— ์šด์˜ํ•˜๋˜ ๋ฐ์ดํ„ฐ์„ผํ„ฐ๋ฅผ AWS๋กœ ์ด์ „ํ•˜์˜€๊ณ , ์•„๋ž˜์— ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

  • Delaware North โ€“ ํŒ์ฝ˜ ์ œ์กฐ ์—…์ฒด๋กœ์„œ ๊ธฐ์กด ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๋ฌผ๋ฆฌ ์„œ๋ฒ„๋ฅผ AWS๋กœ ์˜ฎ๊ฒจ ์„œ๋ฒ„ ๋Œ“์ˆ˜๋ฅผ 90% ์ด์ƒ ์ค„์ด๊ณ , 5๋…„๊ฐ„ 3.5๋ฐฑ๋งŒ ๋‹ฌ๋Ÿฌ์˜ ๋น„์šฉ์ด ๊ฐ์†Œํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • Seaco โ€“ SAP Business Suite๋ฅผ AWS๋กœ ๊ตฌ๋™ํ•˜์—ฌ 90% ์ด์ƒ ๊ธฐ์กด ์„œ๋ฒ„๋ฅผ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
  • Kaplan โ€“ ๊ต์œก ์‹œํ—˜์„ ์ฃผ๊ด€ํ•˜๋Š” ๊ธฐ์—…์œผ๋กœ ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ, ์ •์‹ ์„œ๋น„์Šค ์„œ๋ฒ„๋“ค์ด ํ•œ๋•Œ 12๊ฐœ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋‚˜๋ˆ ์ ธ ์žˆ์—ˆ๋Š”๋ฐ AWS ์ด์ „์„ ํ†ตํ•ด 8๊ฐœ๋ฅผ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
  • Talen Energy โ€“ ํ•ต ๋ฐœ์ „์†Œ ์—…์ฒด๋กœ์„œ AWS๋กœ ์„œ๋ฒ„๋ฅผ ๋ชจ๋‘ ์ด์ „ํ•จ์œผ๋กœ์„œ ํ•ต์‹ฌ ๋ถ„์•ผ์ธ ์—๋„ˆ์ง€ ๊ด€๋ จ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • Condé Nast โ€“ ์œ ๋ช… ์žก์ง€ ์ถœํŒ์‚ฌ๋กœ์„œ 500์—ฌ๋Œ€ ์„œ๋ฒ„์™€ 1ํŽ˜ํƒ€๋ฐ”์ดํŠธ ๋ฐ์ดํ„ฐ๋ฅผ AWS๋กœ ๋ชจ๋‘ ์ด์ „ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ํ์‡„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Hearst Corporation โ€“ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ํšŒ์‚ฌ๋กœ์„œ 29๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ์ค‘์— 10๊ฐœ๋ฅผ AWS๋กœ ์ด์ „ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • University of Notre Dame โ€“ ๋Œ€ํ•™ ํ™ˆํŽ˜์ด์ง€ ์„œ๋ฒ„๋ฅผ ๋ชจ๋‘ AWS๋กœ ์ด์ „ํ•˜์˜€๊ณ , ๋‚จ์•„ ์žˆ๋Š” ๋ถ€๋ถ„๋„ ํ–ฅํ›„ 3๋…„๋‚ด์— ์ด์ „ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
  • Capital One โ€“ ๋ฏธ๊ตญ ์‹ ์šฉ์นด๋“œ ๋ฐ ๊ธˆ์œต์‚ฌ๋กœ์„œ ์ค‘์š” ๊ธฐ์ˆ  ๋ถ€๋ฌธ์„ AWS๋กœ ์ด์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • General Electric โ€“ ๋ฏธ๊ตญ ์ฃผ์š” ๊ธฐ์—…์œผ๋กœ 9,000์—ฌ๊ฐœ์˜ ์—…๋ฌด๋ฅผ ์ด๋ฏธ AWS๋กœ ์ด์ „ํ•˜์˜€๊ณ , ํ–ฅํ›„ 34๊ฐœ ์ค‘ 30๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ๋‹ซ์„ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
  • ์กฐ์ด์‹œํ‹ฐ โ€“ ํ•œ๊ตญ ๊ฒŒ์ž„ ์—…์ฒด๋กœ์„œ ์ž์‚ฌ์˜ 14๊ฐœ ์ฃผ์š” ๊ฒŒ์ž„์„ AWS๋กœ ์ด์ „ํ•˜๊ณ  ํ–ฅํ›„ ์ถœ์‹œ ๋˜๋Š” 8๊ฐœ์˜ ๊ฒŒ์ž„๋„ AWS์—์„œ ์ถœ์‹œ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ด๋ ‡๊ฒŒ AWS ํด๋ผ์šฐ๋“œ๋กœ ์ด์ „ํ•˜๊ฒŒ ๋˜๋ฉด ๊ธฐ์กด์— ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์—๋Š” ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ์š”? ์•„๋ž˜ ๋™์˜์ƒ์€ Condé Nast์˜ AWS ํด๋ผ์šฐ๋“œ ์ด์ „ ํ›„ ์ž์ฒด ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ํ์‡„ ๊ณผ์ •์„ ๋ณด์—ฌ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ์‡„๋œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๋‚จ์€ ๊ฑด๋ฌผ ๊ณต๊ฐ„์€ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

๋งŽ์€ ๋ถ„๋“ค์ด ์ด์— ๋Œ€ํ•ด ์•„์ด๋””์–ด๋ฅผ ๋ณด๋‚ด์ฃผ์…จ๋Š”๋ฐ, 120์—ฌ ๊ฐ€์ง€ ์ •๋„ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„์ด์Šคํ•˜ํ‚ค ๊ฒฝ๊ธฐ์žฅ, ์‹ค๋‚ด ์Šคํ‚ค์žฅ์„ ๋งŒ๋“ค์ž๋Š” ๋ถ„ ๋ถ€ํ„ฐ ๋Œ€ํ˜• ์‹๋‹น, ๋ฏธ์ˆ ๊ด€, ๋ฐ•๋ฌผ๊ด€, ๋“œ๋ก  ๋‚ ๋ฆฌ๋Š” ๊ณต๊ฐ„ ๋“ฑ๋“ฑ ๋งŽ์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

120์—ฌ๊ฐ€์ง€์˜ ๋‹ค์–‘ํ•œ ์•„์ด๋””์–ด๋ฅผ ์‚ดํŽด ๋ณด์„ธ์š”. ์ด์ œ AWS ํด๋ผ์šฐ๋“œ๋ฅผ ํ†ตํ•ด ๊ธฐ์กด ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ์žฌํ™œ์šฉ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ฆ๊ฑฐ์šด ์ƒ์ƒ๋„ ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์€ 120 Uses for Your Empty Data Center ํ•œ๊ตญ์–ด ํŽธ์ง‘๋ณธ์ž…๋‹ˆ๋‹ค.

AWS API ํ˜ธ์ถœ ํ•˜๊ธฐ (2) โ€“ Amazon S3 ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ฏธ๋ฆฌ ์„ ์–ธ๋œ(pre-signed) URL ์ƒ์„ฑํ•˜๊ธฐ

on | in Amazon S3, AWS API, ํ•œ๊ตญ ๊ธฐ์ˆ  ๋ฌธ์„œ |

์ด๋ฒˆ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์€ ์ง€๋‚œ ๋ฒˆ์— ์˜ฌ๋ ธ๋˜ AWS API ํ˜ธ์ถœํ•˜๊ธฐ(๊ฐœ๋ก ํŽธ)์˜ ํ›„์†ํŽธ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ฐœ๋ก ํŽธ ๋ธ”๋กœ๊ทธ๋ฅผ ๋๊นŒ์ง€ ์ฝ์œผ์‹œ๊ณ ๋„ ์• ๋งค๋ชจํ˜ธ ํ•˜์…จ์„ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ HTTP/HTTPS API ํ˜ธ์ถœ ์š”์ฒญ์„ ๋งŒ๋“ค์–ด ๋ณด๋ฉด์„œ ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ํŒŒ์•…ํ•˜๊ณ  ์ดํ•ด๋ฅผ ๋•๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.  

โ€˜์–ด๋–ค ์˜ˆ์ œ๊ฐ€ ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ์‹ค์ œ ์—…๋ฌด์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์„๊นŒ?โ€™ ๋งŽ์ด ๊ณ ๋ฏผํ•˜์˜€๋Š”๋ฐ์š”. ์ œ๋ชฉ์—์„œ ์ถ”์ธกํ•˜์…จ๊ฒ ์ง€๋งŒ, Amazon S3 ๋ฒ„ํ‚ท์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ํŠน์ • ์‹œ๊ฐ„ ๋‚ด์—๋งŒ ์œ ํšจํ•˜๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋ฆฌ ์„ ์–ธ๋œ(pre-signed) URL์„ ๋งŒ๋“ค์–ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๊ณณ์„ ์ฐธ์กฐํ•ด์„œ, Java, .NET ๊ทธ๋ฆฌ๊ณ  Ruby์šฉ SDK๋ฅผ ์ด์šฉํ•ด ๋ฏธ๋ฆฌ ์„ ์–ธ๋œ URL์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ AWS Explorer๋‚˜ ๊ธฐํƒ€ ์ƒ์šฉ ๋„๊ตฌ์—์„œ๋„ ์ด๋Ÿฐ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์—์„œ๋Š” bash ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ์ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” HTTP/HTTPS API ํ˜ธ์ถœ ์š”์ฒญ์„ ์ง์ ‘ ๋งŒ๋“ค์–ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ๋ฏธ๋ฆฌ ์„ ์–ธ๋œ URL์„ ๋งŒ๋“œ๋Š”๋ฐ ์„œ๋ช… ๋ฒ„์ „ 4๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. Amazon S3 ๊ฒฝ์šฐ 2014๋…„ 1์›” 30์ผ ์ดํ›„์— ์ƒ์„ฑ๋œ ๋ฆฌ์ „์—์„œ๋Š” ์„œ๋ช… ๋ฒ„์ „ V2๋Š” ๋” ์ด์ƒ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 2016๋…„ 1์›” 7์ผ ๊ฐœ์„ค๋œ ์„œ์šธ ๋ฆฌ์ „๋„ ์„œ๋ช… ๋ฒ„์ „ V4 ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

1. ์‚ฌ์ „ ์ค€๋น„ ์‚ฌํ•ญ
์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” openssl(1) ๋ฒ„์ „ 1 ๋˜๋Š” ๊ทธ ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ช…ํ‚ค๋ฅผ ๋งŒ๋“ค ๋•Œ ํ‚ค๊ฐ’์ด ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ์ด์ง„ํ‚ค๊ฐ’์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„์ „ 1 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ ํ™•์ธ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•˜์‹œ๊ณ , ์˜ˆ์ œ์™€ ๊ฐ™์ด 0.9.8zg ๋ฒ„์ „์ด๋ฉด ์ด๊ณณ์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ฐ›์•„ ์„ค์น˜ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ๋ฐฉ๋ฒ•์€ ์ด ๋ธ”๋กœ๊ทธ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ์„ค๋ช…๋“œ๋ฆฌ์ง€๋Š” ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

$ openssl version
OpenSSL 0.9.8zg 14 July 2015

๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž ์‹ ์› ์ •๋ณด์™€ ๋ฆฌ์ „ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY ๋ฐ AWS_DEFAULT_REGION ์„ ์ด์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์„ค์ • ๋ฐฉ๋ฒ•์€ ์ด๊ณณ์ด๋‚˜ ์•„๋ž˜๋ฅผ ์ฐธ์กฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. AWS ๊ณ„์ •์— ๋Œ€ํ•œ ์ค‘์š”ํ•œ ์‹ ์› ์ •๋ณด๋ฅผ ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ๋‚ด์— ํฌํ•จ์‹œํ‚ค๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ ํ™˜๊ฒฝ์— ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

$ export AWS_ACCESS_KEY_ID=<YOUR_ACCESS_KEY_ID>
$ export AWS_SECRET_ACCESS_KEY=<YOUR_SECRET_ACCESS_KEY_ID>
$ export AWS_DEFAULT_REGION=<AWS_REGION>

๋กœ์ผ€์ผ ์–ธ์–ด ์„ค์ •์€ UTF-8์ธ์ฝ”๋”ฉ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋กœ์ผ€์ผ ์„ค์ •์ด ์—ฌ๋Ÿฌ๋ถ„์˜ ์ž‘์—… ํ™˜๊ฒฝ๊ณผ ๋‹ค๋ฅด๋‹ค๋ฉด bash ์‰˜ ์Šคํฌ๋ฆฝํŠธ ๋‚ด์— ํฌํ•จ์‹œ์ผœ๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.

$ export  export LC_ALL=ko_kr.UTF-8
$ export LANG=ko_kr.UTF-8

2. ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ
์œ„ ์„ ํ–‰ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด, ์ด์ œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.  Amazon S3 API ํ˜ธ์ถœ ์š”์ฒญ์€ Amazon S3 API Reference๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฐธ์กฐํ•˜์˜€์œผ๋ฉฐ, ๋ฏธ๋ฆฌ ์„ ์–ธ๋œ URL์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ „๋ฐ˜์ ์ธ ์ž‘์—… ์ˆœ์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. ํ‘œ์ค€ ์š”์ฒญ(Canonical Request) ํ˜•์‹์œผ๋กœ ๋ฉ”์‹œ์ง€ ๋‚ด์šฉ๋“ค์„ ์ •๋ ฌํ•˜๊ธฐ
  2. ์„œ๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์ž์—ด(String To Sign) ๋งŒ๋“ค๊ธฐ
  3. AWS ์„œ๋ช… ๋ฒ„์ „ 4(Signature) ๊ณ„์‚ฐํ•˜๊ธฐ
  4. ์ƒ์„ฑํ•œ ์„œ๋ช… ์ •๋ณด๋ฅผ HTTP/HTTPS API ์š”์ฒญ์— ์ถ”๊ฐ€ํ•˜๊ธฐ

์œ„ ์„œ๋ช… ๊ณ„์‚ฐ ์ ˆ์ฐจ๋ฅผ ๊ตฌ์ฒด์ ์ด๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋„์‹ํ™”ํ•ด ๋†“์€ ๊ฒƒ์ด ์•„๋ž˜ ๋‹ค์ด์–ด๊ทธ๋žจ์ด๋ฉฐ, ์ด ์ˆœ์„œ๋ฅผ ๋”ฐ๋ผ์„œ ์Šคํฌ๋ฆฝ์Šคํ‹€ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ํ•ญ๋ชฉ์—๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์„ค๋ช…์€ ์ด๊ณณ์„ ์ฐธ์กฐํ•˜์‹œ๋ฉด ๋งŽ์€ ๋„์›€์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” ์œ„ ์ ˆ์ฐจ์— ๋”ฐ๋ผ ์ƒ์„ฑ๋œ ๋ฏธ๋ฆฌ ์„ ์–ธ๋œ URL์˜ ํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค. ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด URL์— ์ค„๋ฐ”๊ฟˆ ๋ฌธ์ž๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ํ•œ ์ค„๋กœ ํ‘œํ˜„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://examplebucket.s3.amazonaws.com /test.txt?
X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=<YOUR_ACCESS_KEY_ID>/20160115/ap-northeast-2/s3/aws4_request&
&X-Amz-Date=20160115T000000Z
&X-Amz-Expires=86400
&X-Amz-SignedHeaders=host
&X-Amz-Signature=<SIGNATURE_VALUE>

๊ทธ๋ฆฌ๊ณ  URL์—์„œ X-Amz-Credential ํ—ค๋”์˜ ๊ฐ’๋„ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด์„œ โ€œ/โ€๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ‘œํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” %2F๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

&X-Amz-Credential=<YOUR_ACCESS_KEY_ID>%2F20160115%2Fap-northeast-2%2Fs3%2Faws4_request

URL๋‚ด์— ์ธ์ฆ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜ ์„ค๋ช…
X-Amz-Algorithm ์„œ๋ช… ๋ฒ„์ „๊ณผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹๋ณ„ํ•˜๊ณ , ์„œ๋ช…์„ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ ์‚ฌ์šฉ. ์„œ๋ช… ๋ฒ„์ „ 4๋ฅผ ์œ„ํ•ด์„œ โ€œAWS4-HMAC-SHA256โ€ ๋กœ ์„ค์ •
X-Amz-Credential ์•ก์„ธ์Šค ํ‚ค ID์™€ ๋ฒ”์œ„ ์ •๋ณด(์š”์ฒญ ๋‚ ์งœ, ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์ „, ์„œ๋น„์Šค ๋ช…). ๋ฆฌ์ „ ๋ช…์€ ๋ฆฌ์ „ ๋ฐ ์—”๋“œํฌ์ธํŠธ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ
X-Amz-Date ๋‚ ์งœ๋Š” ISO 8601ํ˜•์‹. ์˜ˆ: 20160115T000000Z
X-Amz-Expires ๋ฏธ๋ฆฌ ์„ ์–ธ๋œ URL์ด ์œ ํšจํ•œ ์‹œ๊ฐ„ ์ฃผ๊ธฐ. ์ดˆ๋‹จ์œ„. ์ •์ˆ˜ ๊ฐ’. ์ตœ์†Œ 1์—์„œ ์ตœ๋Œ€ 604800 (7์ผ) ์˜ˆ: 86400 (24์‹œ๊ฐ„)
X-Amz-SignedHeaders ์„œ๋ช…์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜์–ด์ง€๋Š” ํ—ค๋” ๋ชฉ๋ก. HTTP host ํ—ค๋”๊ฐ€ ์š”๊ตฌ๋จ
X-Amz-Signature ์š”์ฒญ์„ ์ธ์ฆํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋ช…

์ฃผ์˜: X-Amz-Signature ํ—ค๋”๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์€ ํ‘œ์ค€ ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด(Canonical Query String)์— ํฌํ•จ์‹œํ‚ต๋‹ˆ๋‹ค. ํ‘œ์ค€ ํ—ค๋”(Canonical Headers)๋Š” HTTP host ํ—ค๋”๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ ์‚ฌ์ธ๋œ URL์„ ๋งŒ๋“ค ๋•Œ ์‹ค์ œ ํŽ˜์ด๋กœ๋“œ์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ‘œ์ค€ ์š”์ฒญ(Canonical Request)์— ์žˆ๋Š” ํŽ˜์ด๋กœ๋“œ ํ•ด์‹œ๋Š” ํฌํ•จ ์•ˆ ์‹œํ‚ต๋‹ˆ๋‹ค. ๋Œ€์‹  โ€œUNSIGNED-PAYLOADโ€ ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋งŒ๋“  ์™„์„ฑ๋œ ์Šคํฌ๋ฆฝํŠธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. Bash ์‰˜ ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— bash ์‰˜ ๋ฌธ๊ตฌ์— ๋Œ€ํ•ด์„œ๋Š” ๋”ฐ๋กœ ์„ค๋ช…ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

#!/bin/bash
#
export PATH="/usr/local/ssl/bin:$PATH"
urlEncode() {
  LINE="$1"
  LENGTH="${#LINE}"
  I=0
  while [ $I -lt $LENGTH ]
    do
    C="${LINE:I:1}"
  case $C in
    [a-zA-Z0-9.~_-]) printf "$C" ;;
    *) printf '%%%02X' "'$C" ;;
  esac
    let I=I+1
  done
}

getHexaDecimalString() {
  read LINE
  LENGTH="${#LINE}"
  I=0
  while [ $I -lt $LENGTH ]
    do
    C="${LINE:I:1}"
   printf '%2x' "'$C"
   let I=I+1
  done
}

getSignatureKey() {
  SECRET_KEY=$1
  DATESTAMP=$2
  REGIONNAME=$3
  SERVICENAME=$4
  STRING_TO_SIGN=$5

  HEX_KEY=$(echo -n "AWS4${SECRET_KEY}" | getHexaDecimalString)
  HEX_KEY=$(echo -n "${DATESTAMP}" | openssl dgst -sha256 -mac HMAC -macopt hexkey:${HEX_KEY})
  HEX_KEY=$(echo -n "${REGIONNAME}" | openssl dgst -sha256 -mac HMAC -macopt hexkey:${HEX_KEY#* })
  HEX_KEY=$(echo -n "${SERVICENAME}" | openssl dgst -sha256 -mac HMAC -macopt hexkey:${HEX_KEY#* })
  SIGNING_KEY=$(echo -n "aws4_request" | openssl dgst -sha256 -mac HMAC -macopt hexkey:${HEX_KEY#* })

  SIGNATURE=$(echo -en "${STRING_TO_SIGN}" | openssl dgst -binary -hex -sha256 -mac HMAC -macopt hexkey:${SIGNING_KEY#* })
  echo "${SIGNATURE#* }"
} 

getHexaHash() {
  PAYLOAD="$@"
  HASH=$(echo -n "${PAYLOAD}" | openssl dgst -sha256)
  echo  "${HASH#* }"
}

### Main ###
if [ -z $AWS_DEFAULT_REGION ] || [ -z $AWS_SECRET_ACCESS_KEY ] || [ -z $AWS_ACCESS_KEY_ID ]
then
  echo "Please set $AWS_DEFAULT_REGION, $AWS_SECRET_ACCESS_KEY, and $AWS_ACCESS_KEY_ID environment variables"
exit 1
fi
SK="$AWS_SECRET_ACCESS_KEY"
AK="$AWS_ACCESS_KEY_ID"
REGION="$AWS_DEFAULT_REGION"

[ $# -ne 6 ] && exit 2
 
while getopts ":b:k:e:" OPT; do
  case $OPT in
        b)
         BUCKET=$OPTARG
         ;;
        k)
         S3KEY=$OPTARG
         ;;
        e)
         EXPIRES=$OPTARG
         ;;
       *)
   echo "Invalid option: -$OPTARG" >&2
   exit 3
   ;;
   esac
done

SERVICENAME="s3"
HOST="${BUCKET}.${SERVICENAME}.amazonaws.com"
ENDPOINT="http://${BUCKET}.${SERVICENAME}.amazonaws.com"

# step 1. Create a Canonical request
AMZ_DATE=$(date -u +%Y%m%dT%H%M%SZ)
DATESTAMP=$(date -u +%Y%m%d)
AMZ_EXPIRES=$((${EXPIRES}*60))   # minute -> second

HTTPMETHOD="GET"
CANONICAL_URI="/${S3KEY}"
#
CANONICAL_HEADERS="host:${HOST}\n"
SIGNED_HEADERS="host"
PAYLOAD_HASH="UNSIGNED-PAYLOAD"
#
ALGORITHM="AWS4-HMAC-SHA256"
CREDENTIAL_SCOPE="${DATESTAMP}/${REGION}/${SERVICENAME}/aws4_request"
#
CANONICAL_QUERYSTRING="X-Amz-Algorithm=${ALGORITHM}"
CANONICAL_QUERYSTRING="${CANONICAL_QUERYSTRING}&X-Amz-Credential=$(urlEncode "${AK}/${CREDENTIAL_SCOPE}")"
CANONICAL_QUERYSTRING="${CANONICAL_QUERYSTRING}&X-Amz-Date=${AMZ_DATE}"
CANONICAL_QUERYSTRING="${CANONICAL_QUERYSTRING}&X-Amz-Expires=${AMZ_EXPIRES}"
CANONICAL_QUERYSTRING="${CANONICAL_QUERYSTRING}&X-Amz-SignedHeaders=${SIGNED_HEADERS}"
CANONICAL_REQUEST="${HTTPMETHOD}\n${CANONICAL_URI}\n${CANONICAL_QUERYSTRING}\n${CANONICAL_HEADERS}\n${SIGNED_HEADERS}\n${PAYLOAD_HASH}"

# step 2. String To Sign
STRING_TO_SIGN="${ALGORITHM}\n${AMZ_DATE}\n${CREDENTIAL_SCOPE}\n$(getHexaHash "$(echo -e "${CANONICAL_REQUEST}")")"

# step 3. Signature
SIGNATURE="$(getSignatureKey $SK $DATESTAMP $REGION $SERVICENAME $STRING_TO_SIGN)"

# step 4.  Create a request URL
CANONICAL_QUERYSTRING="${CANONICAL_QUERYSTRING}&X-Amz-Signature=${SIGNATURE}"

echo "request_url = ${ENDPOINT}/${S3KEY}?${CANONICAL_QUERYSTRING}"

์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ„๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋Œ€๋ถ€๋ถ„์˜ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด์„ ๋ฐฐ์ œํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฒ”์šฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ ์ ˆํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด๋“ค์ด ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•˜๊ณ  ์ถฉ๋ถ„ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์นœ ํ›„ ์‚ฌ์šฉํ•˜์‹œ๊ธธ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” ์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ํ•œ ์‹œ๊ฐ„๋™์•ˆ๋งŒ ๋ฒ„ํ‚ท examplebucket์— ํฌํ•จ๋œ ์˜ค๋ธŒ์ ํŠธtest.txt๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ์‚ฌ์ธ๋œ URL์„ ๋งŒ๋“  ์˜ˆ์ž…๋‹ˆ๋‹ค.

$ ./apis3.sh -b examplebucket -k test.txt -e 60
request_url = http://examplebucket.s3.amazonaws.com/test.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<YOUR_ACCESS_KEY_ID>%2F20160115%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Date=20160115T130732Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=d0578b9fe721c9964765f2ab6bf6f8a1fc7c4966956785688b881783b661bdfd

์ด URL์€ ์ƒ์„ฑ๋œ ์‹œ๊ฐ„๋ถ€ํ„ฐ 60๋ถ„๊ฐ„ ์œ ํšจํ•˜๋ฉฐ, ๊ณต์œ ํ•˜๊ณ  ์‹ถ์€ ์ž„์˜์˜ ์‚ฌ๋žŒ์—๊ฒŒ ์ „๋‹ฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ณต์œ ๋œ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ curl(1) ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด,  ํ•ด๋‹น API ํ˜ธ์ถœ ์š”์ฒญ์ดAmazon S3 ์—”๋“œํฌ์ธํŠธ๋กœ ์ „๋‹ฌ๋˜๊ณ  ์ ์ ˆํžˆ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” curl(1) ๋ฅผ ์ด์šฉํ•ด์„œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค.

$ curl -o "test.txt" "http://examplebucket.s3.amazonaws.com/test.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<YOUR_ACCESS_KEY_ID>%2F20160115%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Date=20160115T130732Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=d0578b9fe721c9964765f2ab6bf6f8a1fc7c4966956785688b881783b661bdfd"
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100  3619  100  3619    0     0   6305      0 --:--:-- --:--:-- --:--:--  6304

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜๋Š” ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜์–ด ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์‹คํŒจํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค.

$ curl -o "test.txt" "http://examplebucket.s3.amazonaws.com/test.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<YOUR_ACCESS_KEY_ID>%2F20160115%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Date=20160115T130732Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=d0578b9fe721c9964765f2ab6bf6f8a1fc7c4966956785688b881783b661bdfd"
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Request has expired</Message><X-Amz-Expires>60</X-Amz-Expires><Expires>2016-01-15T140732:52Z</Expires><ServerTime>2016-01-18T20:13:55Z</ServerTime><RequestId>F865CB514FF4C92A</RequestId><HostId>f6Bv6Jtht91bSqt8OPsxirsrHZkWs7Qcc4kNYjZ2tJbPUmt8BW9Wv1hAUY2YFDKqSpEvFr8PLbI=</HostId></Error>

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

AWS API ํ˜ธ์ถœํ•˜๊ธฐ (1) โ€“ ๊ฐœ๋ก ํŽธ

on | in AWS API, ํ•œ๊ตญ ๊ธฐ์ˆ  ๋ฌธ์„œ |

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ์„ ์–ป๊ธฐ๊นŒ์ง€ ์ „ํ†ต์ ์ธ ๋ฐ์ดํ„ฐ์„ผํ„ฐ ํ™˜๊ฒฝ์—์„œ ๊ด€๋ฆฌ์ž๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž์™€ ์šด์˜์ž๋Š” ์„œ๋ฒ„, ์Šคํ† ๋ฆฌ์ง€ ๋ฐ ๋„คํŠธ์›Œํฌ์™€ ๊ฐ™์€ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์šด์˜์ฒด์ œ์™€ ํ•„์š”ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ๋™ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ๊นŒ์ง€ ์ œ๊ณตํ•˜๋Š”๋ฐ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ทธ ๋งŒํผ ๋น„์ฆˆ๋‹ˆ์Šค์˜ ์‹œ์žฅ ์ง„์ž… ์‹œ๊ฐ„์€ ๊ธธ์–ด์งˆ ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์˜ ๊ฒฝ์šฐ์—๋Š” ๋„คํŠธ์›Œํฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ณณ์ด๋ผ๋ฉด ์žฅ์†Œ๋‚˜ ์‹œ๊ฐ„์— ๊ตฌ์•  ๋ฐ›์ง€ ์•Š๊ณ  ์–ธ์ œ ์–ด๋””์„œ๋‚˜ API ํ˜ธ์ถœ์„ ํ†ตํ•ด ์ˆ˜๋ถ„๋‚ด์— ์›ํ•˜๋Š” ์ž์›์„ ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

AWS ํด๋ผ์šฐ๋“œ์—์„œ ์ธํ”„๋ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ณด์•ˆ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋ถ„์„, ๋ฐฐํฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง  ๋“ฑ์˜ ๋ชจ๋“  IT ์ž์›์€ API ํ˜ธ์ถœ์„ ํ†ตํ•ด์„œ ์ด์šฉ๋ฉ๋‹ˆ๋‹ค. API๋Š” ์ด๋ ‡๊ฒŒ ๋ชจ๋“  IT ์ž์›์„ ์ฝ”๋“œ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. API๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ๊ทธ๋ฆฌ ์–ด๋ ต๊ณ  ์ƒ์†Œํ•œ ์ผ์€ ์•„๋‹ˆ์ง€๋งŒ, ์šด์˜์ž๋‚˜ ๊ด€๋ผ์ž ๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ์ธก๋ฉด์—์„œ๋Š” ๋‚ฏ์„  ์ผ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, AWS๋Š” ์‚ฌ์šฉ์ž๋“ค์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์ง์ ‘ API ํ˜ธ์ถœ์„ ํ•˜์ง€ ์•Š๊ณ ๋„ ๋ณด๋‹ค ์‰ฝ๊ณ  ํŽธํ•˜๊ฒŒ ์ž์›์„ ํ”„๋กœ๋น„์ €๋‹ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ ๋ฐ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋„๊ตฌ๋“ค๋„ ๊ฐœ๋ฐœํ•ด์„œ ํ•จ๊ป˜ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค๋งˆ๋‹ค ์ž˜ ์„ค๊ณ„๋œ ์›น ๊ธฐ๋ฐ˜์˜ ๊ด€๋ฆฌ ์ฝ˜์†”์ด๋‚˜ ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ด๊ณ , ์‹ฌ์ง€์–ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋„ ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์œ„ํ•œ SDK๊นŒ์ง€ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์€ ๋‚ด๋ถ€์ ์œผ๋กœ ๊ธฐ๋ณธ ์›์žฌ๋ฃŒ์— ํ•ด๋‹นํ•˜๋Š” API๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ์ง๊ด€์ ์ด๊ณ  ํŽธ๋ฆฌํ•œ ๋งŽ์€ ๋„๊ตฌ๋“ค์ด ์ œ๊ณต๋˜์ง€๋งŒ, ๊ฒฝ์šฐ์— ๋”ฐ๋ผ AWS ํด๋ผ์šฐ๋“œ์— HTTP/HTTPS ๊ธฐ๋ฐ˜์˜ APIํ˜ธ์ถœ ์š”์ฒญ์„ ์ง์ ‘ ๋ณด๋‚ด์•ผ ํ•˜๋Š” ๋•Œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.  ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋ผ๊ณ  ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค:

  1. C์™€ ๊ฐ™์ด SDK๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
  2. ์‹ ๊ทœ๋กœ ์ œ๊ณต๋˜๋Š” ์„œ๋น„์Šค์™€ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด SDK ์ง€์›์ด ์•„์ง ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ
  3. AWS ์ž์›์— ๋ณด๋‚ด์ง„ ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต์— ๋Œ€ํ•ด์„œ, ๋ณด๋‹ค ์„ธ๋ถ€์ ์ด๊ณ  ์™„๋ฒฝํ•˜๊ฒŒ ์ œ์–ดํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ

AWSํด๋ผ์šฐ๋“œ๋กœ API๋ฅผ ์š”์ฒญํ•  ๋•Œ, ๋ชจ๋“  HTTP/HTTPS ์š”์ฒญ์€ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ธ์ฆ์„ ๋ณด์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฏธ๋ฆฌ ์„œ๋ช… ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์–ด์•ผ ํ•˜๊ณ , ์ด๋Ÿฐ ์„œ๋ช…์ฒ˜๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด์„œ ์š”์ฒญ ๋ฉ”์‹œ์ง€์˜ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค:

  1. ์š”์ฒญ์ž ์‹ ์› ํ™•์ธ: ์š”์ฒญ์ž๋Š” ์œ ํšจํ•œ โ€˜์•ก์„ธ์Šค ํ‚ค IDโ€™์™€ โ€˜๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚คโ€™๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๋˜๋Š” AssumeRole์ด๋‚˜ GetFederationToken๊ณผ ๊ฐ™์€ STS API ํ˜ธ์ถœ์„ ํ†ตํ•ด์„œ ์–ป์€ ์ž„์‹œ ๋ณด์•ˆ ์ž๊ฒฉ์„ ๊ฐ€์ง€๊ณ ๋„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)
  2. ์ „์†ก ์ค‘ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ: ์ „์†ก ์ค‘ ์š”์ฒญ์ด ์กฐ์ž‘๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ์š”์ฒญ ๊ตฌ์„ฑ ์š”์†Œ๋“ค ์ค‘ ๋ช‡ ๊ฐ€์ง€๋Š” ์š”์ฒญ์— ๋Œ€ํ•ด ํ•ด์‹œ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ํ•ด์‹œ๊ฐ’์€ ์š”์ฒญ์˜ ์ผ๋ถ€๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. AWS๊ฐ€ ํ•ด๋‹น ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๋ฉด, ๋™์ผํ•œ ์ •๋ณด์— ๊ธฐ์ดˆํ•˜์—ฌ ํ•ด์‹œ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์š”์ฒญ์— ํฌํ•จ๋œ ํ•ด์‹œ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์ผ ํ•ด์‹œ๊ฐ’์ด ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, AWS๋Š” ํ•ด๋‹น ์š”์ฒญ์„ ๊ฑฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.
  3. ์ž ์žฌ์ ์ธ ์žฌ์ƒ ๊ณต๊ฒฉ(replay attack) ๋ฐฉ์–ด: ๋ชจ๋“  ์š”์ฒญ์€ ํƒ€์ž„ ์Šคํƒฌํ”„๋ฅผ ๊ธฐ์ค€์œผ๋กœ 5๋ถ„๊ฐ„๋งŒ ์œ ํšจํ•˜๋‹ค๊ณ  ์ธ์ •๋˜๋ฉฐ, ๊ทธ ๊ธฐ๊ฐ„์ด ์ง€๋‚œ ์š”์ฒญ์€ ์ „๋ถ€ ๊ฑฐ์ ˆ๋ฉ๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์ „์ฒด์ ์ธ ์„œ๋ช… ๊ณผ์ •์„ ์š”์•ฝํ•˜์ž๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ณด์•ˆ์„ ๋” ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ HTTPS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SSL์€ ์•”ํ˜ธํ™” ์ „์†ก์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์š”์ฒญ๊ณผ ์‘๋‹ต ์ „์†ก์„ ์•”ํ˜ธํ™”ํ•ด์„œ ์ถ”๊ฐ€์ ์œผ๋กœ ๋” ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ AWS์˜ ์„œ๋น„์Šค๋“ค๋งˆ๋‹ค ์ง€์›ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  ์–ด๋–ค ์„œ๋น„์Šค๋Š”HTTP ๋˜๋Š” HTTPS๋งŒ ์ง€์›ํ•˜๋Š” ์„œ๋น„์Šค๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ณ , ๋˜ ๋‘ ๊ฐ€์ง€ ํ”„๋กœํ† ์ฝœ ๋ชจ๋‘๋ฅผ ์ง€์›ํ•˜๋Š” ์„œ๋น„์Šค๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์›ํ•˜๋Š” ์„œ๋น„์Šค์™€ ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์‚ฌํ•ญ์€ ์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•ด๋ณด์‹œ๋ฉด ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

AWS๋Š” ํ˜„์žฌ ์„œ๋ช… ๋ฒ„์ „ (signature version) 2์™€ ์„œ๋ช… ๋ฒ„์ „ 4 ๋‘ ๊ฐ€์ง€๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋น„์Šค๋Š” ๋ฒ„์ „2๋ณด๋‹ค ๋ฒ„์ „ 4๋ฅผ ๋” ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์ผ ์„œ๋น„์Šค๊ฐ€ ๋‘ ๊ฐ€์ง€ ์„œ๋ช… ๋ฒ„์ „์„ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค๋ฉด, ์ตœ์‹ ์˜ ๋ฒ„์ „ 4๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ช… ๋ฒ„์ „ 2์— ๋Œ€ํ•œ ์‚ฌํ•ญ์€ ์ด๊ณณ์„ ์ฐธ์กฐํ•˜์‹œ๊ณ , ์„œ๋ช… ๋ฒ„์ „4์—์„œ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด ์—ฌ๊ธฐ๋ฅผ ํ™•์ธํ•ด ๋ณด์„ธ์š”. ์ด ํ›„ ์„ค๋ช…๋˜๋Š” ๋ชจ๋“  ์‚ฌํ•ญ๋“ค์€ ์„œ๋ช… ๋ฒ„์ „ 4์— ๋Œ€ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

๊ฐ ์š”์ฒญ์— ์„œ๋ช…์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  1. HTTP ์ธ์ฆ ํ—ค๋”: HTTP ์ธ์ฆ ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ช…์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  2. ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด ๋งค๊ฐœ๋ณ€์ˆ˜: ์„œ๋ช…์„ ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด ๊ฐ’์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ ์„œ๋ช…์ด ๊ทธ URL์˜ ์ผ๋ถ€์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ URL์„ ๋ฏธ๋ฆฌ ์„œ๋ช…๋œ(pre-signed) URL์ด๋ผ๊ณ  ์ง€์นญํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” ์˜ˆ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์„œ๋ช…์ •๋ณด ์—†์ด AWS๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

GET https://iam.amazonaws.com/?Action=ListUsers&Version=2010-05-08 HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: iam.amazonaws.com
X-Amz-Date: 20150830T123600Z

์ด๋Ÿฌํ•œ ์š”์ฒญ์€ HTTP ์ธ์ฆ ํ—ค๋”๋กœ ์ „์†ก๋˜์—ˆ์„ ๋•Œ์™€ ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „์†ก๋˜์–ด์กŒ์„ ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HTTP ์ธ์ฆ ํ—ค๋”
์‚ฌ์šฉ์ž๋Š” Authorization ํ—ค๋”๋ฅผ ํ†ตํ•ด์„œ ์ธ์ฆ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๋ก ํ—ค๋” ์ด๋ฆ„์ด Authorization๋กœ ๋˜์–ด ์žˆ์ง€๋งŒ, ์„œ๋ช… ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํ—ค๋” ๊ฐ’๋“ค์€ ์‹ค์ œ๋กœ ํ•ด๋‹น ์š”์ฒญ์ด ๋ˆ„๊ตฌ์—์„œ ์™”๋Š”์ง€ ์ธ์ฆ์„ ํ™•๋ฆฝํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Authorization ํ—ค๋”๋Š” ์•„๋ž˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์„œ๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (์˜ˆ: AWS4-HMAC-SHA256)
  • ์ž๊ฒฉ ๋ฒ”์œ„ (์˜ˆ: ์•ก์„ธ์Šค ํ‚ค ๋“ฑ)
  • ์„œ๋ช… ํ—ค๋” ๋ชฉ๋ก
  • ๊ณ„์‚ฐ๋œ ์„œ๋ช…

๊ณ„์‚ฐ๋œ ์„œ๋ช…์€ ์•”ํ˜ธํ™”๋˜์–ด ์ƒ์„ฑ๋œ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ์ด ์„œ๋ช…์€ ์š”์ฒญ ์ •๋ณด์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ƒ์„ฑ๋˜๋ฉฐ, AWS ๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„œ๋ช…์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฐ’์€ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•œ AWS์—์„œ ์‚ฌ์šฉ์ž ์‹ ์›์„ ํ™•์ธํ•˜๋Š”๋ฐ ์ด์šฉ๋ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ์˜ˆ๋Š” ์•ž์—์„œ ๋ณด์…จ๋˜ ์š”์ฒญ์— ์„œ๋ช… ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฅผ Authorization ํ—ค๋”์— ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ ๋ณด์—ฌ์ง€๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

GET https://iam.amazonaws.com/?Action=ListUsers&Version=2010-05-08 HTTP/1.1
Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/iam/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7
content-type: application/x-www-form-urlencoded; charset=utf-8
host: iam.amazonaws.com
x-amz-date: 20150830T123600Z

์ฟผ๋ฆฌ ๋ฌธ์ž์—ด ๋งค๊ฐœ๋ณ€์ˆ˜
์š”์ฒญ ํ—ค๋”์— ์ธ์ฆ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋Œ€์‹ , ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด์„ ํฌํ•จ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด์€ ์„œ๋น„์Šค ์ด๋ฆ„๊ณผ ์•ก์…˜, ๋‚ ์งœ, ๊ทธ๋ฆฌ๊ณ  ์ธ์ฆ ์ •๋ณด๋ฅผ ์œ„ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค ๋“ฑ ์š”์ฒญ์˜ ์ผ๋ถ€์ธ ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ์˜ˆ๋Š” ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด์— ์•ก์…˜๊ณผ ์ธ์ฆ ์ •๋ณด๋ฅผ ํฌํ•จ์‹œ์ผœ์„œ, GET ์š”์ฒญ์„ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•˜์˜€๋Š”์ง€ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

GET https://iam.amazonaws.com?Action=ListUsers&Version=2010-05-08&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIDEXAMPLE%2F20150830%2Fus-east-1%2Fiam%2Faws4_request&X-Amz-Date=20150830T123600Z&X-Amz-Expires=60&X-Amz-SignedHeaders=content-type%3Bhost&X-Amz-Signature=37ac2f4fde00b0ac9bd9eadeb459b1bbee224158d66e7ae5fcadb70b2d181d02 HTTP/1.1
content-type: application/x-www-form-urlencoded; charset=utf-8
host: iam.amazonaws.com

๋งŽ์€ AWS ์„œ๋น„์Šค๋“ค์ด ์ง€์›ํ•˜๋Š” ์ฟผ๋ฆฌAPI๋Š” HTTP GET์ด๋‚˜ POST๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์š”์ฒญ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.  GET ์š”์ฒญ์€ ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, URL์˜ ์ตœ๋Œ€ ๊ธธ์ด ์ œํ•œ์— ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์ผ IAM ์ •์ฑ…์„ ์—…๋กœ๋“œํ•˜๊ฑฐ๋‚˜ DynamoDB ์š”์ฒญ์„ ์œ„ํ•ด JSON ํ˜•ํƒœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์š”์ฒญ์ด ํฐ ํŽ˜์ด๋กœ๋“œ(Payload)๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ์ผ๋ฐ˜์ ์œผ๋กœ POST ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ์ ˆ์ฐจ๋Š” HTTP/HTTPS ๊ธฐ๋ฐ˜์˜ ์„œ๋ช…๋œ AWS API ์š”์ฒญ์„ ์–ด๋–ป๊ฒŒ ๋งŒ๋“œ๋Š”์ง€ ๊ฐ„๋žตํ•˜๊ฒŒ ์š”์•ฝํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค:

  1. ํ‘œ์ค€ ์š”์ฒญ(Canonical Request)ํ˜•์‹์œผ๋กœ ๋‚ด์šฉ๋“ค์„ ์ •๋ ฌํ•˜๊ธฐ โ€“ ํ˜ธ์ŠคํŠธ, ์•ก์…˜, ํ—ค๋” ๋“ฑ์˜ ์š”์ฒญ ๋‚ด์šฉ์„ ์ •๋ ฌํ•˜์—ฌ ํ‘œ์ค€ ํ˜•์‹์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ํ‘œ์ค€ ์š”์ฒญ์€ ์•„๋ž˜ ์„œ๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์€ ์ •๋ณด๋Š” ์ด๊ณณ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์„œ๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์ž์—ด(StringToSign) ๋งŒ๋“ค๊ธฐ โ€“ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์š”์ฒญ ๋‚ ์งœ, ์ž๊ฒฉ ๋ฒ”์œ„ ๋ฐ ์•ž์„œ ์ƒ์„ฑํ•œ ํ‘œ์ค€ ์š”์ฒญ์˜ ํ•ด์‹œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์„œ๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์€ ์ด๊ณณ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. AWS ์„œ๋ช… ๋ฒ„์ „ 4(Signature) ๊ณ„์‚ฐํ•˜๊ธฐ โ€“ AWS ๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚ค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์š”์ฒญ ๋‚ ์งœ, ๋ฆฌ์ „, ๊ทธ๋ฆฌ๊ณ  ์„œ๋น„์Šค์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์—ฐ์†์ ์ธ ํ•ด์‹œ ํ‚ค์ž‰ ๋™์ž‘์„ ํ–‰ํ•จ์œผ๋กœ์จ ์„œ๋ช… ํ‚ค๋ฅผ ์œ ๋„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์„œ๋ช… ํ‚ค์™€ ์„œ๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์ž์—ด์„ ์ด์šฉํ•ด์„œ ์„œ๋ช…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ์ •๋ณด๋Š” ์ด๊ณณ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์ƒ์„ฑํ•œ ์„œ๋ช… ์ •๋ณด๋ฅผ HTTP/HTTPS API ์š”์ฒญ์— ์ถ”๊ฐ€ํ•˜๊ธฐ โ€“ ์„œ๋ช…์„ ๊ณ„์‚ฐํ•œ ํ›„, ๊ทธ๊ฒƒ์„ ํ—ค๋”๋‚˜ ์š”์ฒญ ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ์ •๋ณด๋Š” ์ด๊ณณ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ URL์„ ํ•ด๋‹น AWS ์„œ๋น„์Šค์˜ ์—”๋“œํฌ์ธํŠธ์— ๋ณด๋‚ด๋Š” ๊ฒƒ์ด API ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค. ๋ฆฌ์ „๋ณ„ ๊ฐ ์„œ๋น„์Šค์˜ ์—”๋“œํฌ์ธํŠธ๋Š” ์ด๊ณณ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” AWS API ํ˜ธ์ถœ ์š”์ฒญ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ •๋ณด์™€ ์–ด๋–ป๊ฒŒ ๋งŒ๋“œ๋Š”์ง€ ์ „๋ฐ˜์ ์ธ ๊ณจ๊ฒฉ์„ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํšŒ์—์„œ๋Š” ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‹ค์ œ HTTP/HTTPS API ํ˜ธ์ถœ ์š”์ฒญ์„ ์ง์ ‘ ์ƒ์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

โ–ถ AWS API ํ˜ธ์ถœ ํ•˜๊ธฐ (2) โ€“ Amazon S3 ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ฏธ๋ฆฌ ์„ ์–ธ๋œ(pre-signed) URL ์ƒ์„ฑํ•˜๊ธฐ

๋ณธ ๊ธ€์€ ์•„๋งˆ์กด์›น์„œ๋น„์Šค ์ฝ”๋ฆฌ์•„์˜ ์†”๋ฃจ์…˜์ฆˆ ์•„ํ‚คํ…ํŠธ๊ฐ€ ๊ตญ๋‚ด ๊ณ ๊ฐ์„ ์œ„ํ•ด ์ „ํ•ด ๋“œ๋ฆฌ๋Š” AWS ํ™œ์šฉ ๊ธฐ์ˆ  ํŒ์„ ๋ณด๋‚ด๋“œ๋ฆฌ๋Š” ์ฝ”๋„ˆ๋กœ์„œ, ์ด๋ฒˆ ๊ธ€์€ ๋ฐ•์ฒ ์ˆ˜ ์†”๋ฃจ์…˜์ฆˆ ์•„ํ‚คํ…ํŠธ๊ป˜์„œ ์ž‘์„ฑํ•ด์ฃผ์…จ์Šต๋‹ˆ๋‹ค.

1์›”-2์›” AWS ๊ธฐ์ดˆ ์›จ๋น„๋‚˜ ๋™์˜์ƒ ๋ฐ ๋ฐœํ‘œ ์ž๋ฃŒ ๋ชจ์Œ

on | in AWS Webinar |

AWS์ฝ”๋ฆฌ์•„์—์„œ๋Š” AWS ํด๋ผ์šฐ๋“œ ๊ธฐ์ดˆ ์ง€์‹๊ณผ ์ตœ์‹  ๊ธฐ์ˆ ์„ ์†Œ๊ฐœํ•˜๋Š” ์˜จ๋ผ์ธ ์„ธ๋ฏธ๋‚˜์ธ ์›จ๋น„๋‚˜(Webinar)๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฐœ์ตœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ ์˜จ๋ผ์ธ ์„ธ๋ฏธ๋‚˜ ๋ฐœํ‘œ ์ž๋ฃŒ ๋ฐ ๋…นํ™” ๋™์˜์ƒ์„ ํ†ตํ•ด์„œ๋„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋…นํ™” ์‹œ ์‚ฌ์šฉ์ž๋“ค์˜ Q&A ๋“ฑ์„ ํ†ตํ•ด ๋” ์ž์„ธํ•œ ๋‚ด์šฉ๋„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

AWS ํด๋ผ์šฐ๋“œ ๊ธฐ์ˆ ์„ ์ดํ•ดํ•˜์‹œ๋Š”๋ฐ, ๋„์›€์ด ๋˜์‹œ๊ธธ ๋ฐ”๋ผ๋ฉฐ ๋งค์›” ํ˜น์€ ๋ฐ˜๊ธฐ๋ณ„ ์›จ๋น„๋‚˜ ์ผ์ •์€ Twitter ํ˜น์€ Facebook์„ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

2016๋…„ 1์›” AWS ๊ธฐ์ดˆ ์›จ๋น„๋‚˜ ์‹œ๋ฆฌ์ฆˆ

์•Œ๋ฆผ: ๋™์˜์ƒ ๋‹ค์‹œ ๋ณด๊ธฐ๋Š” ํ”Œ๋ž˜์‹œ๊ฐ€ ์„ค์น˜๋œ PC์—์„œ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

2์›” 27์ผ(์ˆ˜)

[์‹ฌํ™”] Amazon Elasticsearch Service ์†Œ๊ฐœ ๋ฐ ํ™œ์šฉ ๋ฐฉ๋ฒ•

1์›” 26์ผ(ํ™”)

[๊ธฐ์ดˆ] AWS ํด๋ผ์šฐ๋“œ ์ดํ•ดํ•˜๊ธฐ โ€“ ์‚ฌ๋ก€ ์ค‘์‹ฌ์œผ๋กœ

[๊ธฐ์ดˆ] AWS์— ๋Œ€ํ•ด ๊ฐ€์žฅ ๊ถ๊ธˆํ–ˆ๋˜ ์—ด ๊ฐ€์ง€

[๊ธฐ์ดˆ] AWS ํด๋ผ์šฐ๋“œ ๋ณด์•ˆ ๋ฐ ๊ทœ์ • ์ค€์ˆ˜ ์†Œ๊ฐœ

[๊ธฐ์ดˆ] ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๋ฅผ ์œ„ํ•œ AWS ์ง€์› ๋ฐ ์‚ฌ๋ก€

1์›” 27์ผ(์ˆ˜)/28์ผ(๋ชฉ)

[ํ•ต์‹ฌ] AWS ์‹œ์ž‘ํ•˜๊ธฐ ๋ฐ Amazon S3 ์„œ๋น„์Šค ์‚ดํŽด๋ณด๊ธฐ

[ํ•ต์‹ฌ] Amazon CloudFront ์„œ๋น„์Šค ์‚ดํŽด๋ณด๊ธฐ

[ํ•ต์‹ฌ] Amazon EC2 ์„œ๋น„์Šค ์‚ดํŽด๋ณด๊ธฐ

[ํ•ต์‹ฌ] Amazon RDS ์„œ๋น„์Šค ์‚ดํŽด๋ณด๊ธฐ

๋งค์›” ์žˆ๋Š” ๋ฐ˜๊ธฐ์— ์žˆ๋Š” ์ •๊ธฐ ์›จ๋น„๋‚˜์— ์ง์ ‘ ์ฐธ์—ฌํ•  ๊ฒฝ์šฐ, ๊ฐ•์˜ ๋„์ค‘ ์‚ฌ์šฉ์ž๋“ค์˜ Q&A ๋“ฑ์„ ํ†ตํ•ด ๋” ์ž์„ธํ•œ ์งˆ์˜ ์‘๋‹ต๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋งค์›” ํ˜น์€ ๋ฐ˜๊ธฐ๋ณ„ ์›จ๋น„๋‚˜ ์ผ์ •์€ Twitter ํ˜น์€ Facebook์„ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

โ–ถ ์ง€๋‚œ ์›จ๋น„๋‚˜ ๋ฐœํ‘œ ์ž๋ฃŒ ๋™์˜์ƒ์„ ๋‹ค์‹œ ๋ณด๊ธฐ