AWS

사용자 인증이 가능한 서버리스 웹 어플리케이션 구축 (3) AWS Lambda 와 DynamoDB로 서버리스 백엔드 구축

Joon0464 2021. 7. 6. 14:22

1편: AWS Amplify를 활용한 정적 웹 사이트 호스팅

https://cumulus.tistory.com/16

2편: AWS Cognito 구축

https://cumulus.tistory.com/19

사용자 인증이 가능한 서버리스 웹 어플리케이션 구성도

 

구성도에서 AWS Lambda 및 DynamoDB의 역할

1. 사용자가 웹 서버의 기능(unicorn)을 요청하면 API Gateway에 의해 Lambda 함수가 트리거 된다.

2. 함수는 unicorn을 선택하고, DynamoDB 테이블에 요청을 기록한 후 디스패치된 unicorn에 대한 세부 정보를 프론트 엔드 어플리케이션에 반환한다.

 

구축 과정

3. AWS Lambda 와 DynamoDB로 서버리스 백엔드 구축

3.1 DynamoDB 테이블 생성

DynamoDB 메인 콘솔에서 테이블 만들기를 클릭한다.
테이블 이름과 기본키를 설정하고 테이블 설정은 기본 설정을 선택한 뒤 테이블을 생성한다.
생성한 테이블의 개요탭을 확인하면 테이블의 ARN을 확인할 수 있다.

 

3.2 Lambda 함수를 위한 IAM 역할 생성

IAM 콘솔에서 역할 만들기를 클릭한다.
역할을 사용할 개체를 Lambda로 지정한다.
역할에 대한 권한으로 Lambda 실행 역할을 선택한다.
역할 이름을 설정하고 역할을 생성한다.
생성한 역할을 클릭한다.
권한 탭에서 인라인 정책 추가를 선택한다.
서비스 선택을 클릭한다.
서비스는 DynamoDB로 선택하고 작업은 PutItem을 선택한다. 리소스는 특정 리소스를 선택하고 ARN 추가를 클릭하여 이전에 확인했던 DynamoDB 테이블의 ARN을 입력한다.
ARN을 입력하고 추가를 클릭한다.
모든 설정을 마치고 정책 검토를 클릭한다.
정책 검토를 마치고 정책을 생성한다.

 

3.3 요청을 처리하기 위한 Lambda 함수 생성

Lambda 콘솔에서 함수 생성을 클릭한다.
함수 이름을 지정하고 런타임은 Node.js 10.x 버전을 선택한다. 역할은 기존에 생성한 역할을 선택하고 함수를 생성한다.
생성한 함수의 코드를 위와 같이 수정하고 Deploy 해준다.

- 함수 코드 링크 -

https://webapp.serverlessworkshops.io/serverlessbackend/lambda/requestUnicorn.js

- 함수 코드 출처 -

https://aws.amazon.com/ko/getting-started/hands-on/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/module-3/

 

3.4 구현 테스트

테스트 탭에서 테스트 코드를 작성하고 이름을 지정한 뒤 테스트를 진행한다. 결과가 반드시 성공으로 출력되어야 한다.

- 테스트 코드 출처 -

https://aws.amazon.com/ko/getting-started/hands-on/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/module-3/

실행 결과가 201 코드로 출력되어야 정상인 것이다.

출처

https://aws.amazon.com/ko/getting-started/hands-on/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/