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가 필요하다.
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의 터미널에 진입을 한다.
그리고, 깃허브 폴더로 이동.
깃허브라는 폴더안에다가 지금 프로젝트 폴더를 하나 만든다. 그 폴더 안에는 자동 배포할 수 있는 파일도 포함되어있다.
상기코드 터미널에 복붙
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/
IAM의 Credential 만드는 법 참고: https://yeo0616.tistory.com/236
위 이미지와 같은 형식으로 입력을 하자.
윈도우즈라서 실행이 안될 수도 있는 데, 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의 주소로 바꿔서 잘 돌아가는 지 확인한다.
'BackEnd > 리눅스 & AWS' 카테고리의 다른 글
Lambda의 AWS의 hostname, URL을 잊어버렸을 경우 (0) | 2022.10.04 |
---|---|
Serverless AWS CI/CD 설정 (0) | 2022.10.04 |
AWS Credential 만들기 (0) | 2022.10.03 |
데이터베이스, DBMS, NoSQL, AWS Lambda 간단 설명 (1) | 2022.10.03 |
만든 앱 리눅스 서버에서 실행하기 (0) | 2022.06.04 |