ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Serverless Framework로 AWS Lambada 배포하기
    💻 프로그래밍/AWS 2023. 4. 1. 22:57

    안녕하세요! 오랜만에 돌아온 개발자 JAY입니다! 요즘 좀 업무에 집중하고 이것저것 하다 보니 글을 진짜 오랜만에 쓰네요 ㅋㅋ 오늘은 신규업무를 하면서 알게 된 Serverles Framework에 대해서 설명해보려고 합니다.

     

    1. What is Serverless Framework


    serverless freamwork 홈페이지

    Severless Framework 홈페이지에 들어가게되면 대문짝만 하게 위와 같은 설명이 나옵니다. AWS 람다 앱 auto-scaling을 위한 all-in-one 개발 솔루션이라고 하네요 ㅋㅋ 

     

    serverless framework는 람다 배포를 야믈(yaml) 파일 형태로 배포할 수 있게 해주는 솔루션 입니다. 보통 람다는 AWS 콘솔에 들어가서 직접 수정할 수도 있지만 serverless framework를 이용하면 배포와 인프라 세팅을 손쉽게 할 수 있습니다.

     

     

    2. AWS Lambda 배포하기


    자, 이제 serverless framwork를 통해 간단한 람다 api를 만들어 보겠습니다.

     

    📌 첫 번째로 serverless framework를 설치합니다.

    npm install -g serverless

    설치가 완료되면 제대로 설치되었는지 버전확인을 한번 해봅니다

    serverless --version 혹은 sls --version

     

    📌 두 번째로는 프로젝트를 생성합니다.

    serverless 혹은 sls

    명령어를 실행하면 어떤 형태의 프로젝트를 만들것인지 선택할 수 있습니다.

    저는 node.js 프로젝트를 생성했습니다.

    이렇게 기본적으로 생성된 파일들을 확인 할 수 있습니다.

     

    📌 세 번째로 생성된 프로젝트 경로에 가서 로컬환경에서 람다함수를 실행합니다. 

    sls invoke local --function helloWorld

     

    📌 네 번째로 배포를 위해 AWS 계정 세팅을 합니다.

    배포 시 AWS계정을 사용하는 방법은 여러 가지가 있는데 저는 aws profile을 세팅해서 진행했습니다. 몇 가지 이유가 있는데 default로 회사계정을 사용하고 있어서 제 개인계정으로 쉽게 사용하기 위해서 aws profile 방식을 선택했습니다.

     

    ~/.aws/credentilas파일에서 아래와 같이 프로필을 세팅합니다. AWS IAM 계정을 생성하는 방법은 별도로 다루지 않겠습니다. AWS IAM 계정 생성 시 인프라 세팅을 위한 권한이 필요합니다. 저는 테스트를 위해 adminisrator 권한이 있는 IAM 계정을 사용했습니다

    [profileName1]
    aws_access_key_id=***************
    aws_secret_access_key=***************
     
    [profileName2]
    aws_access_key_id=***************
    aws_secret_access_key=***************

    배포 명령어는 아래와 같습니다.

    serverless deploy --aws-profile devProfile

    배포전 yaml파일을 살짝 수정하겠습니다. 저는 HTTP GET 호출을 사용하기 위해서 다음과 같이 events를 추가했습니다.

     

    http get 요청을 받는 이벤트를 추가

    자 이제 배포를 해보겠습니다!

     

    배포가 잘 되었다고 한다~

    배포가 잘 되었고 api endpoint까지 공유를 해주네요!

     

    endpoint에 접근하면 람다가 잘 응답을 주는걸 확인할 수 있습니다.

     

    3. serverless framework 이거 무슨 magic이야?


    간단한 serverless framwork 프로젝트 생성부터 배포까지 해봤는데요. 처음 보면 되게 마법 같다고 생각하시겠지만 알고 보면 그렇지 않습니다. 

    CloudFormation 작동 방식

    배포하고 이것저것 생성된 인프라를 보니까 CloudFormation이란게 생성되어 있더라고요. CloudFormation은 aws인프라를 템플릿을 통해 생성하고 배포하는 서비스입니다.

     

    아마도 serverless framework는 CloudeFormation을 사용해서 인프라 구성을 하는 것 같아요. 직접 CloudeFormation을 사용할 수 도 있지만 좀 더 편하게 구성할 수 있게 도와주는 것 같습니다.

     

    자동으로 생성된 인프라 리소스들
    배포 파일은 S3에 올라가는걸로 보이네요

    CloudeFormation에 가보면 어떤 이벤트들이 있었고 어떤 리소스가 생겨났는지 한 번에 확인할 수 있습니다. 저같은 경우는 HTTP 이벤트를 사용한다고 yaml에 적었기 때문에 API Gateway까지 자동으로 생성되고 람다와 연결된걸 확인 할 수 있었습니다.

     

    스택 제거시 생성된 인프라들이 하나씩 삭제되는걸 볼 수 있습니다

    생성된 CloudeFormation 스택을 제거하면 연관된 인프라들도 자동으로 삭제가 됩니다.

     

     

    4. 트러블 슈팅


    serverless framework docs에 설명이 잘 되어있어서 크게 어려운 부분은 없었는데요. 다만 권한 설정하는데 시간을 많이 소비했던 것 같습니다.

     

    배포시 연관된 리소스들에 대한 권한이 없으면 에러가 납니다

    배포할 때 사용할 리소스들에 대한 권한이 IAM 계정에 없으면 위처럼 에러를 뿜습니다. 위 에러는 처음에 제가 CloudFormation에 대한 권한을 주지 않아서 에러가 나더라고요 ㅎㅎ 근데 이게 일일이 사용할 인프라들에 대한 권한을 줘야 하다 보니 한 5개 추가하다가 계속 에러가 나서 그냥 administrator 권한을 줘버렸습니다 ㅎㅎ

     

    근데 실무에서는 보안을 위해서 실제 사용하는 인프라에 대한 권한만 줘야 합니다. 회사 동료는 한 60개를 한 땀 한 땀 직접 찾아서 넣었다고 하네요...😭 저는 그냥 맛보기니까 그냥 administrator로 했...지만 ㅋㅋㅋ

     

     

    5. 마치며


    람다를 사용할 일이 크게 없었어서 serverless framework와 같은 서비스가 있는지 몰랐고 실제로 사용해 보니 정말 편하네요! serverless framework 말고도 AWS SAM과 같은 서비스들도 있다고 합니다.

     

    람다를 적재적소에 잘 사용하면 좋기 때문에 여러분들도 한번 간단하게 실습을 해보시면 좋을 것 같습니다! 그럼 오늘도 좋은 하루 보내시길 바랍니다!

     

     

    참고

     

    [AWS] 서버리스 프레임워크란? (serverless framework)설치부터 배포까지 (node.js)

    Provider: AWS(Amazon Web Service) 작업환경: macOS(Mojave, 10.14.6 서버리스(Serverless)란? 요즘 이곳저곳에서 MSA(Micro Service Architecture)가 관심이 많아지고 있다. 이에따라 MSA를 편리하게 구현시킬 수 있는 클라

    yongyong-blog.tistory.com

     

    Serverless Framework - AWS Credentials

    The Serverless Framework documentation for AWS Lambda, API Gateway, EventBridge, DynamoDB and much more.

    www.serverless.com

     

    AWS CloudFormation으로 인프라 자동화 시작하기

    이 글은 CloudFormatin을 처음으로 시작하는 사용자를 위한 안내서이다. 이미 CloudFormation을 능숙하게 사용하고 있다면 사용 방법에 대한 설명은 대충 보고, 실무에서 어떻게 사용하는지에 대해서 주

    medium.com

    댓글

운동하는 개발자 JAY-JI