top of page

AWS Lambda์˜ ๋ชจ๋“  ๊ฒƒ: ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์™„๋ฒฝํ•œ ๊ฐ€์ด๋“œ 2/2

  • 2023๋…„ 12์›” 20์ผ
  • 4๋ถ„ ๋ถ„๋Ÿ‰

์ตœ์ข… ์ˆ˜์ •์ผ: 2024๋…„ 2์›” 19์ผ

AWS Lambda์˜ ๋ชจ๋“  ๊ฒƒ: ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์™„๋ฒฝํ•œ ๊ฐ€์ด๋“œ 2/2 - Console์—์„œ ๋žŒ๋‹ค ํ•จ์ˆ˜ ์ƒ์„ฑ, ํŠธ๋ฆฌ๊ฑฐ ์„ค์ • ๋ฐ ์š”๊ธˆ ๊ณ„์‚ฐ

AWS Lambda์˜ ๋ชจ๋“  ๊ฒƒ: ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์™„๋ฒฝํ•œ ๊ฐ€์ด๋“œ

Written by Hyojung Yoon



์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ค๋Š˜์€ ์ง€๋‚œ ์‹œ๊ฐ„์— ์ด์–ด AWS Lambda์— ๋Œ€ํ•ด์„œ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณผ ๊ฑด๋ฐ์š”, ํŠนํžˆ ์ด๋ฒˆ ํŒŒํŠธ๋Š” AWS Console์„ ํ™œ์šฉํ•˜์—ฌ ์ง์ ‘ ๋žŒ๋‹ค ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋žŒ๋‹ค ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์„ค์ •ํ•˜๋Š” ์‹ค์Šต์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๋˜ํ•œ AWS Lambda์˜ ๋น„์šฉ ์ •์ฑ…์„ ์ดํ•ดํ•˜๊ณ  ์‹ค์ œ ๋น„์šฉ์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์•Œ์•„๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๊ทธ๋Ÿผ ์ง€๊ธˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!!

AWS Lambda ์‹œ์ž‘ํ•˜๊ธฐ

1. Console์—์„œ ๋žŒ๋‹ค ํ•จ์ˆ˜ ์ƒ์„ฑ

AWS Console์—์„œ ๋žŒ๋‹ค ํ•จ์ˆ˜ ์ƒ์„ฑ

AWS ์ฝ˜์†”์„ ์‚ฌ์šฉํ•ด ์ฒซ ๋ฒˆ์งธ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AWS ์ฝ˜์†”์—์„œ Lambda๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.


[ ํ•จ์ˆ˜ ์ƒ์„ฑ ] ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋žŒ๋‹ค ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

Lambda > ํ•จ์ˆ˜ > ํ•จ์ˆ˜ ์ƒ์„ฑ > ์ƒˆ๋กœ ์ž‘์„ฑ > ํ•จ์ˆ˜ ์ด๋ฆ„ ์ถ”๊ฐ€ ํ›„ ๋Ÿฐํƒ€์ž„ ์„ ํƒ

์ƒ๋‹จ์— 3 ๊ฐ€์ง€ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ์ƒˆ๋กœ ์ž‘์„ฑ: ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค

  • ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ์‚ฌ์šฉ: AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ…œํ”Œ๋ฆฟ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋ฉฐ, ์ƒ˜ํ”Œ ์ฝ”๋“œ ํ˜•์‹์œผ๋กœ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•˜์—ฌ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€: docker ์ปจํ…Œ์ด๋„ˆ ์šฉ

์˜ต์…˜ ์„ ํƒ ํ›„ ์ƒˆ ํ•จ์ˆ˜์˜ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์›ํ•˜๋Š” ๋Ÿฐํƒ€์ž„ยน์„ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


ยน๋Ÿฐํƒ€์ž„(runtime)์ด๋ž€? ๋žŒ๋‹ค๋ฅผ ์–ด๋А ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑํ•  ์ง€์— ๋Œ€ํ•œ ์˜ต์…˜์œผ๋กœ Node.js, python, Go ๋“ฑ ๋‹ค์–‘ํ•œ ๋Ÿฐํƒ€์ž„ ์–ธ์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ถŒํ•œ - ๋žŒ๋‹ค์— ์–ด๋–ค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ง€์— ๋Œ€ํ•œ ์˜ต์…˜

