본문 바로가기

기록/Web

[AWS] Lambda와 API Gateway를 연결하여 쿼리 실행

SMALL


https://sillutt.tistory.com/entry/AWS-lambda와-DynamoDB-연결하여-쿼리-실행

 

[AWS] lambda와 DynamoDB 연결하여 쿼리 실행

https://sillutt.tistory.com/entry/Android%EC%97%90%EC%84%9C-Amazon-Dynamo-DB-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0 Android에서 Amazon Dynamo DB 사용하기 1. 테이블 만들기 테이블 이름과 기본 키 컬럼을..

sillutt.tistory.com

위 링크에서 lambda - DynamoDB 를 연결하여 쿼리를 실행하는 작업을 진행했다.

다음 진행은 lambda와 API Gateway를 연결하여 웹으로 lambda 함수를 조작하여 최종적으로 DynamoDB에 접근하는것을 목적으로 한다.

 

위에서 진행한 내용에서 몇가지 변경해줄 부분이 있다.

이 내용에 대한 가이드는 

https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/apigateway-getting-started-with-rest-apis.html#apigateway-getting-started-rest-step-5

 

Amazon API Gateway에서 Lambda 통합을 사용하여 REST API 생성 - Amazon API Gateway

Amazon API Gateway에서 Lambda 통합을 사용하여 REST API 생성 이 연습을 사용하여 Amazon API Gateway에서 Lambda 프록시 통합 및 Lambda 비프록시 통합으로 REST API를 생성 및 배포할 수 있습니다. Lambda 통합에서

docs.aws.amazon.com

AWS에서 제공하는 개발자 문서에서 더 자세하게 소개하고 있다.

 

1. API Gateway 설정 변경

gateway의 리소스에서 통합 요청을 클릭한다.

 

매핑 템플릿을 선택하고 패스스루에서 Content-Type에서 application/json을 입력하여 추가한다.

 

이어서 나오는 템플릿에서 이전 lambda에서 작성해준 테스트 이벤트를 약간 변형하여 작성한다.

변경한 부분은 파라미터로 넘겨줄 ExpressionAttributeValues 이다.

( 프로젝트에 따라 다르지만 나는 이부분만 파라미터로 이용할 것이다.)

 

{
  "operation": "operation",
  "type": "GET",
  "body": {
    "TableName": "Confusion",
    "FilterExpression": "contains (#names, :atValue)",
    "ExpressionAttributeNames": {
      "#names": "confusion_name"
    },
    "ExpressionAttributeValues": {
      ":atValue": {
        "S": "$input.params('atValue')"
      }
    }
  }
}

 

원래는 "S": "s" 였지만 s의 값을 바꿔서 전달하기 위해 이 부분을 정규식에 해당하는

"input.params('atValue')"로 변경해주었다.

 

 

작성 완료 후 저장을 누르고 작업 - API 배포를 눌러 gateway 설정을 스테이지로 배포한다.

 

설정을 완료했다면 cmd를 실행하고 해당 메소드의 url에 파라미터를 포함하여 실행하도록 한다.

실행하는 명령문은 

curl -X GET "[메소드명 포함 url]?atValue:s 형식으로 실행하면 결과가 반환된다.

 

현재 DB에는 snack이라는 데이터가 저장되어있고, 이를 결과로 보기위해 s와 z를 파라미터로 넘겨 테스트를 한 결과이다.

s를 파라미터로 넘겨주었을때는 snack이 결과로 반환되었다.

z를 파라미터로 넘겨주었을때는 snack이 결과로 반환되지 않았다. (z를 포함하는 다른 데이터가 있다면 반환될 것이다.)

 

 

SMALL