AWS - API Gateway for Lambda

Jaeminst·2022년 4월 15일
0
post-thumbnail

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

DynamoDB에 레코드를 추가하는 간단한 람다 함수를 하나 만들고, API Gateway를 통해 이를 호출하는 예제를 직접 실행해봅니다.

람다 함수의 역할은 다음과 같습니다.

  • 함수에 JSON 형식의 payload를 싣고 실행하면 DynamoDB에 해당 payload가 저장

요구 사항

  • API Gateway로 POST요청을 보내면 Lambda 함수를 통해 DynamoDB에 요청받은 Body를 테이블에 삽입합니다.
  • API Gateway의 인증 기능을 이용하여, HTTP 요청에 API Key와 권한 부여자를 사용하는 두 가지 방법으로 구현합니다.
  • CloudWatch Logs를 통해서 API 호출을 모니터링할 수 있습니다.

Getting Started

Step 1

Lambdb 배포 Instruction

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

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

  3. sam build를 하고 sam deploy --guided를 통해 배포를 한다.
    롤백을 할 수 있도록 disable_rollback은 false를 선택한다.

  4. 람다에 invoke 명령을 통해 작동을 확인한다.

aws lambda invoke --function-name <Lambda함수Arn> --invocation-type Event \
--payload '{ "Metadata": "Hello" }' \ response.json --cli-binary-format raw-in-base64-out
  1. 202 status가 도착하고, DynamoDB의 테이블에 값이 저장되어 있으면 성공.

Step 2

Lambda 트리거에 API 게이트웨이 연결

  1. 람다 함수에서 방금 생성한 함수를 선택하여 들어간다.
  2. 트리거 추가에서 API Gateway를 선택한다.
  3. API 생성을 선택하여 REST API를 생성하고 보안은 열기 구성하고 추가버튼을 누른다.
  4. 이제 API Endpoint를 통하여 HTTP 요청을 보낼 수 있다.

Step 3

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

  1. POST 전용으로 메소드를 제한 한다.

  2. 메서드 생성을 누르고 POST를 선택한다.

  3. 메서드 요청에서 API 키가 필요함을 true로 변경한다.

  4. API 키에서 생성을하고 사용량 계획을 생성한다.




  5. 권한 부여 승인용 리소스와 메서드를 생성한다.

  6. 권한 부여자를 공식 문서를 참조하여 생성한다.

  7. 메서드 요청에서 승인에 권한 부여자를 선택한다.

Test

POSTMAN을 이용하여 API Gateway Endpoint로 API Key와 권한부여자를 각각 POST 요청 보낸다.

  1. API Key
  1. Authorization

Authorization

권한부여자를 사용하여 다른 플랫폼의 아이디 로그인을 통해 권한을 사용하여 요청하는 방식으로 구성할 수 있다.

profile
DevOps !

0개의 댓글