https://sillutt.tistory.com/entry/AWS-lambda와-DynamoDB-연결하여-쿼리-실행
위 링크에서 lambda - DynamoDB 를 연결하여 쿼리를 실행하는 작업을 진행했다.
다음 진행은 lambda와 API Gateway를 연결하여 웹으로 lambda 함수를 조작하여 최종적으로 DynamoDB에 접근하는것을 목적으로 한다.
위에서 진행한 내용에서 몇가지 변경해줄 부분이 있다.
이 내용에 대한 가이드는
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를 포함하는 다른 데이터가 있다면 반환될 것이다.)
'기록 > Web' 카테고리의 다른 글
[Spring] [xX][mM][lL]"과 일치하는 처리 명령 대상은 허용되지 않습니다. (0) | 2021.04.06 |
---|---|
[IntelliJ] Github 연동 (0) | 2021.03.24 |
[AWS] lambda와 DynamoDB 연결하여 쿼리 실행 (0) | 2020.12.27 |
[PHP] PHP와 MySQL 연동 (0) | 2020.11.13 |
[XAMPP] xampp 설정 (0) | 2020.11.13 |