[AWS]๐Ÿ“คS3 bucket โžก ๐Ÿ“ชAWS Lambda โžก ๐Ÿ“ฅSlack Channel ๋ฉ”์‹œ์ง€ ์ „์†กํ•˜๊ธฐ

๊ฐ์ž๋‘˜๋‘˜ยท2023๋…„ 3์›” 1์ผ
0

AWS

๋ชฉ๋ก ๋ณด๊ธฐ
1/1

โœ… ํฌ์ŠคํŒ… ์š”์•ฝ

  • ์ด๋ฒˆ ํฌ์ŠคํŠธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ์Šฌ๋ž™์•ฑ์„ ์ œ์ž‘ํ•˜์ง€ ์•Š๊ณ  ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ•˜๊ณ ์ž ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    1. S3 bucket์— Object๋ฅผ ์—…๋กœ๋“œํ•œ๋‹ค.
    2. AWS Lambda ํ•จ์ˆ˜์—์„œ ์—…๋กœ๋“œ๋œ Object๋ฅผ ๋ฐ›์•„ ๊ฐ€๊ณตํ•œ ํ›„, Slack channel๋กœ ์ „์†กํ•œ๋‹ค.
    3. ํŠน์ • Slack channel์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„ ๋ณธ๋‹ค.

โ˜ STEP 1. Slack channel์— Incomming Webhook ์•ฑ ์„ค์น˜ํ•˜๊ธฐ

  • ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๊ณ  ์‹ถ์€ ์ฑ„๋„์— ๋งˆ์šฐ์Šค๋ฅผ ๋‘๊ณ  ์šฐํด๋ฆญ > ์ฑ„๋„ ์„ธ๋ถ€์ •๋ณด ๋ณด๊ธฐ ํด๋ฆญ
  • ํ†ตํ•ฉ์„ ํด๋ฆญ > ์•ฑ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญ
  • webhook ๊ฒ€์ƒ‰ > Incomming Webhook ์„ค์น˜ ํด๋ฆญ
  • Slack์— ์ถ”๊ฐ€ ํด๋ฆญ
  • ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๊ณ  ์‹ถ์€ ์ฑ„๋„ ์„ ํƒ
  • 'https://hooks.slack.com/services' ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์›น ํ›„ํฌ URL ๋ณต์‚ฌํ•ด์„œ ๋ฉ”๋ชจ์žฅ์— ์ €์žฅ

โ˜ STEP 2. S3 bucket ์ƒ์„ฑํ•˜๊ธฐ

  1. Amazon S3 ์ฝ˜์†”์„ ์—ฝ๋‹ˆ๋‹ค.

  2. ๋ฒ„์ปท ๋งŒ๋“ค๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์ผ๋ฐ˜ ๊ตฌ์„ฑ(General configuration)์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    a. ๋ฒ„ํ‚ท ์ด๋ฆ„(Bucket name)์— ๊ณ ์œ ํ•œ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.(AWS ๋ชจ๋“  ๋ฆฌ์ „์„ ํ†ตํ‹€์–ด ๊ณ ์œ ํ•ด์•ผ ๋ฉ๋‹ˆ๋‹ค.)
    b. AWS ๋ฆฌ์ „์—์„œ ๋ฆฌ์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. (์ด๋•Œ ์„ ํƒํ•œ ๋ฆฌ์ „์— Lambda ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์•ผ ๋ฉ๋‹ˆ๋‹ค.)

  4. ๋ฒ„ํ‚ท ๋งŒ๋“ค๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

โ˜ STEP 3. AWS Lambda ํ•จ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ

  • ํ•จ์ˆ˜ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ AWS Lambda ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.(๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋Š” Lambda ํ•จ์ˆ˜์˜ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•ด์ค๋‹ˆ๋‹ค.)
  1. AWS Lambda ์ฝ˜์†”์˜ ํ•จ์ˆ˜ ํŽ˜์ด์ง€๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

  2. ํ•จ์ˆ˜ ์ƒ์„ฑ(Create function)์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ํ•จ์ˆ˜ ์ƒ์„ฑ ํŽ˜์ด์ง€์—์„œ Use a blueprint(๋ธ”๋ฃจํ”„๋ฆฐํŠธ ์‚ฌ์šฉ)์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  4. ๋ธ”๋ฃจํ”„๋ฆฐํŠธ(Blueprints)์˜ ๊ฒ€์ƒ‰ ์ƒ์ž์— s3๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  5. ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์—์„œ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    • S3-get-object (Node.js)
    • S3-get-object (Python 3.X)
  6. ๊ตฌ์„ฑ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  7. ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    • ์‹คํ–‰ ์—ญํ• (Execution role)์€ ์›ฌ๋งŒํ•˜๋ฉด AWS ์ •์ฑ… ํ…œํ”Œ๋ฆฟ์—์„œ ์ƒˆ ์—ญํ•  ์ƒ์„ฑ(Create a new role from AWS policy templates)์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  8. S3 ํŠธ๋ฆฌ๊ฑฐ(S3 trigger)์—์„œ STEP 2์—์„œ ์ƒ์„ฑํ•œ S3 ๋ฒ„ํ‚ท์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  9. ํ•จ์ˆ˜ ์ƒ์„ฑ(Create function)์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.


  • ํ•„์š”์— ๋งž๊ฒŒ ํ•จ์ˆ˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” Object์— ๋Œ€ํ•œ ๋ฉ”ํƒ€์ •๋ณด ์ด์™ธ์— Object ๋‚ด๋ถ€ ์ปจํ…์ธ ๊ฐ€ ํ•„์š”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์ด ํ•จ์ˆ˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์คฌ์Šต๋‹ˆ๋‹ค.

    • ์ฒซ ๋ฒˆ์งธ Red Box๋Š” Slack webhook URL๊ณผ channel ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. Slack webhhok URL์— STEP 1์—์„œ ๋ฉ”๋ชจ์žฅ์— ๋ณต์‚ฌํ•ด๋†“์€ URL์„ ์จ์ค๋‹ˆ๋‹ค.

    • ๋‘ ๋ฒˆ์งธ Red Box๋Š” Slack channel์— ๋ณด๋‚ผ ๋ฉ”์‹œ์ง€๋ฅผ JSON ํฌ๋งท์œผ๋กœ ๋งŒ๋“  ํ›„, Slack channel์— ์ „์†กํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

    • Blue Box๋Š” event object์—์„œ S3 bucket ์ด๋ฆ„๊ณผ key๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„, ๊ทธ๋ฅผ ์ด์šฉํ•ด S3 object๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. (line 20๊ฐ€ Object ๋‚ด๋ถ€ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.)

โ˜ STEP 4. S3 bucket์— Object ์—…๋กœ๋“œํ•˜๊ธฐ

  • STEP 2์—์„œ ์ƒ์„ฑํ•˜๊ณ , STEP 3์—์„œ Lambda ํ•จ์ˆ˜ ํŠธ๋ฆฌ๊ฑฐ๋กœ ์ง€์ •ํ•ด์ค€ S3 bucket์— object๋ฅผ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฉด ์ž๋™์œผ๋กœ STEP 3์—์„œ ์ง€์ •ํ•œ Slack channel๋กœ ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”— ์ฐธ๊ณ ํ•œ ์‚ฌ์ดํŠธ

profile
ํ•œ ์ค„ ์†Œ๊ฐœ.

0๊ฐœ์˜ ๋Œ“๊ธ€