백앤드(Back-End)/AWS

[AWS] Lambda 개념 및 로컬 환경 설정(Mac + Node + Serverless)

RyanSin 2021. 9. 28. 01:07
반응형

- 개요

안녕하세요. 이번 시간에는 AWS Lambda 서비스에 대해 알아보겠습니다.

 

AWS에서 Lambda라는 서비스는 소개할 때 "프로비저닝 하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스"라고 소개하고 있습니다.

 

무슨 말일 까요?... 일단 프로비저닝이란 우리의 요구사항에 맞게 시스템 자원을 할당하고 배치 및 배포해 두었다가 필요한 상황에서 시스템을 즉시 사용할 수 있는 상태라고 말할 수 있습니다.

 

예시로 AWS EC2 서비스를 비교해서 설명해보겠습니다. 

 

EC2 서비스는 가상의 클라우드 공간에 컴퓨팅을 구축한다고 모두 아실 겁니다. (EC2 서비스는 실행하는 시간, 트래픽 등 요금을 지속적으로 측정합니다.) EC2 인스턴스를 실행 상태라면 비용은 계속 나가게 됩니다.

 

하지만 Lambda서비스는 반대로 "내가 필요한 상황에서 시스템을 즉시 사용"할 수 있습니다.

 

보통 Lambda 서비스를 활용해서 구축하는 기능을 살펴보면, E-Mail, SMS(문자전송), Notification System(알람 서비스) 등등

어떠한 특정 이벤트가 발생할 때 Lambda 서비스를 많이 활용합니다. (저도 실서비스에 이러한 상황에서 많이 사용했습니다. :>)

 

아무리 설명을 해도... 직접 실습하지 않으면 머릿속에 그려지지 않을 거라 생각이 듭니다.

 

- 개발환경 설정

저는 Node.js를 활용한 Serverless Framwork를 사용할 생각입니다. 개발 PC에는 Node와 awscli를 설치해야 합니다.

 

Node.js 설치

아래 링크를 통해 설치해주시면 되겠습니다. https://nodejs.org/ko/download/

 

다운로드 | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

brew 설치

설치
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
설치 확인
brew -v 

 

awscli 설치

설치
 brew install awscli
설치 확인
aws --version

 

AWS 인증설정

개발 PC에서 aws 리소스에 접근하려면 Access Key를 발급받아 설정해야 합니다.

 

Access Key를 발급받아 사용하기 위해서 보통 우리는 IAM을 통해 유저를 생성해 해당 유저에 권한을 설정합니다.

 

루트(Root) 계정에 Access Key를 사용하면 나중에... 해킹을 당하거나 키가 유출되면 문제가 발생할 수 있기 때문에 꼭!! IAM에서 유저를 생성하시는 걸 추천드리겠습니다.

 

IAM 유저에 대해 잘 모르시는 분들은 아래 링크를 통해 학습하고 오시는 걸 추천드리겠습니다.

[AWS] IAM(Identify and Access Management) 생성 및 사용법

 

[AWS] IAM(Identify and Access Management) 생성 및 사용법

- 개요 안녕하세요. 이번 시간에는 AWS 자원에 접근 권한에 대해 알아보겠습니다. 보통 AWS 계정을 생성하면 생성한 계정은 루트(Root) 계정입니다. (최고 권한을 가진 계정, 모든 aws 서비스에 접근

any-ting.tistory.com

Key 설정

 유저를 생성하고 액세스 키 ID와 비밀 액세스 키를 로컬 PC에 설정해야 합니다.

 

설정 명령어
aws configure

저는 해당 키를 삭제할 예정이기 때문에 여러분들은 키를 노출하시면 안 됩니다!!.

 

~/. aws 경로를 확인하면 config credentials 폴더가 생성됩니다.

 

설정 확인
aws ec2 describe-instances

 

위 설정을 다했다면 우리가 생성한 유저에 권한을 부여해야 합니다. 두 가지 권한을 부여합니다.

  • AWSLambdaFullAccess : 람 함수 생성시 사용
  • IAMFullaccess : 생성할 람다 함수의 IAM 역할(role) 생성시 사용

이번 시간에는 Lambda 개발환경을 설정했습니다. 다음 시간에는 Lambda를 구축하는 시간을 가져보겠습니다.