API Gateway와 서버리스 애플리케이션 실습

이준석·2023년 2월 2일

Bare Minimum Requirement

  • 다음 아키텍처로 구성된 서버리스 애플리케이션을 배포합니다.
    • API Gateway - Lambda - DynamoDB
  • 직접 API Gateway로 실행해봅니다.
  • API Gateway의 인증 기능을 이용해서, HTTP 요청에 특정 - API Key를 사용하는 예제를 다음 두가지 방법으로 구현합니다.
    • API Key
    • 권한 부여자
  • CloudWatch Logs를 통해서 API 호출을 모니터링할 수 있어야 합니다.

Getting Started

Step 1: API Gateway - Lambda 배포 Instruction

  1. 먼저 lambda 함수와 API Gateway 셋팅을 한꺼번에 할 수 있게 SAM을 이용한다.
    https://serverlessland.com/patterns/lambda-dynamodb

  2. 현재 람다가 런타임 nodejs 14.x을 지원하므로 template.yaml 파일에서 Runtime 부분을 찾아 다음과 같이 바꾼다.

- Runtime: nodejs12.x
+ Runtime: nodejs14.x
  1. 사용자 컴퓨터에 node.js 런타임을 설치한다.
  2. sam build를 통해 빌드가 되는지 확인해본다.
  3. sam deploy --guided 를 통해 배포를 시도한다.
  4. 람다 및 DynamoDB에 어떤 리소스가 생성이 되었는지 직접 콘솔에 들어가서 확인해보게 한다.
  5. 잘 작동되는지 명령어를 통해 확인한다.
aws lambda invoke --function-name {Lambda함수의Arn를입력} --invocation-type Event  --payload '{ "Metadata": "Hello" }'  response.json --cli-binary-format raw-in-base64-out

트러블 슈팅 발생


STEP 2: API 게이트웨이 - Lambda

  1. 트리거 추가 버튼을 누른다.
  2. 추가 트리거에서 다음 옵션을 통해 API 게이트웨이를 생성한다.
    • API 게이트웨이를 선택
    • 새 API를 생성
    • REST API 유형
    • 보안은 "열기"
  3. 이제 API 엔드포인트에 HTTP 요청을 보내면, 함수를 호출할 수 있다. 요청의 상세 내용이 DynamoDB에 저장된다.


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

POST 전용으로만 작동하게 만들기

레퍼런스
먼저 API gateway의 리소스에서 메서드 생성을 진행하고 POST 선택 후 생성을 진행한다.
생성이 완료되었으면 POST 를 클릭하고 다음과 같이 설정해준다.

본문만 저장하도록 만들기

API 키를 이용한 인증 추가하기

먼저 POST의 메서드 요청에 들어가서 API 키 필요 에 대한 설정을 true로 바꿔준다.

그 다음 API 키를 생성해준다.

API key 생성이 완료되면 해당 key에 대한 사용량 계획을 추가해준다.

생성한 API를 default 스테이지에 배포한다.

Postman을 이용해 POST 요청을 보내본다.

트러블 슈팅 발생

해결 후,
먼저 일부러 key 값을 넣지 않으면 아래와 같은 결과가 나온다.

key 값을 넣으면 아래와 같은 결과가 정상적으로 나온다.

권한 부여자를 이용한 인증 부여하기 (optional)

0개의 댓글