안경잡이개발자

728x90
반응형

  지금까지 AWS Lambda를 이용하는 방법에 대해서 알아보았습니다. 다만 단순히 AWS Lambda를 이용하여 코딩하고, 서비스를 개발하면 다양한 어려움에 봉착할 수 있습니다. 특히 AWS Lambda를 이용하면, 프로그램의 크기가 커질 때 직접 웹 사이트에서 코딩을 하는 것이 어려워집니다. 뿐만 아니라 API 게이트웨이 등을 주기적으로 설정해주어야 한다는 점에서 손이 많이 가게 됩니다.

 

  이럴 때 Serverless Framework를 이용하게 되면, AWS Lambda를 보다 손쉽게 이용할 수 있습니다. 직접 수작업으로 설정하던 것과 비교했을 때, 복잡한 작업을 간단한 명령어로 대신 처리할 수 있도록 해주기 때문에 매우 유용합니다.

 

  Serverless Framework를 이용하기 위해서는, IAM 사용자 설정을 해주셔야 합니다. 따라서 AWS 콘솔에 로그인을 한 뒤에 [My Security Credentials] 탭으로 이동합니다.

 

 

  이후에 [IAM Users]를 설정할 수 있도록 합니다.

 

 

  Serverless 프레임워크(Framework)의 실습을 위하여 간단히 하나의 사용자를 추가할 수 있습니다. 따라서 [Add user]를 눌러주세요.

 

 

  이후에 다음과 같이 사용자 이름을 설정한 뒤에 [Programmatic access]에 체크합니다. 그러면 프로그래밍 환경에서 AWS 계정 권한에 접근할 수 있게 됩니다.

 

 

  또한 해당 IAM 사용자에게 권한을 설정해 줄 수 있습니다. 다음과 같이 [AdministratorAccess] 권한을 부여하시면 됩니다. 이 권한은 말 그대로 AWS 계정과 동일한 수준의 권한을 의미합니다. 따라서 향후 만들어 질 IAM 사용자의 Secret Key 값을 다른 사람에게 노출하게 되면, 심각한 문제가 발생할 수 있으므로 반드시 유의하여 Secret Key 값을 관리하셔야 합니다.

 

 

  결과적으로 다음과 같이 사용자를 생성할 수 있습니다.

 

 

  리뷰를 완료하고, 사용자를 최종적으로 생성합니다.

 

 

  사용자가 생성되면 Access Key ID와 Secret Access Key 값이 주어집니다. 이 때 Secret Access Key 값은 반드시 유의하여 저장하셔야 합니다. 이 값을 다른 사람에게 노출하게 되면, 악의적인 의도를 가진 해커가 이를 악용하여 우리의 AWS 계정을 마음대로 다룰 수 있습니다. 예를 들면 무작위로 EC2 인스턴스를 생성해서 하루 만에 1억 가까이 과금이 되도록 할 수도 있겠죠? 따라서 매우 매우 조심하셔야 합니다.

 

 

  이제 Serverless Framework를 위한 AWS IAM 사용자가 만들어졌습니다. 이제 Serverless 프레임워크를 이용해 보겠습니다. 가장 먼저 serverless 모듈을 설치하셔야 합니다. 다음과 같은 명령어로 설치할 수 있습니다.

 

npm install -g serverless

 

 

  Serverless 프레임워크(Framework)는 기본적으로 다양한 템플릿을 제공하고 있습니다. 이러한 템플릿을 이용하면, 자신이 원하는 프로그래밍 언어를 선택하여 빠르게 개발을 진행할 수 있습니다. 다음의 명령어를 입력하여 템플릿(Template) 종류를 확인합시다.

 

serverless create --template

 

 

  이 중에서 가장 기본적인 Node.js 프로젝트 형태를 가지고 있는 aws-nodejs라는 템플릿을 이용해보도록 하겠습니다. 다음의 명령어를 입력하면, 현재 폴더에 aws-nodejs 템플릿의 파일들을 생성하게 됩니다.

 

serverless create --template aws-nodejs

 

 

  실제로 현재 폴더를 확인해 보시면, handler.js와 serverless.yaml 파일이 생성되어 있습니다.

 

  - handler.js: 실제로 API 역할을 수행하는 Node.js 소스코드입니다.

  - serverless.yaml: Serverless 프레임워크의 기본적인 설정 파일입니다.

 

 

  이제 Serverless 프레임워크(Framework)를 사용하기 위하여 AWS 계정 정보를 설정합니다. 아래와 같은 명령어로 AWS 계정 정보를 설정하면, 배포 할 때 해당 AWS 계정으로 배포하게 됩니다.

 

serverless config credentials --provider aws --key {Key ID} --secret {Secret Key}

 

 

  이제 실제로 API를 위한 소스코드를 작성해보도록 하겠습니다. 따라서 handler.js 코드를 수정합니다.

 

'use strict';

module.exports.hello = async (event) => {
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: '성공적으로 배포가 완료되었습니다!',
      input: event,
    }, null, 2),
  };
};

 

  이후에 실질적인 배포 설정을 위하여 serverless.yaml 코드를 수정합니다. 서울(Seoul) 지역(Region)에 Node.js 10 버전으로 배포를 진행하는 것입니다. 또한 handler.js에 있는 hello 함수를 api/hello라는 경로의 GET 방식으로 배포하게 됩니다.

 

service: serverless-nodejs-study

provider:
  name: aws
  runtime: nodejs10.x
  region: ap-northeast-2

functions:
  hello:
    handler: handler.hello
    events:
      -  http:
            path: api/hello
            method: get

 

  이후에 배포를 진행합니다. 배포는 다음과 같은 명령어로 수행할 수 있습니다. deploy 명령어를 수행하면, 현재 폴더에 있는 serverless.yaml 파일에 적혀 있는 설정에 의하여 배포가 진행됩니다.

 

serverless deploy

 

 

  또한 배포가 완료되면, 각 HTTP 메소드(Method) 별로 호출할 수 있는 URL 주소가 나옵니다. 실제로 URL 주소로 접속해 보면 다음과 같이 우리가 작성한 API가 실행되는 것을 확인할 수 있습니다.

 

 

  이후에 AWS 콘솔에 접속하여, 실제로 배포가 완료된 AWS Lambda 함수를 확인할 수 있습니다.

 

 

  뿐만 아니라 작성한 API 소스코드의 길이가 짧기 때문에, AWS Lambda 소스코드를 직접 수정할 수도 있군요.

 

 

728x90
반응형