Yandex ๊ธฐ๋Šฅ์€ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค

Yandex ๊ธฐ๋Šฅ์€ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค

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

๋‚˜๋Š” ๋˜ํ•œ ์ „ํ†ต์ ์ธ ์„œ๋ฒ„์˜ ๋ฐ˜๋Œ€์ž(๊ทธ๋Ÿฌ๋‚˜ ๊ด‘์‹ ์ฃผ์˜๋Š” ์•„๋‹˜)์ด๋ฉฐ ์†Œ์œ„ ๋งํ•˜๋Š” ๊ฒƒ์„ ์ง€์ง€ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฆฌ์Šค (์„œ๋ฒ„๋ฆฌ์Šค) ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์„œ๋ฒ„๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š๊ณ (์‹ค์ œ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๋ชจ๋ฅด๊ณ ) ๋”๊ตฐ๋‹ค๋‚˜ ์„œ๋ฒ„๊ฐ€ ๋กœ๋“œ๋˜์ง€ ์•Š๋Š” ์‹œ๊ฐ„์— ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๋‚˜ ์—†์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ „ํ™”๋ฅผ ๋ฐ›๊ณ , ๋‚˜๋Š” ํ†ตํ™” ์š”๊ธˆ๋งŒ ์ง€๋ถˆํ•ฉ๋‹ˆ๋‹ค. 2019๋…„ XNUMX์›” ์ดˆ Yandex๋Š” Yandex ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ โ€” ๋Ÿฌ์‹œ์•„์—์„œ๋Š” ์ฒ˜์Œ์ธ ๊ฒƒ ๊ฐ™์•„์š” ์„œ๋ฒ„๋ฆฌ์Šค. ๊ทธ๋ฆฌ๊ณ  ํŠนํžˆ ์ข‹์€ ์ ์€ ์•จ๋ฆฌ์Šค์˜ ๊ธฐ์ˆ ์ด ์™„์ „ํžˆ ๋ฌด๋ฃŒ๋ผ๋Š” ์ ์ธ๋ฐ, ๊ทธ๋ž˜์„œ ๊ทธ ์ดํ›„๋กœ ๊ณ„์† ์ œ๊ฐ€ ๋Š˜ ์ฃผ์‹œํ•˜๊ณ  ์žˆ์—ˆ์–ด์š”. ํ•˜์ง€๋งŒ ์ด๋ฏธ ์‹œ์ž‘ํ•ด๋ณด์ฃ .

์ด๋Ÿฐ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ƒ์ƒํ•ด ๋ณด์ž. ๊ท€ํ•˜์˜ ์‹ ์ฒญ์„œ(์˜ˆ: Alice์˜ ๊ธฐ์ˆ ) ๊ธฐ์–ตํ•˜๊ณ  ์žŠ์–ด๋ผ ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์ด๊ฒƒ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค Yandex ๊ธฐ๋Šฅ)๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ถ”๊ฐ€ ์˜ต์…˜ ๋“ฑ์˜ ๋””์ง€ํ„ธ ์ƒํ’ˆ์„ ๊ตฌ๋งคํ•˜๋„๋ก ์ œ์•ˆํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฐ์ œ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ง€๋ถˆ ์‹œ์Šคํ…œ(ํ˜ผ๋™์Šค๋Ÿฝ๊ฒŒ๋„ ์œ ์‚ฌํ•จ) Yandex ์ฃผ์ฐจ) ๊ฒฐ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ท€ํ•˜๊ฐ€ ์ œ๊ณตํ•œ ์ฃผ์†Œ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค(๋‹น์‚ฌ์˜ ๊ฒฝ์šฐ ์ด๋Š” ์ „ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋งํฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค) ์–€๋ฑ์Šค ๊ธฐ๋Šฅ) HTTP- ์ง€๋ถˆ ๊ธˆ์•ก, ์ง€๋ถˆ์ž์˜ ์„ฑ๋ช…, ์ „ํ™”๋ฒˆํ˜ธ, ์ด๋ฉ”์ผ ์ฃผ์†Œ ๋“ฑ ์ง€๋ถˆ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ์š”์ฒญ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์šฐ๋ฆฌ๋Š” ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ธˆ์•ก ํ™•์ธ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์ ˆํ•œ ํ•ญ๋ชฉ ์ž…๋ ฅ, ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „์†ก SMS ะธ ์ด๋ฉ”์ผ ์ง€๋ถˆ ์ˆ˜๋ น ํ™•์ธ ๋ฐ ์ถ”๊ฐ€ ์ง€์‹œ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์ € ๊ทธ๋ ‡๋‹ค ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค.

