AWS

AWS Cognito로 사용자 인증이 가능한 서버리스 웹 어플리케이션 구축 (4) API Gateway로 RESTful API 배포

Joon0464 2021. 7. 6. 15:24

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

https://cumulus.tistory.com/16

2편: AWS Cognito 구축

https://cumulus.tistory.com/19

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

https://cumulus.tistory.com/20

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

API Gateway

- Amazon API Gateway를 생성하여 Lambda 함수를 RESTful API로 공개한다.

- 퍼블릭에서 엑세스 가능한 API이다.

- API는 Amazon Cognito userPool을 사용하여 보호된다. 즉 로그인한 사용자만 특정 API를 호출하여 기능을 사용할 수 있다는 뜻이다.

 

구축 방법

4.API Gateway로 RESTful API 배포

4.1 REST API 구축

API Gateway 콘솔에서 REST API 구축을 클릭한다.
프로토콜은 REST를 선택하고 API 이름과 앤드포인트 유형을 위와 같이 설정하고 API를 생성한다.

4.2 Cognito 사용자 풀 권한  부여자 생성

권한 부여자는 Amazon Cognito 사용자 풀을 사용하여 API에 대한 액세스를 제어하기 위해 생성한다.

생성한 API Gateway에서 권한 부여자 생성을 클릭한다.
권한 부여자 이름을 지정하고 직접 생성한 Cognito 사용자 풀을 지정한다. 토큰 원본에 Authorization을 입력하고 권한 부여자를 생성한다.

 

작동중인 웹에 접속하여 로그인을 다시 시도한다.
로그인하게 되면 팝업창에 인증 토큰 값이 출력되는데 이 값을 복사한다.
생성한 권한 부여자의 테스트 버튼을 클릭한다.
위에서 복사한 토큰 값을 넣고 테스트를 눌러본다.
응답 코드 200이 출력되면 정상적으로 테스트된 것이다. 토큰 값에서 사용자의 정보가 들어있는 것을 알 수 있다.

4.3 리소스 및 메서드 생성

생성한 REST API에서 리소스를 생성한다.
리소스의 이름을 지정하고 API Gateway CORS 활성화를 체크하고 리소스를 생성한다.

CORS: 서로 다른 도메인의 사이의 데이터 전송을 허용해주는 웹브라우저의 기술이자 표준이다.

생성한 리소스에 메서드를 생성한다.
POST 메서드를 선택한다.
위와 같이 설정하고 저장을 누른다.

Lambda 프록시 통합 생성: 핸들러 함수의 'event'에 들어있는 세부 정보를 요청과 함께 Lambda로 프록시하도록 설정

확인을 누르면 POST 메서드가 생성된다.
POST 메서드의 메서드 요청을 클릭한다.
승인에서 어플리케이션을 선택한다.

4.4 API 배포

생성한 POST 메서드를 선택하고 API 배포를 클릭한다.
스테이지 이름을 설정하고 배포를 클릭한다.
API 배포후에 출력되는 URL를 복사한다.

4.5 웹사이트 구성 파일 업데이트

config.js의 invokeUrl에 복사한 URL값을 넣어준다.
다시 커밋을 진행하고 리포지토리에 업로드한다.

4.6 최종 테스트

생성한 웹페이지에 로그인 한후 ride.html 경로로 이동하여 Set Pickup 버튼을 클릭하고 지도에 원하는 위치를 클릭하면 Unicorn이 호출된다.

 

출처

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