728x90
반응형
npm으로 serverless 프레임워크 설치
npm install -g serverless
프로젝트 생성
sls create --template aws-nodejs --path first-lambda
아래 Open Source Page 확인
www.serverless.com/framework/docs/providers/aws/cli-reference/create/
템플릿 활용 프로젝트 생성 시 아래 두 파일이 중요
handler.js : 실행할 소스코드
serverless.yml : 서버리스의 배포 및 각종 설정 파일
GraphQL 연결 - Apollo Server
handler 예시
1. DB 연결 (사용자 권한 체크) -> 2. Apollo 서버 실행 -> 3. GraphQL 함수 모듈 실행
import { ApolloServer } from 'apollo-server-lambda';
import { APIGatewayProxyEvent, APIGatewayProxyResult, Callback, Context } from 'aws-lambda';
import 'reflect-metadata';
import * as TypeGraphQL from 'type-graphql';
import resolvers from './resolvers';
import database from './utils/database';
import { userAuthChecker } from './utils/userAuthChecker';
const createHandler = async () => {
(global as any).schema = (global as any).schema || (await TypeGraphQL.buildSchema({
resolvers,
validate: true,
authChecker: userAuthChecker,
}));
const schema = (global as any).schema;
await database();
const server = new ApolloServer({
schema,
playground: true,
context: ({ event, context }) => {
context.callbackWaitsForEmptyEventLoop = false;
const con = {
headers: event.headers,
event,
context
};
return con;
}
});
return server.createHandler({ cors: { origin: '*', credentials: true } });
};
exports.graphql = (event: APIGatewayProxyEvent, context: Context, callback: Callback<APIGatewayProxyResult>) => {
createHandler().then((handler: any) => {
context.callbackWaitsForEmptyEventLoop = false;
return handler(event, context, callback);
});
};
서버리스 빌드 및 배포 -> S3에 소스 올라가며 람다 및 API Gateway생성
serverless deploy --stage product
728x90
반응형
'AWS' 카테고리의 다른 글
aws lambda 파이썬 계층 추가 (0) | 2024.01.10 |
---|---|
AWS lambda로 batch job 만들어서 실행하기 (feat. sam, ga4 data api) (1) | 2023.12.19 |
API Gateway CORS 문제 해결 (0) | 2023.07.31 |
S3 정적 호스팅 (Cloudfront, Route 53) (0) | 2021.05.11 |
RDS - MySQL 생성 및 Workbench 연결 (0) | 2021.05.10 |