์–ด๋–ป๊ฒŒ์— ๊ด€ํ•˜์—ฌ Yandex ๊ธฐ๋Šฅ DB์— ํ•ญ๋ชฉ์„ ์ž…๋ ฅํ•˜๋‹ค ํด๋ผ์šฐ๋“œ ์†Œ๋ฐฉ์„œ ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ํŠœํ† ๋ฆฌ์–ผ์—์„œ ๊ทธ๊ฒƒ์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์•จ๋ฆฌ์Šค๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๊ธฐ์–ตํ•œ๋‹ค (๋‚˜์ค‘์— ๋‹ค๋ฅธ DB์— ๋Œ€ํ•œ ์˜ˆ๋ฅผ ๊ณ ๋ คํ•ด ๋ณผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Yandex ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค). ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•˜์—ฌ SMS ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค ์–€๋ฑ์Šค.๋จธ๋‹ˆ โ€”๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์— ์•Œ์•„๋‚ผ ๊ฑฐ์˜ˆ์š”. ์ด์ œ ํŽธ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐ๋งŒ ์ง‘์ค‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1. SendGrid์— ๊ณ„์ • ์ƒ์„ฑ

์ฃผ์˜SendGrid๋Š” ์ œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ ์„ ํƒํ•œ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” Node.js์šฉ ๊ธฐ์„ฑ SDK๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์šฐํŽธ ์„œ๋น„์Šค๋ฅผ ์„ ํƒํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค.

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

Yandex ๊ธฐ๋Šฅ์€ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค

๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ๋‹ค์Œ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. Node.js๋ฅผ:

Yandex ๊ธฐ๋Šฅ์€ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค

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

Yandex ๊ธฐ๋Šฅ์€ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค

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

Yandex ๊ธฐ๋Šฅ์€ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค

2. ์ฝ”๋“œ ์ž‘์„ฑ

๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ ์ž์ฒด๋Š” ๋ณด์‹œ๋‹ค์‹œํ”ผ 22์ค„๋กœ, ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„๋กœ ์ž‘์Šต๋‹ˆ๋‹ค!

Yandex ๊ธฐ๋Šฅ์€ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค

์ธ๋ผ์ธ #8 ์ œ ์ด๋ฉ”์ผ์€ ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด ์žˆ์–ด์„œ ๋ถ€๋„๋Ÿฝ๊ฒŒ๋„ ๊ฐ€๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ์ธ์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š”. ์‹ค์ œ๋กœ ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋‹ค์Œ์„ ํฌํ•จํ•จ) ์ด๋ฉ”์ผ) ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ event. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด ๋ฐฉ๋ฒ•์˜ ๊ฒฝ์šฐ POST ๊ฐ์ฒด๊ฐ€ ์šฐ๋ฆฌ ํ•จ์ˆ˜๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค ์‚ฌ์šฉ์ž ํ•„๋“œ(์†์„ฑ)๊ฐ€ ์žˆ๋Š” ์ด๋ฉ”์ผ, ์ด ํ•„๋“œ์˜ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const { user } = event;
const email = user.email;

๊ทธ๋ฆฌ๊ณ  ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ ๋ฉ”์„œ๋“œ์— ์˜ํ•ด ํ•จ์ˆ˜์— ์ „๋‹ฌ๋˜๋Š” ๊ฒฝ์šฐ ๋ฐ”๋กœ์˜ˆ : https://functions.yandexcloud.net/123abc?email=user@example.com
๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’ ์ด๋ฉ”์ผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

