Serverless Framework Setup for AWS Lambda

serverless.yml ํŒŒ์ผ ์ž‘์„ฑ๋ฒ• ๋ฐ deploy commands๋ฅผ ์ •๋ฆฌํ•ด์š”

1. serverless.yml ํŒŒ์ผ ์ž‘์„ฑ๋ฒ•

  • serverless.yml ํŒŒ์ผ์€ project์˜ root๊ฒฝ๋กœ์— ์ƒ์„ฑํ•œ๋‹ค

  • ํ•ด๋‹น ํŒŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ Serverless Framework๋Š” ๋ฐฐํฌํ•œ๋‹ค

ex1)

serverless-example

service

  • Project ์ด๋ฆ„

provider

  • name

    • Cloud service provider์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ์žฌํ•œ๋‹ค

      • ์—ฌ๊ธฐ์„œ๋Š” AWS Lambda ์— ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ yaml file ์ด๋ฏ€๋กœ aws ๊ฐ€ ๊ธฐ์žฌ๋˜์–ด ์žˆ๋‹ค

  • runtime

    • ์‚ฌ์šฉํ•˜๋Š” runtime version์„ ๊ธฐ์žฌํ•œ๋‹ค

  • stage

    • ๋ฐฐํฌํ•˜๋ ค๋Š” stage๋ฅผ ๊ธฐ์žฌํ•œ๋‹ค

      • ${opt: stage, 'dev'}

        • local ํ™˜๊ฒฝ์—์„œ sls ๋ช…๋ น์–ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐฐํฌ ์‹œ stage option์„ ์ฃผ๋ฉด ํ•ด๋‹น stage๋กœ, ๋”ฐ๋กœ ๋ช…๋ น์–ด๋ฅผ ์ฃผ์ง€ ์•Š์œผ๋ฉด default๋กœ dev๊ฐ€ ์ ์šฉ๋œ๋‹ค

          • ex) sls deploy -s prod

            • stage ์„ค์ •์„ ์œ„ํ•œ option

              1. -s

              2. --stage

  • region

    • ๋ฐฐํฌํ•˜๋Š” lambda์˜ region ์ •๋ณด๋ฅผ ๊ธฐ์žฌํ•œ๋‹ค

  • versionFunctions

    • versioning์„ ์›ํ•˜๋ฉด true๋กœ ์„ค์ •ํ•œ๋‹ค

  • memorySize

    • memory size๋ฅผ ๊ธฐ์žฌํ•œ๋‹ค

      • default๋กœ๋Š” 1024๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋‹ค

  • deploymentBucket

    • ๋ฐฐํฌ๋˜๋ฉด ์ €์žฅ๋  AWS S3 bucket์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•œ๋‹ค

      • ๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒˆ๋กœ์šด bucket์ด ์ƒ์„ฑ๋œ๋‹ค

  • deploymentPrefix

    • ๋ฐฐํฌ๋˜๋Š” bucket ๋‚ด์— prefix๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค

      • default๋กœ๋Š” serverless๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค

package

  • include

    • deployment package์— ํฌํ•จ์‹œํ‚ฌ directory๋ฅผ ๊ธฐ์žฌํ•œ๋‹ค

  • exclude

    • deployment package์— ํฌํ•จ์‹œํ‚ค์ง€ ์•Š์„ directory๋ฅผ ๊ธฐ์žฌํ•œ๋‹ค

  • individually

    • function๋ณ„๋กœ ๊ฐ๊ฐ packaging ํ•˜๊ธธ ์›ํ•˜๋ฉด ture๋กœ ์„ค์ •ํ•œ๋‹ค

      • default๊ฐ’์€ false์ด๋‹ค

custom

  • pythonRequirements

    • serverless-python-requirements plugin ์‚ฌ์šฉ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์ด๋‹ค

      • dockerizePip

        • docker packaging ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด true ๋กœ ์„ค์ •ํ•œ๋‹ค

          • default๋Š” false ์ด๋‹ค

      • layer

        • ์ƒ์„ฑ๋œ dependency๋ฅผ Lambda Layer๋กœ ์ƒ์„ฑํ•˜๋ ค๋ฉด true๋กœ ์„ค์ •ํ•œ๋‹ค

          • default๋Š” false ์ด๋‹ค