๊ถŒํ•œ์€ ๋žŒ๋‹ค์— ์–ด๋–ค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ง€์— ๋Œ€ํ•œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.


ํ•˜๋‹จ์˜ [ ๊ธฐ๋ณธ ์‹คํ–‰ ์—ญํ•  ๋ณ€๊ฒฝ ] ์„ ํด๋ฆญํ•ด ๊ธฐ๋ณธ Lambda ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์ƒˆ ์—ญํ•  ์ƒ์„ฑ์„ ์„ ํƒํ•ด ์ƒˆ๋กœ์šด ์—ญํ• ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.


2. ๋žŒ๋‹ค ํ•จ์ˆ˜ ์ฝ”๋“œ ์ž‘์„ฑ

์ƒ์„ฑ๋œ ํ•จ์ˆ˜๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ์—ฌ๊ธฐ์„œ๋Š” hjLambda๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


์Šคํฌ๋กค์„ ๋‚ด๋ ค ํ•˜๋‹จ์˜ ํ•จ์ˆ˜ ์ฝ”๋“œ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ์ฝ”๋“œ๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์ž์‹ ๋งŒ์˜ ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋žŒ๋‹ค ํ•จ์ˆ˜ ์ฝ”๋“œ ์ž‘์„ฑ

๋žŒ๋‹ค ํ•จ์ˆ˜ ๊ตฌ์„ฑ

๋žŒ๋‹ค ํ•จ์ˆ˜ ๊ตฌ์„ฑ
์ถœ์ฒ˜: https://sst.dev/chapters/what-is-aws-lambda.html
  • myHandler = Lambda ํ•จ์ˆ˜์˜ ์ด๋ฆ„

    • ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด Lambda๋Š” ํ•ธ๋“ค๋Ÿฌ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ, ์ด๋•Œ ์ „๋‹ฌ๋˜๋Š” 3๊ฐœ์˜ ์ธ์ˆ˜(parameter)์—๋Š” event, context, callback์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    • event: ํ˜ธ์ถœ์ž๋กœ๋ถ€ํ„ฐ์˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ event ๊ฐ์ฒด๋กœ, Lambda๋ฅผ ํŠธ๋ฆฌ๊ฑฐ ํ•œ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

    • context: Lambda ํ•จ์ˆ˜ ๊ฐ„์ ‘ ํ˜ธ์ถœ๊ณผ ์‹คํ–‰ ํ™˜๊ฒฝ, ๋Ÿฐํƒ€์ž„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

    • callback: ๋น„๋™๊ธฐ ์‘๋‹ต์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•˜๋ฉฐ, Lambda ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ํ›„์—๋Š” ๊ทธ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ(๋˜๋Š” ์˜ค๋ฅ˜)์™€ ํ•จ๊ป˜ callback ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์ด๋ฅผ AWS๊ฐ€ HTTP ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


3. ๋žŒ๋‹ค ํ•จ์ˆ˜ ์‹คํ–‰ํ•˜๊ธฐ

๋žŒ๋‹ค ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


ํ…Œ์ŠคํŠธ ๋“œ๋กญ ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ [ ํ…Œ์ŠคํŠธ ์ด๋ฒคํŠธ ๊ตฌ์„ฑ ]์„ ์„ ํƒํ•˜๋ฉด, ํ…Œ์ŠคํŠธ ์ด๋ฒคํŠธ ๊ตฌ์„ฑ์„ ์œ„ํ•œ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์ด๋ฒคํŠธ ๊ตฌ์„ฑ

์ƒˆ ์ด๋ฒคํŠธ ์ƒ์„ฑ์„ ์„ ํƒํ•œ ํ›„ MyEvent ์™€ ๊ฐ™์€ ์ด๋ฒคํŠธ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.


์ด๋ฒคํŠธ ๊ณต์œ  ์„ค์ •์€ ๊ธฐ๋ณธ ์„ค์ •์ธ ๋น„๊ณต๊ฐœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.