const email = event.queryStringParameters.email;

๊ฐ์ฒด์— ์ •ํ™•ํžˆ ๋ฌด์—‡์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๋ ค๋ฉด event, ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ฒƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ์–€๋ฑ์Šค ๊ธฐ๋Šฅ ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ์ฟผ๋ฆฌ๋กœ ๋Œ๋ ค๋ณด์„ธ์š”:

module.exports.handler = async function (event) {
  return {
   'statusCode': 200, 
   'body': JSON.stringify(event)
  };
};

์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ (๋œ ๋ช…ํ™•ํ•˜๊ฒŒ) ๊ณต์‹ ๋ฌธ์„œ์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

๊ทธ๋Ÿฌ๋ฉด ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์šฐํŽธ ๋ฐœ์‹ ์ธ), ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , ํ”„๋กœ์ ํŠธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ์ข…์†์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv

์—ฌ๊ธฐ์„œ๋Š” ํŒจํ‚ค์ง€๋งŒ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. @sendgrid/๋ฉ”์ผ. ๋น„๋‹ ๋ด‰ํˆฌ ์ด๋ฉ”์ผ ๊ฒ€์ฆ๊ธฐ ์ด๋ฉ”์ผ ์ฃผ์†Œ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค(์–ด๋–ป๊ฒŒ ๋ฐ”๋กœ ์ถ”์ธกํ•˜์ง€ ๋ชปํ–ˆ์„๊นŒ์š”?). ํ•˜์ง€๋งŒ ํ™•์‹ ํ•œ๋‹ค๋ฉด(์šฐ๋ฆฌ๊ฐ€ ๋ชจ๋ฅด๊ฒŒ ์˜ค๋ž˜์ „์— ์ด๋ฏธ ๊ฒ€์‚ฌ๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค) ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค(๋ฌผ๋ก  ์ฝ”๋“œ์—์„œ ๊ฒ€์‚ฌํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค). ๋น„๋‹๋ด‰์ง€ ๋„ ํ…ํ”„ ํŒŒ์ผ์—์„œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฝ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. .env ๋Ÿฐํƒ€์ž„ ๋ณ€์ˆ˜๋กœ. ๊ทธ๋Ÿฌ๋‚˜ Yandex ๊ธฐ๋Šฅ ์ด๋Ÿฌํ•œ ๋ณ€์ˆ˜๋ฅผ ์‹คํ–‰ ํ™˜๊ฒฝ์— ์ง์ ‘ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ? - ์•„๋ž˜์— ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŒจํ‚ค์ง€ ๋„ ํ…ํ”„ ๋˜ํ•œ ์„ค์ •ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ํŒŒ์ผ .env - ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ๋™์‹œ์— ์ฝ”๋“œ๊ฐ€ ํŒŒ์ผ์— ์žˆ์Šต๋‹ˆ๋‹ค. index.js ๋ณ€๊ฒฝํ•˜์ง€ ๋งˆ์„ธ์š”. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ์ด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ–ˆ์œผ๋ฏ€๋กœ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. index.js ะธ .env:

touch index.js
touch .env

ํŒŒ์ผ์—์„œ index.js ์œ„์˜ ์Šคํฌ๋ฆฐ์ƒท์— ํ‘œ์‹œ๋œ 22์ค„์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค(์ค„์—๋งŒ ์žˆ์Œ) #8 ์ด๋ฉ”์ผ์„ ๋ณ€๊ฒฝํ•˜์„ธ์š”) ๋ฐ ํŒŒ์ผ์—์„œ .env โ€” (๋”ฐ์˜ดํ‘œ๋‚˜ ๊ตฌ๋‘์  ์—†์ด) ํ‚ค ์ด๋ฆ„/๊ฐ’ ์Œ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. API์ตœ๊ทผ ์ฝ˜์†”์—์„œ ์ˆ˜์‹ ํ•œ SendGrid:
SENDGRID_API_KEY=๋‹น์‹ ์˜ ์•„์ฃผ ๋น„๋ฐ€์Šค๋Ÿฌ์šด sendgrid-api-ํ‚ค

