프로그래밍/API 서버

클라우드에 API Server 배포하기( feat. AWS, Serverless Framework)

갑자기 내리는 비 2021. 4. 16. 13:47

AWS를 이용해서 외부에서도 접속가능하도록 API 서버를 배포하겠습니다.

외부의 사용자는 컴퓨터 또는 핸드폰으로 지정된 URL을 입력해 API서버에 접속할 수 있습니다.

 

접속한 후 AWS의 API Gateway를 통해 API에 접근, 그리고 AWS Lambda를 이용해 함수를 실행합니다.

   - AWS의 API Gateway는 규모와 관계 없이 REST 및 WebSocket API를 생성, 게시, 유지, 모니터링 및 보호하기 위한 서비스입니다.

  - AWS의 Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다.

 

 

 

API Gateway와 Lambda를 이용하기 위해 IAM을 사용합니다.

 

AWS의 IAM이란  Identity and Access Management의 약자로, AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어합니다.

 

 

1. IAM을 이용하기 위해 credential을 생성합니다.

AWS홈페이지에 로그인 후 IAM 클릭, 사용자를 추가합니다.

 

2. 사용자 이름 입력, 액세스 유형도 선택해줍니다.

3. 유저의 권한을 관리자로 지정해서 만들어줍니다.

 

4. 설정들을 다 지정하였으면 완료 후 .csv파일을 다운받습니다( 액세스 키 아이디와 비밀번호 등 접속에 필요한 데이터들이 있습니다. )

 

서버의 배포는 자동으로 분산, 확장해주는 Serverless Framework를 사용하겠습니다.

 

The Serverless Application Framework | Serverless.com

Build web, mobile and IoT applications using AWS Lambda and API Gateway, Azure Functions, Google Cloud Functions, and more.

www.serverless.com

Flask를 이용해 API서버를 만들었으므로 맨 우측 아이콘을 클릭합니다.

로그인 후 앱을 생성해줍니다.

 

앱의 이름을 정해주면 하단의 이미지에 나오듯 연결할 AWS서버를 정하고, npm을 다운받아 서버리스 파일을 만들고, 배포하는 명령어를 보여줍니다.

conda환경에서 할 것이므로 Anaconda Prompt에서 실행해줍니다. ( npm을 사용하기 위해 Node.js를 먼저 다운받습니다. https://nodejs.org/en/ 에서 다운받을 수 있습니다.)

AWS 연결에 들어가면 access key, aws secret key를 입력하라고 나오는데, 아까 다운받은 .csv 파일에 있습니다. 

 

 

  -> 자동배포( CI / CD ) 가 잘 안 되어 Role ARN type으로 생성해 연결하였습니다.

만들었다면 하단의 ...을 눌러 환경설정을 해주겠습니다.

 

깃허브에서 연동할 repository와 AWS의 IAM가 잘 연결되었는지 확인합니다.

 

이제 깃허브에 코드를 작성하고 commit, push하면 자동으로 AWS 서버에 배포되어 들어갈 수 있습니다.

 

 

postman 프로그램에 URL을 입력해 들어가 로그인에 필요한 이메일과 비밀번호를 주었더니 토큰이 나오는 모습을 확인할 수 있습니다.