ํ…œํ”Œ๋ฆฟ ๋ชฉ๋ก์—์„œ hello-world๋ฅผ ์„ ํƒํ•œ ํ›„ [ ์ €์žฅ ] ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

[ Test ] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ , ์ฝ˜์†”์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฒฐ๊ณผ ํƒญ์—์„œ ์‹คํ–‰์ด ์„ฑ๊ณตํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.


ํ•จ์ˆ˜ ๋กœ๊ทธ ์„น์…˜์— Lambda ํ•จ์ˆ˜ ์‹คํ–‰์œผ๋กœ ์ƒ์„ฑ๋œ ๋กœ๊ทธ์™€ ๋กœ๊ทธ ์ถœ๋ ฅ์— ๋ณด๊ณ ๋œ ์ฃผ์š” ์ •๋ณด๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ง„ํ–‰ ๋˜์—ˆ๋‹ค๋ฉด [ Deploy ] ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•ด์ค๋‹ˆ๋‹ค.


4. ๋žŒ๋‹ค ํŠธ๋ฆฌ๊ฑฐ ์„ค์ •

1) ๋žŒ๋‹ค ํŠธ๋ฆฌ๊ฑฐ + S3

AWS Lambda ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Amazon S3 ๋ฒ„ํ‚ท์—์„œ ๋‹ค๋ฅธ ๋ฒ„ํ‚ท์œผ๋กœ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.



1๋‹จ๊ณ„: ์›๋ณธ ๋ฐ ๋Œ€์ƒ Amazon S3 ๋ฒ„ํ‚ท์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Amazon S3 ์ฝ˜์†”์„ ์—ด๊ณ  ๋ฒ„ํ‚ท ์ƒ์„ฑ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ ๋ฒ„ํ‚ท๊ณผ ๋Œ€์ƒ ๋ฒ„ํ‚ท์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ๋Š” ์›๋ณธ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์„ [ hjtestbucket ]์œผ๋กœ ๋Œ€์ƒ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์„ [ hjtestbucket02 ] ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.



2๋‹จ๊ณ„: Lambda ํ•จ์ˆ˜ ์ƒ์„ฑ

Lambda ์ฝ˜์†”์—์„œ ํ•จ์ˆ˜ ํŽ˜์ด์ง€๋ฅผ ์—ด๊ณ , ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋Ÿฐํƒ€์ž„ ๋“œ๋กญ๋‹ค์šด ๋ชฉ๋ก์„ ์„ ํƒํ•œ ๋‹ค์Œ Python 3.9๋ฅผ ์„ ํƒํ•œ ๋’ค ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์€ ๋žŒ๋‹ค ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.


์ฝ”๋“œ ํƒญ์„ ์„ ํƒํ•˜๊ณ  ๋‹ค์Œ JSON ์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ ๋„ฃ์Šต๋‹ˆ๋‹ค.


import boto3
import botocore
import json
import os
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)

s3 = boto3.resource('s3')

def lambda_handler(event, context):
    logger.info("New files uploaded to the source bucket.")

    key = event['Records'][0]['s3']['object']['key']

    source_bucket = event['Records'][0]['s3']['bucket']['name']
    destination_bucket = "destination_bucket"

    source = {'Bucket': source_bucket, 'Key': key}

    try:
        response = s3.meta.client.copy(source, destination_bucket, key)
        logger.info("File copied to the destination bucket successfully!")

    except botocore.exceptions.ClientError as error:
        logger.error("There was an error copying the file to the destination bucket")
        print('Error Message: {}'.format(error))

    except botocore.exceptions.ParamValidationError as error:
        logger.error("Missing required parameters while calling the API.")
        print('Error Message: {}'.format(error))

์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ ๋„ฃ์—ˆ์œผ๋ฉด [ ๋ฐฐํฌ ]๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.


3๋‹จ๊ณ„: Lambda ํ•จ์ˆ˜๋ฅผ ์œ„ํ•œ Amazon S3 ํŠธ๋ฆฌ๊ฑฐ ์ƒ์„ฑ