์ž‘์—…๋Ÿ‰์„ ์ค„์ด๊ณ  ์‹ถ๋‹ค๋ฉด ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•˜๊ณ  ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜์„ธ์š”.

git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i

ํŒŒ์ผ์—์„œ index.js, ์ค„์„ ์„œ์„œ #8 ์ด๋ฉ”์ผ์„ ๋ณ€๊ฒฝํ•˜์„ธ์š” ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์„ธ์š” .env, ํ‚ค์˜ ์ด๋ฆ„/๊ฐ’์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. API, ๋ฐ”๋กœ ์œ„์— ํ‘œ์‹œ๋œ ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

3. ๋ฐฐํฌ

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

๋งŒ๋“ค๋‹ค ์ง€ํผ- ๋ณด๊ด€์†Œ(์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋ ‡๊ฒŒ ๋ถ€๋ฅด์ž) ๋ฉ”์ผ๋Ÿฌ.zip), ์—ฌ๊ธฐ์—๋Š” ์นดํƒˆ๋กœ๊ทธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. node_modules ๋ฐ ํŒŒ์ผ .env, ์ธ๋ฑ์Šค.js โ€” ํ”„๋กœ์ ํŠธ ์นดํƒˆ๋กœ๊ทธ์˜ ๋ชจ๋“  ๋‚ด์šฉ:

Yandex ๊ธฐ๋Šฅ์€ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค

์šฐ๋ฆฌ๋Š” ...๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์šฐํŽธ ๋ฐœ์‹ ์ธ, ์™ผ์ชฝ ํƒ์ƒ‰ ๋ฉ”๋‰ด์—์„œ ์„ ํƒํ•˜์„ธ์š” ํŽธ์ง‘๊ธฐ, ํ•„์ˆ˜ ํ•„๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ํƒญ์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ZIP ์•„์นด์ด๋ธŒ ์šฐ๋ฆฌ๋Š” ์•„์นด์ด๋ธŒ๋ฅผ ๋กœ๋”ฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ๋ฉ”์ผ๋Ÿฌ.zip:

Yandex ๊ธฐ๋Šฅ์€ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค

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

Yandex ๊ธฐ๋Šฅ์€ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค

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

Yandex ๊ธฐ๋Šฅ์€ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค

๋น„๋ฌธ ๋ฐ˜๋Œ€ํŽธ์˜ ํŒŒ๋ž€์ƒ‰ ๋งํฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ํ†ตํ™” ๋งํฌ? ํด๋ฆญํ•ด ๋ณด์„ธ์š”. ๋นˆ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค... ํ•˜์ง€๋งŒ ๊ธฐ๋‹ค๋ฆฌ์„ธ์š”. ํŽธ์ง€๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

Yandex ๊ธฐ๋Šฅ์€ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค

์ด์ œ ์ฝ˜์†”๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SendGrid, ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์„ธ์š” ํ†ตํ•ฉ ํ™•์ธ. ์‹œ์Šคํ…œ์€ ์ฑ„๋„์„ ํ†ตํ•ด ๋ชจ๋“  ๊ฒƒ์„ ๊ฒ€์‚ฌํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Yandex ๊ธฐ๋Šฅ์€ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค

์ด์ œ ๋‹ค ์•„์…จ์ฃ , ์—ฌ๋Ÿฌ๋ถ„(๋ฌผ๋ก  ์†Œ๋…€๋“ค๋„์š”) โ€“ ์ •๋ง ๊ฐ„๋‹จํ•˜๊ณ  ์šฐ์•„ํ•˜์ฃ ! ๋” ๋งŽ์€ ๊ธฐ์‚ฌ๊ฐ€ ๋‚˜์˜ฌ ๊ฒ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋‚ด์šฉ์„ ์ฝ๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ๊ตฌ๋…ํ•˜์—ฌ ์•„๋ฌด๊ฒƒ๋„ ๋†“์น˜์ง€ ๋งˆ์„ธ์š”.

4. ๋„๋„›

Yandex ๊ธฐ๋Šฅ์€ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€