⏱ 10분 자습서: Serverless Express 웹 서버 및 API 만들기
10945 단어 javascriptserverlessnodeaws
내가 사용할 라이브러리는 이 사용 사례를 위해 특별히 제작된 Serverless Express 프로젝트입니다.
이 라이브러리를 사용하여
event
및 context
를 express 서버로 쉽게 프록시할 수 있으며 거기에서 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와 웹 서버를 만들 수 있습니다. 이를 위해 Amplify
add
명령을 사용할 수 있습니다.$ 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는 우리를 위해 몇 가지를 만들었습니다.
/items
경로서버용 코드를 열어보자.
amplify/backend/function/mylambda/src/index.js를 엽니다. 여기에서
event
및 context
가 ./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 을 클릭하십시오.
Reference
이 문제에 관하여(⏱ 10분 자습서: Serverless Express 웹 서버 및 API 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws/10-minute-tutorial-creating-a-serverless-express-web-server-api-29j7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)