Lambda ์ฝ˜์†”์—์„œ ํ•จ์ˆ˜ ํŽ˜์ด์ง€๋ฅผ ์—ด๊ณ , ํ•จ์ˆ˜ ๊ฐœ์š”์—์„œ [ ํŠธ๋ฆฌ๊ฑฐ ์ถ”๊ฐ€ ]๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

ํŠธ๋ฆฌ๊ฑฐ ๊ตฌ์„ฑ ๋“œ๋กญ๋‹ค์šด ๋ชฉ๋ก์„ ์„ ํƒํ•œ ๋‹ค์Œ S3๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„ํ‚ท์— ์›๋ณธ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ , ์ด๋ฒคํŠธ ์œ ํ˜•์—์„œ๋Š” All object create events๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.


์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ๋ชจ๋‘์— ๋™์ผํ•œ S3 ๋ฒ„ํ‚ท์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋˜์ง€ ์•Š์Œ์„ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค์— ๋™์˜ํ•จ์„ ์„ ํƒํ•œ ๋‹ค์Œ ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.


4๋‹จ๊ณ„: Lambda ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์—ญํ• ์— ๋Œ€ํ•œ AWS ID ๋ฐ ์•ก์„ธ์Šค ๊ด€๋ฆฌ(IAM) ๊ถŒํ•œ ์ œ๊ณต

๋‹ค์Œ ๋ฆฌ์†Œ์Šค ๊ธฐ๋ฐ˜ ์ •์ฑ…๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋Œ€์ƒ S3 ๋ฒ„ํ‚ท์— ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋ ค๋ฉด Lambda ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์—ญํ• ์— ๋Œ€ํ•œ IAM ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


Lambda ์ฝ˜์†”์—์„œ ํ•จ์ˆ˜ ํŽ˜์ด์ง€๋ฅผ ์—ด๊ณ , ๊ตฌ์„ฑ - ์‹คํ–‰ ์—ญํ• ์—์„œ ์—ญํ•  ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

IAM ์ฝ˜์†”์—์„œ [ ๊ถŒํ•œ ์ถ”๊ฐ€ ]๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ [ ์ธ๋ผ์ธ ์ •์ฑ… ์ƒ์„ฑ ]์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

[ JSON ] ์˜ต์…˜์„ ์„ ํƒํ•œ ํ›„, ์•„๋ž˜ JSON ์ •์ฑ… ๋ฌธ์„œ๋ฅผ ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.


