이번 포스팅에서는 아래의 구조도를 한번 완성해보자.






우리는 이미 람다펑션과 디비 연동은 마친 상태. 이 람다펑션을 API Gateway와 연동하고, 실제 외부 서버에서 호출해볼 것이다.





API Gateway로 가서, 생성




API 이름 작성 및 생성


생성된 API에 Resource추가





리소스 이름 임의로 정하고




리소스에서 메소드 생성



여기서는 RESTful API의 POST 메소드 생성



POST 메소드 생성과 함께, Lambda Function타입, 람다펑션의 위치 및 선택




OK



만들어진 POST Method에 대해 "Enable CORS" 수행






수행수행




예! 수행!





만들어진 POST Method에서 Integration Request 클릭



아래에서 Body Mapping Templates을 열고, 2번 째 "When there are no templates defined(recoomended)" 클릭 후 "Add mapping template"








"application/json" 입력 후 아래에 생성된 코드 작성란에 그림과 같이 작성.





API세팅은 끝났고, 실제 Deploy하기 전에 테스트 해보자





우리는 람다펑션을 만들때 이미 body 안에 데이터를 넣었었음.(큰 그림)

POST 프로토콜은 body안에 데이터를 넣는 형식. 따라서 그냥 데이터만 넣어서 보내면 람다 펑션 수정 없이 가능!


잘 됨.




디비도 확인, 잘 들어감.



실제 서비스를 위해 API를 Deploy함.


단, 현재 API는 URL에 아무나 접근 가능한 상태, 

보안을 원한다면 Method 단계에서 Integration Request의 이전 박스인 Method Request에서 API key등과 같은 

일반적인 보안 방법을 추가할 수 있음.


여기서는 안 함. 귀찮으니까!




[New Stage] 선택 후 마음대로 작성.





Stage URL말고, 실제 호출할 Lambda Resource URL에 쏴야함. Resource 클릭 후 보이는 URL로 쏘기!



위 URL을 참고로해 POST형식 쿼리 전송 외부 서버에서 코드 작성

application/json Content-type을 가지는 POST형식으로 URL에 쏘기만하면 됨.

이번에는 python code로 작성해봐야짓!

(언어는 아무렇게나 상관없음.)



실제 소스 코드 실행 후 리턴된 값. 외부 서버에서 구현한 AWS 서비스들을 연동함.




완성!






사실 람다펑션의 강점 중 하나는 어느 서비스든 쉽게 호출할 수 있다는 점.

여러 서비스를 조합해도 되고 여러 람다 펑션을 통해 독립적으로 조작해도 됨.

가령 EC2 인스턴트를 중지하거나 키는 것도 가능.


다음 포스팅은 아마존에서 가장 최근에 나온 보이스 서비스

Alexa에 대해 진행하도록함.



먼저 마이크와 스피커가 달린 디바이스(라즈베리파이, 노트북 등)을 하나의 Alexa echo와 같이 만드는 포스팅을 진행함.

다음은 실제로 Lambda Function과  Alexa Skill Kit을 이용해 알렉사 서비스를 만듬.


대략적으로 포스팅할 다음 Alexa 프로젝트의 순서는...

1. 알렉사 에코 기기를 자체를 디바이스를 통해 만들기.

2. Alexa Skill Kit을 만들어 Lambda Function과 연동.

3. Open API를 Lambda에 추가, 연동

4. DynamoDB를 Lambda에 추가, 연동


전체 시나리오:

1.  "alexa, How is the weather today in Pusan, South Korea" 기기에 보이스로 입력

2. 기기에서 Open API에서 받아 온 값 보이스로 응답

3. 내부적으로는 날씨 정보 DB에 저장





'AWS' 카테고리의 다른 글

[Lambda + DynamoDB] Write DynamoDB using Lambda  (0) 2017.04.12
[Lambda + DynamoDB] Read DynamoDB using Lambda  (0) 2017.04.10
[Lambda] AWS Lambda + DynamoDB 알맹이 채우기  (0) 2017.04.10
[IAM] Role  (0) 2017.04.10
[IAM] Policy  (0) 2017.04.10

+ Recent posts