functions

  • function_name

    • ํ•จ์ˆ˜๋ช… (serverless framework์—์„œ ์‚ฌ์šฉ๋  ํ•จ์ˆ˜๋ช…์ด๋‹ค. Lambda ํ•จ์ˆ˜๋ช… ์•„๋‹˜)

      • name

        • AWS Lambda์— ์ƒ์„ฑ๋˜๋Š” function name์ด๋‹ค

          • stage์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด

            ${opt: stage, 'dev'}

            ๋กœ ์„ค์ •ํ–ˆ๋‹ค

            • ์œ„์˜ provider >stage ์— ๊ฐ™์€ ์„ค์ •์ด ๋˜์–ด์žˆ๋‹ค

      • handler

        • ํ•ด๋‹น ํ•จ์ˆ˜์˜ ํŒŒ์ผ๊ณผ ํ•จ์ˆ˜๋ช…์„ ๊ธฐ์žฌํ•œ๋‹ค

          • ex) handler.do_optimize

            • ํ•ด๋‹น Lambda function์€ handler.py ๋‚ด์˜ do_optimize() ํ•จ์ˆ˜์—์„œ ์‹คํ–‰๋œ๋‹ค

      • layers

        • ํ•ด๋‹น ํ•จ์ˆ˜์— ๋“ฑ๋กํ•  layer๋ฅผ ๊ธฐ์žฌํ•œ๋‹ค

          • ์—ฌ๊ธฐ์„œ๋Š” serverless-python-requirements plugin ์„ ํ™œ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•œ layer๋ฅผ lambda layer๋กœ ๋“ฑ๋กํ•˜๋ฏ€๋กœ - { Ref: PythonRequirementsLambdaLayer } ๋กœ ์„ค์ •ํ•˜์˜€๋‹ค

plugins

  • npm์œผ๋กœ ์„ค์น˜ํ•œ serverless plugin ์ค‘ ์‚ฌ์šฉํ•  plugin์„ ๊ธฐ์žฌํ•œ๋‹ค

    • ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ root ์— external plugin์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ๋งŒ ์ •์ƒ ์ž‘๋™ํ•œ๋‹ค

ex2)

serverless-vpc

provider

  • vpc

    • Lambda ํ•จ์ˆ˜์˜ VPC์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ์žฌํ•œ๋‹ค

  • securityGroupIds

    • ํ•ด๋‹น lambda ํ•จ์ˆ˜์˜ Security group ID๋ฅผ ๊ธฐ์žฌํ•œ๋‹ค

  • subnetIds

    • ํ•ด๋‹น lambda ํ•จ์ˆ˜์˜ subnet ID๋ฅผ ๊ธฐ์žฌํ•œ๋‹ค

+

์ฃผ์˜

VPC ์ •๋ณด๋ฅผ serverless.yml์— ๊ธฐ์žฌํ•˜์ง€ ์•Š์œผ๋ฉด lambda ํ•จ์ˆ˜๋งŒ ๋ฐฐํฌ ํ•˜๋Š”๊ฒƒ์ด ์•„๋‹Œ ์ „์ฒด ๋ฐฐํฌ ์‹œ, VPC ์ •๋ณด๊ฐ€ ์ดˆ๊ธฐํ™” ๋˜๊ณ  AWS Console์—์„œ ์žฌ ์„ค์ • ํ•ด์•ผํ•œ๋‹ค!

๊ผญ Serverless.yml์— VPC ์ •๋ณด๋ฅผ ๊ธฐ์žฌํ•˜์ž!

2. Deploy commands

๋ช…๋ น์–ด ์ค‘ ์ผ๋ถ€๋งŒ ์ด๊ณณ์— ์ •๋ฆฌ ํ•˜๋ฏ€๋กœ ์ „์ฒด command ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ์•„๋ž˜์˜ ์ฐธ๊ณ  ์ž๋ฃŒ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค

Stage

  • --stage or -s

    • ๋ฐฐํฌํ•˜๋ ค๋Š” stage๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค

      • ex)

        • sls deploy -s prod

Function

  • --function or -f

    • ํŠน์ • ํ•จ์ˆ˜๋งŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค

      • ์œ„์˜ ์˜ˆ์‹œ์—์„œ Lambda Layer๋ฅผ ํ•จ๊ป˜ ์ƒ์„ฑํ•ด์„œ ๋ฐฐํฌํ•˜๋ฏ€๋กœ ์ตœ์ดˆ ๋ฐฐํฌ ํ›„ ์žฌ๋ฐฐํฌ ์‹œ, code ๋งŒ ๋ณ€๊ฒฝ ๋˜์—ˆ์œผ๋ฉด layer๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•  ํ•„์š” ์—†์œผ๋ฏ€๋กœ ํ•ด๋‹น option์„ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค

        • ex)

          • sls deploy -f do_optimize

+

์ฐธ๊ณ  ์ž๋ฃŒ

Last updated

Was this helpful?