본문 바로가기
마이크로서비스 작성

Devops Day 45 (5.9) 마이크로서비스 작성_Sprint API Gateway와 서버리스 애플리케이션

by Jackykim 2023. 5. 10.

Bare Minimum Requirement :

·         다음 아키텍처로 구성된 서버리스 애플리케이션을 배포합니다.

o    API Gateway - Lambda - DynamoDB

·         직접 API Gateway로 실행해 봅니다.

·         API Gateway의 인증 기능을 이용해서, HTTP 요청에 특정 API Key를 사용하는 예제를 다음 두 가지 방법으로 구현합니다.

1.     API Key

2.     권한 부여자

·         CloudWatch Logs를 통해서 API 호출을 모니터링할 수 있어야 합니다.


Step 1 : API Gateway - Lambda
배포 Instruction

1. Lambda 함수와 API gateway 세팅 위한 SAM 작성
-
https://serverlessland.com/patterns/lambda-dynamodb
2. Runtime nodejs.12 -> 14
로 수정
3. Sam build + sam deploy –guided 통해 배포

Error: Unable to upload artifact LambdaPutDynamoDB referenced by CodeUri parameter of LambdaPutDynamoDB resource.

Parameter CodeUri of resource LambdaPutDynamoDB refers to a file or folder that does not exist /home/novaskies/dynamodb/.aws-sam/build/LambdaPutDynamoDB

해결 방법 : 처음 template build및 설치했을 때 CodeUri는 /src로 설정되어 파일들을 찾을 수 없어 데렉토리 설정하니깐 이상없이 deploy 완료

4. Ubuntu AWS CLI 사용하면서 Lambda 함수가 잘 작동 되는지 확인 합니다.

Step 2 : API 게이트웨이 – Lambda

1. Lambda 함수에 트리거 추가 합니다.
- API Gateway 선택
- 새 API 선택 후 REST API 선택
- 보안은 “열기”로 설정

2. API 엔드포인트에 HTTP 요청을 보내면, 함수를 호출할 수 있다. 요청의 상세 내용이 DynamoDB에 저장된다.

STEP 3: API 게이트웨이에 제한 추가하기

하단 내용은 실습 해보기 :
- POST 전용으로만 작동하게 만들기
- 본문만 저장하도록 만들기
- API 키를 이용한 인증 추가하기
- 권한 부여자를 이용한 인증 부여하기 (optional)

 

1. AWS API Gateway 들어가 스테이지 선택한후에 “내보내기”로 들어가 원하는 파일 선택

 

2. 예시 API (Pet Store) 받아와 GET 메서드 테스트 할 경우 하단과 같이 나옵니다.

참고 : API Gateway에 API key 추가 할 경우 API 엔드포인트 접속하면 “Message : Forbidden” 이 나옵니다.

 

3. Post Method 및 요청 본문에 특별한 Request을 통해 필요한 내용 / 원하는 내용을 받을 수 있습니다.

4. POST 내용만 배포할 경우 작업 버튼 선택 후 “새 스테이지” API 배포 내용 기입 후 배포
 - API Gateway에 스테이지가 새로 생겼으며 URL 호출 들어가면 Pet store API 페이지가 나옵니다.
 - GET REUEST 링크 선택하면 POST 내용만 나오는 페이지로 갑니다
.

Pet store API ref : https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-from-example.html