본문 바로가기
  • 클라우드야 나랑 친해지자!
클라우드/AWS

API 게이트웨이와 데이터베이스(GET)

by 정민규 2021. 2. 17.
반응형

수업을 듣고 배운 내용과 연습한 내용을 정리하였습니다

개인 공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.

 

잘못된 부분이 있거나 질문사항은 댓글로 남겨주시면 성심성의껏 답변해드리겠습니다. 감사합니다!


 

교재 <당신이 지금 알아야 할 AWS - 이영호, 한동수 지음>를 토대로 실습을 진행하였습니다.

 

 

 

* 실습 요약

1. API 게이트웨이용 람다 함수 생성

  A. 람다 함수 생성(람다 함수 이름 : lambda_for_apigateway_get)

  B. 람다 함수 실행 역할 생성(람다 역할 이름 : role_for_apigateway_get)

2. API 게이트웨이용 람다 이벤트 구성

3. 다이나모 DB서비스 실행 권한을 위한 IAM 정책 설정

  A. 정책 생성 및 검토(정책 이름 policy_다이나모 DB_crud)

  B. 역할 생성(역할 이름 : role_for_apigateway_get)

4. 다이나모 DB 생성

5. 람다 함수 수정

6. API 게이트웨이 테스트 및 다이나모 DB GET 확인

 

 

 

 

 

1) API 게이트웨이용 람다 함수 생성

Lambda > 함수 생성 > 함수 이름 : lambda_for_apigateway_get > 런타임 : Node.js 14.x > AWS 정책 템플릿에서 새 역할 생성 > 역할 이름 : role_for_apigateway_get > 정책 템플릿 : 기본 Lambda@Edge 권한 > 함수 생성

 

 

 

 

 

2) API 게이트웨이 연결

트리거 추가 > API 생성 > HTTP API > 보안 : 열기 > 추가

 

보안 - 열기 : 별도의 인증 없이 누구나 요청을 보낼 수 있습니다.

 

 

 

 

 

API엔드포인트라는 항목과 URL이 나타나는데, API 엔드포인트란 HTTP 통신을 통해 람다 함수를 실행시킬 때 접속해야 하는 주소입니다. 주소를 클릭합니다.

 

 

 

람다에서 전달해준 데이터를, API 게이트웨이를 통해 HTTP 프로토콜 GET 방식의 데이터("Hello from Lambda")로 전달받았습니다.

 

 

 

 

함수코드의 에디터에서 "hello from lambda" 부분을 event.queryStringParameters로 변경합니다.

단, "" 을 포함하지 않고 event.queryStringParameters 텍스트만 넣어야 합니다.

Deploy 버튼을 클릭하고 다시 한 번 API 엔드포인트 URL 로 접속합니다.

 

 

 

아래와 같이 아무것도 내용이 뜨지 않으면 혹은 null 이 뜨면 성공입니다.

 

 

이번에는 파라미터로 인자를 전달해보겠습니다. GET 데이터는 인자를 전달할 대 물음표와 함께 Key=value 형태로 데이터를 전달합니다. 브라우저 주소창 끝에 '?text=hello'를 추가합니다.

 

추가적인 데이터를 더 전달하고 싶다면 '&' 특수 문자로 데이터를 전달할 수 있습니다.

 

 

 

 

3) 정책 생성

이제, 직접 람다 함수에서 데이터를 받아 다이나모 DB에 저장해보도록 하겠습니다.

권한 > 역할 이름 클릭 > IAM 메뉴로 새 탭이 열림

 

 

정책 연결 > 정책 생성 > 서비스 : DynamoDB > 수동 작업 : 모든 > 리소스 : 모든 리소스 > 다음 > 태그(무시) > 다음 > 이름 : policy_dynamodb_crud > 정책 생성

 

 

 

역할 > role_for_apigateway_get 클릭 > 정책 연결 > policy_dynamodb_crud 체크 > 정책 연결

 

 role_for_apigateway 역할에 policy_dynamodb_crud 정책이 성공적으로 연결되었습니다.

이제 람다 함수가 DynamoDB에 접근할 수 있습니다.

 

 

 

 

 

 

4) DynamoDB 생성

DynamoDB > 테이블 만들기 > 테이블 이름 : dynamo_apigateway_query > 기본 키 : id (문자열) > 기본 설정 사용 > 생성

 

 

 

 

 

 

5) 람다 함수 수정

lambda_for_apigateway_get 함수의 소스코드를 수정합니다.

소스코드는 'queryStringParameter'를 인자로 받아 DynamoDB에 저장하고 GET 데이터나 ID 값이 없다면 400, 저장하는데 문제가 있다면 500, 성공적으로 데이터를 넣었다면 200코드를 반환하는 소스코드입니다.

dynamo.txt
0.00MB

 

 

 

 

 

6) API 게이트웨이 테스트 및 DynamoDB GET 확인

API 엔드포인트 URL 주소로 접속했을 때, 아래와 같이 "id가 없습니다" 라는 텍스트가 뜨면 성공입니다.

 

 

URI 끝에 '?id=72'와 같은 GET 데이터를 입력해보겠습니다.

데이터가 성공적으로 입력된 결과를 확인할 수 있습니다.

ID 키 값만이 아니라, 다양한 파라미터를 통해 DynamoDB에 데이터를 전달할 수 있습니다.

 

DynamoDB로 이동하여 이전에 만들어 둔 dynamo_apigateway_query 테이블을 클릭합니다.

테이블의 "항목"을 클릭하면 방금 입력한 데이터가 정상적으로 삽입된 것을 확인할 수 있습니다.

 

 

 

 

"?id=mingyu&password=1234" 라는 GET데이터를 입력해 데이터를 추가해봤습니다.

 

 

 

 

 

지금까지 브라우저를 통해 API 게이트웨이로 GET 데이터를 전달하고 람다 함수에서 데이터를 받아 DynamoDB에 저장해봤습니다. 다음 포스팅은 POST 방식을 사용한 실습을 진행해보도록 하겠습니다.

 

 

 

반응형

댓글