โ€ป ์ฐธ๊ณ 

  • destination-s3-bucket์„ S3 ๋Œ€์ƒ ๋ฒ„ํ‚ท์œผ๋กœ ๊ต์ฒดํ•˜๊ณ  source-s3-bucket์„ S3 ์›๋ณธ ๋ฒ„ํ‚ท์œผ๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฆฌ์†Œ์Šค ARN ๋์— ์žˆ๋Š” /*๋ฅผ ํ•ด๋‹น ํ™˜๊ฒฝ์— ํ•„์š”ํ•œ ์ ‘๋‘์‚ฌ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์–ด ๊ถŒํ•œ์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

  • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์—๋งŒ ์ตœ์†Œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ตœ์†Œ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "putObject",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::destination-s3-bucket/*"
      ]
    },
    {
      "Sid": "getObject",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::source-s3-bucket/*"
      ]
    }
  ]
}

[ ์ •์ฑ… ์ƒ์„ฑ ]์„ ์„ ํƒํ•˜์—ฌ ์ƒˆ ์ •์ฑ…์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.์„ ์„ ํƒํ•˜์—ฌ ์ƒˆ ์ •์ฑ…์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.


5๋‹จ๊ณ„: Lambda ํ•จ์ˆ˜๊ฐ€ ์ œ๋Œ€๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ

์ด์ œ ๋žŒ๋‹ค ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์ž˜ ์ž‘๋™๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด, ์›๋ณธ S3 ๋ฒ„ํ‚ท์— ํŒŒ์ผ์„ ์—…๋กœ๋“œ ํ•ฉ๋‹ˆ๋‹ค.

[ ์—…๋กœ๋“œ ]๋ฅผ ํด๋ฆญํ•œ ํ›„, ์—…๋กœ๋“œ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์ƒ S3 ๋ฒ„ํ‚ท์— ๋“ค์–ด๊ฐ€ ํ•ด๋‹น ํŒŒ์ผ์ด ๋ณต์‚ฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋™์ผํ•œ ํŒŒ์ผ์ด ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉด ํ•จ์ˆ˜๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.



AWS Lambda์˜ ๊ฐ€๊ฒฉ

1. ๋žŒ๋‹ค์˜ ์š”๊ธˆ ์ •์ฑ…

๋žŒ๋‹ค์˜ ๋น„์šฉ์€ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€ ์š”์†Œ(์š”์ฒญ ์ˆ˜, ์‹คํ–‰ ์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ)์— ์˜ํ•ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.


๋žŒ๋‹ค๋Š” ์›” 1๋ฐฑ๋งŒ ํšŒ์˜ ๋ฌด๋ฃŒ ์š”์ฒญ๊ณผ 400,000GB-์ดˆ์˜ ๋ฌด๋ฃŒ ์ปดํ“จํŒ… ์‹œ๊ฐ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ž‘์€ ํ”„๋กœ์ ํŠธ๋‚˜ ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„์—์„œ๋Š” ๋ณ„๋„์˜ ๋น„์šฉ ์—†์ด Lambda๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๊ตฌ๋ถ„

Free Tier ํ•ด๋‹น ๊ฑด์ˆ˜

์š”์ฒญ ๊ฑด์ˆ˜

์›”๋ณ„ ๋ฌด๋ฃŒ ์š”์ฒญ 1๋ฐฑ๋งŒ ๊ฑด

์ปดํ“จํŒ… ์‹œ๊ฐ„

์›”๋ณ„ ๋ฌด๋ฃŒ 400,000GB-์ดˆ

๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ

์ฒซ 512MB(0.5G)๋Š” ์ถ”๊ฐ€ ๋น„์šฉ ์—†์Œ



2. ๋žŒ๋‹ค ๊ฐ€๊ฒฉ ๊ณ„์‚ฐํ•˜๊ธฐ

AWS ์š”๊ธˆ ๊ณ„์‚ฐ๊ธฐ ์‚ฌ์ดํŠธ์—์„œ ์‰ฝ๊ฒŒ ๋žŒ๋‹ค ๊ฐ€๊ฒฉ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


ํ•œ ๋‹ฌ์— 3,000,000ํšŒ ์‹คํ–‰, ๋งค 1์ดˆ๊ฐ„ ์‹คํ–‰, 512GM ๋ฉ”๋ชจ๋ฆฌ (0.5 GB)์ผ ๊ฒฝ์šฐ AWS Lambda ์š”๊ธˆ์„ ๊ณ„์‚ฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋กค์„ ๋‚ด๋ ค [ ๊ณ„์‚ฐ ํ‘œ์‹œ ] ๋ฅผ ํ™•์ธํ•˜๋ฉด ์š”๊ธˆ ์‚ฐ์ • ๋ฐฉ์‹์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋žŒ๋‹ค ์š”๊ธˆ ๊ณ„์‚ฐ ํ•ด์„

์œ„ ๊ณ„์‚ฐ์— ๋Œ€ํ•œ ํ•ด์„์ž…๋‹ˆ๋‹ค.


์ด ์‚ฌ์šฉ๋Ÿ‰(GB-์ดˆ) = 3,000,000 x 1 x 0.5 = 1,500,000 GB-์ดˆ

์—ฌ๊ธฐ์— ๋ฌด๋ฃŒ ํ‹ฐ์–ด 400,000GB-์ดˆ๋ฅผ ์ œ์™ธํ•˜๋ฉด


์ด ์‚ฌ์šฉ๋Ÿ‰(GB-์ดˆ) = 3,000,000 x 1 x 0.5 = 1,500,000 GB-์ดˆ

AWS Lambda์˜ GB-์ดˆ ๋น„์šฉ์€ $0.0000166667 per GB-์ดˆ์ž…๋‹ˆ๋‹ค.


์‹คํ–‰ ์‹œ๊ฐ„ ๋น„์šฉ = 1,100,000 x 0,0000166667 = $18.33

์—ฌ๊ธฐ์— ๋ฌด๋ฃŒ ํ‹ฐ์–ด 1,000,000ํšŒ๋ฅผ ์ œ์™ธํ•˜๋ฉด


์œ ๋ฃŒ ์‚ฌ์šฉ๋Ÿ‰(์š”์ฒญ ๊ฑด์ˆ˜) = 3,000,000 - 1,000,000 = 2,000,000 ํšŒ

์š”์ฒญ ๋น„์šฉ์€ ํ•œ ๋‹ฌ์— 2,000,000ํšŒ ์‹คํ–‰์ด๊ธฐ ๋•Œ๋ฌธ์— $0.20 per 1M ์ž…๋‹ˆ๋‹ค.


์š”์ฒญ ๋น„์šฉ = 2,000,000/1,000,000 x 0.20 = $0.40  

์ž„์‹œ ์Šคํ† ๋ฆฌ์ง€๋Š”๊ฐ Lambda ํ•จ์ˆ˜์— 512MB(=0.5GB)์˜ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ถ”๊ฐ€ ๋น„์šฉ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ถ”๊ฐ€ ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ = 0.5GB - 0.5GB = 0.00

๋”ฐ๋ผ์„œ ๋ฌด๋ฃŒ ํ‹ฐ์–ด๋ฅผ ๊ณ ๋ คํ•œ ์ด ๋น„์šฉ์€ ์•ฝ $18.73์ž…๋‹ˆ๋‹ค.


์ด ๋น„์šฉ = $0.40(์š”์ฒญ ๋น„์šฉ) + $18.33(์‹คํ–‰ ์‹œ๊ฐ„ ๋น„์šฉ) = $18.73

์ด ๊ณ„์‚ฐ์€ ๊ธฐ๋ณธ ๋น„์šฉ๋งŒ์„ ๊ณ ๋ คํ•œ ๊ฒƒ์ด๋ฏ€๋กœ, ์ถ”๊ฐ€์ ์ธ ๋น„์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๊ฒฉ์€ ๋ณ€๋™๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ, ์ตœ์‹  ์ •๋ณด๋Š” AWS ๊ณต์‹ ์›น์‚ฌ์ดํŠธ์—์„œ ํ™•์ธํ•˜์‹œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.


๋งˆ์น˜๋ฉฐ

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



๊ด€๋ จ ๋งํฌ


SmileShark Logo

์Šค๋งˆ์ผ์ƒคํฌ๋Š” 
AWS ํ”„๋ฆฌ๋ฏธ์–ด ํŒŒํŠธ๋„ˆ์ด๋ฉฐ
AI MSP ์„ธ์ƒ์„ ๋งŒ๋“ค์–ด ๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

์ž์‚ฐ 2premier tier.png
ISMS-P.webp

์ธ์ฆ๋ฒ”์œ„  |  ํด๋ผ์šฐ๋“œ ๋ฉ”๋‹ˆ์ง€๋“œ ์„œ๋น„์Šค ์šด์˜           Cloud MSP

โ€‹์œ ํšจ๊ธฐ๊ฐ„  |  2026-03-05 ~ 2029-03-04     (์‹ฌ์‚ฌ ๋ฐ›์ง€ ์•Š์€ ๋ฌผ๋ฆฌ์  ์ธํ”„๋ผ ๋ฐ SaaS ์„œ๋น„์Šค ์ธํ”„๋ผ ์˜์—ญ ์ œ์™ธ)

์Šค๋งˆ์ผ์ƒคํฌ ์ฃผ์‹ํšŒ์‚ฌ  |  ์‚ฌ์—…์ž๋ฒˆํ˜ธ : 198-87-01516  |  ๋Œ€ํ‘œ์ด์‚ฌ : ์žฅ์ง„ํ™˜      ์„œ์šธ ๊ฐ•๋‚จ๊ตฌ ํ…Œํ—ค๋ž€๋กœ44๊ธธ 5, 8์ธต (๋Œ€์•„๋นŒ๋”ฉ)  |  ๋Œ€ํ‘œ์ „ํ™” : 070-5001-2205 

 |  ์ด๋ฉ”์ผ : contact@smileshark.kr

  • LinkedIn
  • Youtube
  • Facebook
ยฉCopyright
bottom of page