본문 바로가기

BackEnd/리눅스 & AWS

AWS를 Serverless Framework 생성

반응형

Serverless Framework

AWS를 이용한 서버리스 프레임워크 설정이다.

 

1. serverless framework 화면 진입

‘serverless framework’를 검색하여 진입한다: https://www.serverless.com/

 



진입 화면에서 밑으로 내려서 설치 문서를 확인한다.

view docs > Getting started> Setup

https://www.serverless.com/framework/docs/getting-started

 

서버리스를 이용하기 위해서는, Node또는 NPM이라는 프로그램이 필요한데, 이는 사전 NodeJs가 필요하다. 

https://nodejs.org/en/

 

2. serverless framework 설치

 

npm install -g serverless

 

(해당 코드의 우상단을 보면 복사 아이콘이 있다.) 복사하여, 로컬 터미널에 입력을 하자.

 

3. serverless framework 로그인 - create app

로그인을 하고 create app을 들어간다. 여기서 만들면 바로 AWS에 배포해준다. 

(create app진입 화면)

 

우리는 파이썬 flask API를 이용할 것이므로, python flaskAPI를 선택한다.

 

앱 이름은: aws-yh-recipe-server로 설정(이미지랑 상이한 이름)하고 create클릭

 

해당코드를 복사한다. 

 

윈더우즈에서는 줄바꿈표시(\)이게 에러나니 다 지우고 한줄로 만들자. 

npm i -g serverless && serverless --org=yeooo --app=aws-yh-recipe-server --name=aws-yh-recipe-server --template=aws-python-flask-api

 

자동으로 이 프레임워크가 프로젝트를 만들어주고, 자동으로 AWS 에 배포해준다. 

 

4. 로컬 컴퓨터에 프로젝트 폴더 생성

로컬 컴퓨터에 설치 되어있는 파이썬의 터미널 anaconda prompt 혹은 visual studio code의 터미널에 진입을 한다.

그리고, 깃허브 폴더로 이동.

vscode

 

 

anaconda prompt

 

 

깃허브라는 폴더안에다가 지금 프로젝트 폴더를 하나 만든다. 그 폴더 안에는 자동 배포할 수 있는 파일도 포함되어있다. 

 

상기코드 터미널에 복붙

(다운로드 중)

 

 

AWS credential, csv 파일을 요청한다. 

IAM 유저 만들어서, csv 파일 다운로드 한 파일이 필요한데 지금은 스킵해도 된다. 

 

AWS 의 API의 Gateway와 Lambda를 이용해서 자동화 배포를 할건데, 여기에 로컬 컴에 serverless를 설치한거. 실제로는, recipe-server를 서버리스 프레임워크가 대신에 AWS에 배포를 한다. 아무나 AWS접근하면 안되니, cridentials에서 키와 시크릿을 세팅해줘야한다. csv 파일 나중에 여기다가 설치하면 된다. 

 

5. visual Studio Code에서 열기 및 환경설정

Visual Studio Code -> New Window

 

아까 서버리스 설치한 경로대로 들어가서, rverless framwork에서 생성했던 폴더 aws-yh-recipe-server을 선택해준다.

 

그대로 들어가면, 왼쪽에 새로보는 파일들이 생겼다.

serverless.yml (yml은 외국에서 ‘얌’이라고 읽는다. )를 클릭해서 들어가본다.

 

org: 내 계정, 그리고 앱 이름, 서비스명도 있는 지 확인한다

framworkVersion: AWS에 자동으로 배포해주는 serverless 프레임 워크버전이 3

provider: 어디다가 배포할건데? aws

runtime: python 3.8

 

상기 파일은 서버리스가 배포하는데 필요한 파일이다. 이렇게 배포하면, 자동으로 미국에다가 배포하는데. 

 

 requirements.txt에서 요구사항, 즉 내가 로컬에서 사용한 라이브러리를 적어준다.

우리의 컴퓨터, 배포라는 건, 라이브러리는 환경이 똑같아야한다. 우리가 파이썬 3.8, AWS도 3.8이어야한다. 

 

직전 서버개발에 사용한 라이브러리 : 

mysql-connector-python flask-restful psycopg2-binary passlib email-validator Flask-JWT-Extended requests

이걸 복사해서 requrrements.txt 한줄에 하나씩 넣어주자. 

 

버전을 모르면 안써도 된다.

 

package.json과 package-lock.json은 서버리스가 관리하는 파일이므로 건들지 말자. node_modules 폴더도 건드리지 말자. 서버리스가 관리한다. 

 

6. 간단 서버리스 배포 테스트 및 credential 설정

app.py 파일에 들어가서 해당 코드를 작성하고,

 

터미널에서 python app.py로 실행을 해보고, Postman에서 실행해보고, 잘 돌아가는지 확인한다.

 

 

만약 성공적으로 돌아갔다면, 터미널에 서버리스로 배포한다는 뜻의 하기 명령문을 적어준다.

serverless deploy
혹은
sls.deploy

같은 뜻이다. 밑이 줄임말. 

 

배포를 진행하다보면, 해당 에러가 나오는 데, credential 키를 가져오라고 한다. URL을 클릭하여 진입하자.

https://www.serverless.com/framework/docs/providers/aws/guide/credentials/

 

Serverless Framework - AWS Credentials

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

www.serverless.com

 

IAM의 Credential 만드는 법 참고: https://yeo0616.tistory.com/236

 

AWS Credential 만들기

AWS 콘솔에 접속하여 로그인 > IAM으로 이동 > Users(사용자)로 이동 > ‘사용자 추가’ 클릭 사용자 이름을 입력하고, AWS 자격 증명 유형선택에서 엑세스 키, 암호에 클릭을 한다. ‘다음: 권한’을

yeo0616.tistory.com

 

위 이미지와 같은 형식으로 입력을 하자.

윈도우즈라서 실행이 안될 수도 있는 데, Windows에서는 export를 set로 대체하여 입력을 하면 실행이 된다.

 

serverless framework의 해당 프로젝트 진입 -> 좌측 메뉴: org -> providers -> add 클릭

Next 누른 다음에, 내가 받은 Access/Secret Keys를 입력하고 ‘Create AWS provider’를 클릭한다.

 

설정 후에, 터미널에 와서 다시 sls deploy명령어를 입력을 한다.

성공하면 밑 이미지와 같은 화면이 나온다.

 

서버리스로 배포를 성공하면, 

active라고 표시되는 동시에, 이런 대시보드를 볼 수가 있다. 이런 화면이 나오면 Lambda에 배포를 하고 있다는 뜻이다.

 

endpoint에 있는 URL을 복사하여, Postman에서 실행해본다.

 

잘 돌아가는 지 확인한다. 또한 예전에 작성했던 API의 로컬 URL를 서버의 endpoint의 주소로 바꿔서 잘 돌아가는 지 확인한다.

 

 

반응형