⏱ 10분 자습서: Serverless Express 웹 서버 및 API 만들기

서버리스 기능의 가장 인기 있는 사용 사례 중 하나는 라우팅이 완료된 웹 서버를 배포하고 실행하는 것입니다. 이 자습서에서는 AWS Lambda , Amazon API GatewayAWS Amplify 을 사용하여 몇 분 만에 이를 실행하고 실행하는 방법을 보여줍니다.

내가 사용할 라이브러리는 이 사용 사례를 위해 특별히 제작된 Serverless Express 프로젝트입니다.

이 라이브러리를 사용하여 eventcontextexpress 서버로 쉽게 프록시할 수 있으며 거기에서 get , post , put 와 같은 다양한 경로 및 HTTP 메서드에 액세스할 수 있습니다. 및 delete .

app.get('/', (req, res) => {
  res.json(req.apiGateway.event)
})


시작하기



Lambda 함수를 배포하는 방법에는 여러 가지가 있으며, AWS 콘솔로 직접 이동하거나, 서버리스 프레임워크를 사용하거나, 인프라를 내부 코드로 활용하는 기타 여러 도구를 사용할 수 있습니다.

Amplify Framework 과 함께 CLI 기반 접근 방식을 사용할 것입니다.

시작하려면 먼저 Amplify CLI를 설치하고 구성하십시오.

To see a video walkthrough of how to configure the CLI, click .



$ npm install -g @aws-amplify/cli

$ amplify configure


이제 선택한 JavaScript 프레임워크(React, Angular, Vue 등)를 사용하여 프로젝트를 만듭니다.

$ npx create-react-app myapp

$ cd myapp

$ npm install aws-amplify


다음으로 JS 프로젝트의 루트에서 새 Amplify 프로젝트를 초기화합니다.

$ amplify init

# Answer the questions prompted by the CLI


이제 API와 웹 서버를 만들 수 있습니다. 이를 위해 Amplifyadd 명령을 사용할 수 있습니다.

$ amplify add api

? Please select from one of the below mentioned services: REST
? Provide a friendly name for your resource to be used as a label for this category in the project: myapi
? Provide a path (e.g., /items): /items (or whatever path you would like)
? Choose a Lambda source: Create a new Lambda function
? Provide a friendly name for your resource to be used as a label for this category in the project: mylambda
? Provide the AWS Lambda function name: mylambda
? Choose the function template that you want to use: Serverless express function
? Do you want to access other resources created in this project from your Lambda function? N
? Do you want to edit the local lambda function now? N
? Restrict API access: N
? Do you want to add another path? N


CLI는 우리를 위해 몇 가지를 만들었습니다.
  • API 끝점
  • 람다 함수
  • 기능에서 Serverless Express를 사용하는 웹 서버
  • /items 경로
  • 의 다른 방법에 대한 일부 상용구 코드

    서버용 코드를 열어보자.

    amplify/backend/function/mylambda/src/index.js를 엽니다. 여기에서 eventcontext./app.js에 있는 익스프레스 서버로 프록시되는 기본 기능 핸들러를 볼 수 있습니다.

    const awsServerlessExpress = require('aws-serverless-express');
    const app = require('./app');
    
    const server = awsServerlessExpress.createServer(app);
    
    exports.handler = (event, context) => {
      console.log(`EVENT: ${JSON.stringify(event)}`);
      awsServerlessExpress.proxy(server, event, context);
    };
    
    


    다음으로, amplify/backend/function/mylambda/src/app.js를 엽니다.

    여기에서 익스프레스 서버에 대한 코드와 우리가 선언한 경로에 대한 다양한 HTTP 메서드에 대한 일부 상용구를 볼 수 있습니다. app.get('/items')에 대한 경로를 찾아 다음으로 업데이트합니다.

    // amplify/backend/function/mylambda/src/app.js
    app.get('/items', function(req, res) {
      const items = ['hello', 'world']
      res.json({ success: 'get call succeed!', items });
    });
    


    배포하기 전에 로컬에서 테스트할 수 있지만 먼저 Lambda에 대한 종속성을 설치해야 합니다.

    $ cd amplify/backend/function/mylambda/src && npm install && cd ../../../../../
    


    함수를 호출하고 서버를 시작하려면 다음 명령을 실행합니다.

    $ amplify function invoke mylambda
    


    이제 서버는 포트 3000에서 실행 중이며 이에 대해 요청할 수 있습니다. 명령줄에서 이 작업을 수행하려면 다음 curl 명령을 실행할 수 있습니다.

    $ curl http://localhost:3000/items
    
    # {"success":"get call succeed!","items":["hello","world"]}%
    


    API 및 기능을 배포하기 위해 push 명령을 실행할 수 있습니다.

    $ amplify push
    


    이제 모든 JS 클라이언트에서 API와 상호 작용할 수 있습니다.

    // get request
    const items = await API.get('myapi', '/items')
    
    // post with data
    const data = { body: { items: ['some', 'new', 'items'] } }
    await API.post('myapi', '/items', data)
    


    여기에서 추가 경로를 추가할 수 있습니다. 이렇게 하려면 업데이트 명령을 실행합니다.

    $ amplify update api
    


    여기에서 경로를 추가, 업데이트 또는 제거할 수 있습니다.

    API 카테고리에 대한 자세한 내용을 보려면 here 을 클릭하십시오.

    좋은 웹페이지 즐겨찾기