[LAMBDA]API Gateway & DynamoDB

박민하·2022년 7월 25일
0

AWS

목록 보기
4/11
post-thumbnail

[자습서: API Gateway에서 Lambda 사용]를 기반으로 작성한 내용

  DynamoDB와 REST API 생성하여, DynamoDB에 데이터를 생성/수정 해보자.

✅ lambda 함수 생성

  AWS lambda로 가서 함수를 만든다. 함수 생성을 누르고, 함수 이름은 LambdaFunctionOverHttps 로 하고 런타임은 Python 3.9 로 지정했다. 함수가 만들어지면 아래 코드를 붙여넣고 핸들러는 LambdaFunctionOverHttps.handler로 수정한다.

from __future__ import print_function

import boto3
import json

print('Loading function')


def handler(event, context):
    '''Provide an event that contains the following keys:

      - operation: one of the operations in the operations dict below
      - tableName: required for operations that interact with DynamoDB
      - payload: a parameter to pass to the operation being performed
    '''
    #print("Received event: " + json.dumps(event, indent=2))

    operation = event['operation']

    if 'tableName' in event:
        dynamo = boto3.resource('dynamodb').Table(event['tableName'])

    operations = {
        'create': lambda x: dynamo.put_item(**x),
        'read': lambda x: dynamo.get_item(**x),
        'update': lambda x: dynamo.update_item(**x),
        'delete': lambda x: dynamo.delete_item(**x),
        'list': lambda x: dynamo.scan(**x),
        'echo': lambda x: x,
        'ping': lambda x: 'pong'
    }

    if operation in operations:
        return operations[operation](event.get('payload'))
    else:
        raise ValueError('Unrecognized operation "{}"'.format(operation))
  • boto3 : Python용 AWS SDK(Software Development Kit). Python 애플리케이션, 라이브러리 또는 스크립트를 S3, EC2, DynamoDB 등 AWS 서비스와 통합할 수 있게 한다.

✅ API Gateway

  API Gateway 콘솔을 열어 API 생성 버튼을 누르고 REST API 구축 버튼을 누르면 API 생성 페이지가 나온다. API 이름을 DynamoDBOperations으로 하고, 엔드포인트 유형을 리전(지역)으로 하고 API 생성 버튼을 누르면 완료.

✔ 리소스 생성

  작업 > 리소스 생성 순서로 클릭하면 리소스를 만들 수 있다. DynamoDBManager라는 이름의 리소스를 만든다. 이름을 입력하면 /dynamodbmanager로 자동으로 경로 설정이 된다.

✔ POST 메서드 생성

  작업 > 메서드 생성 > POST 순서로 클릭하면 POST 메서드를 만들 수 있다. ‬Lambda 함수를 선택하고, AWS 리전은 서울로 선택하고(ap-northeast-2), 함수 이름은 아까 만들었던 이름 (LambdaFunctionOverHttps)을 입력하고 저장한다.

✅ DynamoDB 테이블 생성

DynamoDB 콘솔의 테이블 페이지에서 Create table을 선택한다. 테이블 이름은 lambda-apigateway, 파티션 키는 id, 데이터 유형은 문자열로 설정하고 테이블을 만든다.

✅ 테스트

  API Gateway로 돌아가서 test를 클릭한다.

  그리고 아래의 request body에 id1234ABCD이고, number5인 JSON을 붙여넣어보자.

{
  "operation": "create",
  "tableName": "lambda-apigateway",
  "payload": {
    "Item": {
      "id": "1234ABCD",
      "number": 5
    }
  }
}

✅ 결과

profile
backend developer 🐌

0개의 댓글