-
AWS Lambda로 랜덤아재개그 슬랙봇 만들기 2편 | Lambda Function 구성하기Serverless 2018. 12. 15. 11:23
AWS Lambda 함수 생성
람다 함수를 생성합시다
Author from scratch를 선택하여 처음부터 코드를 작성할 수도 있지만
Blueprints에서 도움을 받을 수도 있습니다.
이번에는 Author from scratch를 사용해보겠습니다.
기본적인 정보들을 채워 넣습니다.
Role은 템플릿으로부터 새로운 롤 생성을 선택하고
Simple microservice permissions를 선택해주세요
Api gateway와 연결
람다 함수가 생성되었습니다!
근데 아직 trigger없는 상태입니다. 람다 함수를 호출할 방법이 없다는 뜻입니다.
Api Gateway를 연결해보겠습니다.
왼쪽 Add triggers에서 API Gateway를 선택해주세요
선택하신 후 하단에 몇 가지 설정을 해야하는데요,
Create a new API를 선택하시고
Security는 Open으로 선택해주세요
그리고 ADD버튼을 눌러 추가해주세요!
그러면 수정사항이 있으니까 오른쪽 위 Save버튼이 주황색으로 변합니다.
저장해봅시다
저장하시면 API endpoint가 생성되는 걸 확인하실 수 있을 겁니다.
다시 람다 함수로 돌아가봅니다.
디자이너 가운데 꼭대기에 있는 람다함수 이름을 선택하시면 람다 코드를 수정하는 화면으로 들어가집니다.
첫코드 작성
exports.handler = async (event) => { const buildResponse = (res) => ({ statusCode: 200, body: JSON.stringify(res), }); switch (event.httpMethod) { case 'GET': return buildResponse('Success GET'); case 'POST': return buildResponse('Success POST'); } return { statusCode: 400, body: 'unknown httpMethod', }; };
테스트할 기본 코드를 작성해봅시다.
작성 후 오른쪽 상단의 Save버튼을 꼭 눌러주세요
실행
이제 실행을 시켜보겠습니다
1단계는 Lambda에서 자체 테스트하는 것이고,
2단계로는 Api gateway를 통해서 호출해봅시다.
실행1: Lambda Test
먼저 1단계부터 해봅시다
오른쪽 상단의 Test버튼을 눌러봅시다.
처음하는 Test라서 test event부터 만들라고 팝업이 뜹니다.
뭔가 값들이 굉장히 많죠..?
실제로 API Gateway로 HTTP요청이 들어오면, API Gateway는 저런 형태의 값들을 람다 함수로 보냅니다.
복잡하지만 일단 httpMethod만 확인해보죠. POST입니다.
case 'POST': return buildResponse('Success POST');
아까 위와 같이 코드를 작성했고 httpMethod가 POST니까 응답으로 Success POST가 떨어지겠죠??
확인해봅시다.
test event를 만드시면 원래 화면으로 돌아옵니다.
Test버튼을 한 번 더 클릭하시면 함수가 실행됩니다.
Success POST라는 응답이 잘 나오네요.
실행2: HTTP Call
그럼 API Gateway를 통해서 Http로 요청해봅시다.
아주 간단합니다.
API Gateway 선택하신 후에
endpoint 링크를 클릭하시면 됩니다.
Success GET이라는 응답을 확인하실 수 있습니다.
Next
다음 편에서는 URL에 따라서 다른 동작을 하게 만들어봅시다
'Serverless' 카테고리의 다른 글
AWS Lambda로 랜덤아재개그 슬랙봇 만들기 4편 | Slash Command에 버튼 보여주기 (0) 2018.12.20 AWS Lambda로 랜덤아재개그 슬랙봇 만들기 3편 | Slash Command 설정 (0) 2018.12.20 AWS Lambda로 랜덤아재개그 슬랙봇 만들기 1편 | 기본설정 (0) 2018.12.14 [AWS Re:Invent 2018 정리 (1)] AWS Lambda 로그 개선 (0) 2018.12.04 AWS API Gateway 인증(Authorizers) 활용하기 (0) 2018.11.15 댓글