본문 바로가기

백엔드/Serverless

(5)
[인스타그램 클론코딩] 사용자 인증 & GraphQL Context 활용 Cognito ID 토큰 복호화 포스트에서 클라이언트에서 보낸 토큰을 복호화해서 userName, 이메일, 토큰 유효성을 얻을 수 있었습니다. 이때 ApolloServer 생성자의 context 속성(함수)을 사용했었는데요. 여기서 context가 반환한 객체는 GraphQL의 모든 Resolvers가 공유할 수 있습니다. 아직 GraphQL, Resolver가 뭐지 모른다면? 추천: 나의 첫번째 GraphQL서버 만들기 handler.js const server = new ApolloServer({ schema, context: async ({ event, context }) => { const authorization = event.headers.authorization || event.headers..
서버리스 GraphQL 백앤드 구축 서버리스 프레임워크 초기화 및 AWS에 연결 포스트에서 생성한 서버리스 설정값을 사용하여 람다 함수를 배포할 것입니다. 1. 서버리스 프로젝트 생성 npx serverless create --template aws-nodejs --path instagureng-backend 2. 패키지 설치 GraphQL API 관련 패키지 npm install apollo-server-lambda graphql 테스트용 패키지 배포하기 전에 로컬 서버 3000포트로 미리 테스트할 수 있도록 해주는 패키지입니다. npm install serverless-offline --save-dev 3. handler.js schema는 typeDefs, resolvers 객체를 포함하는 객체입니다. Prisma와 ID 토큰 관련 ..
서버리스 GraphQL 백앤드 구성 GraphQL이 무엇인지는 구글에서 쉽게 찾을 수 있으니 생략하겠습니다. 추천: 나의 첫번째 GraphQL서버 만들기 이번 포스트에서는 AWS 람다를 사용해서 GraphQL 백앤드를 구축하는 방법에 대해 알아보겠습니다. 노마드 코더님의 인스타그램 클론코딩 강의에서는 GraphQL 서버를 만들기 위해서 graphql-yoga 모듈을 사용했습니다. graphql-yoga는 Node.js에서 GraphQL 서버를 쉽게 설정할 수 있도록 도와주는 Node.js 모듈입니다. 하지만 graphql-yoga 모듈은 항상 동작하고 있는 서버에서만 사용할 수 있습니다. 평소에는 유휴(Cold) 상태로 있다가 사용자 요청이 입력되면 활성화(Warm)되는 AWS 람다 서버에서는 작동하지 않습니다. AWS 람다 서버에서 Gr..
서버리스 프레임워크 초기화 및 AWS에 연결 Amplify CLI와 같이 서버리스 프레임워크도 CLI를 통해 AWS 서비스에 배포되는 프로그램이기 때문에, AWS IAM에서 사용자로 인증되어야 코드를 배포할 수 있습니다. 1. 서버리스 프레임워크 설치 yarn global add serverless 2. IAM 사용자 생성 AWS IAM > 엑세스 관리 > 사용자 > 사용자 추가 프로그래밍 방식 엑세스 체크 Amplify 초기화와 마찬가지로 Access key id와 Secret Access key가 발급됩니다. 한 번만 확인할 수 있으니 잘 저장해 둡시다. 3. 권한 설정 4. 서버리스와 AWS 연결 아래 명령어를 입력하여 serverless CLI에게 Access key id와 Secret Access key를 전달해 줍니다. 는 빼고 입력해야..
서버리스 프레임워크란? 서버리스 프레임워크란? AWS 람다와 Azure 함수 서비스와 같은 서버리스 서비스에 코드를 쉽게 배포해 주는 프레임워크입니다. 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 왜 사용하나요? 람다의 경우 인라인 편집기를 사용하지 않으면, 변경사항이 있을 때마다 프로젝트를 압축해서 계속 올려주어야 하는데 상당히 번거롭습니다. 서버리스를 사용하면 아래 명령어로 생성된 프로젝트를 압축 > S3에 업로드 > L..