AWS Lambda 는 개뿔.. 하나도 모르겠다고!
이 글은 AWS, Node.js, js 등을 모르는 상태에서 @justinchronicle 님의 AWS Lambda를 이용해서 GitHub과 Slack 연동하기 를 기반으로 시작된 삽질을 정리한 글이다.
1. Lambda > New function
1.1. Select blueprint
뭐가 뭔지 모르기 때문에 그냥 Skip
을 선택한다.
1.2. Select blueprint
1. Runtime 은 Node.js 4.3
으로 설정한다.
2. Lambda function code 에서는 Edit code inline
을 선택하고 아래의 코드를 작성한다.
3. 작성한 코드의 Handler 가 myHandler
이므로 Lambda function handler and role 의 Handler 를 index.myHandler
로 수정한다.
The module-name.export value in your function. For example, “index.handler” would call exports.handler in index.js.
4. Lambda function handler and role 의 Role 는 lambda_basic_execution
로 설정한다.
1.3. Review
Create function
선택
1.4. Test
화면 상단의 Test
또는 Save and test
를 선택하면 된다. (cmd + s, cmd + b 등의 단축키도 동작한다.)
첫 테스트 시 설정한 handler 의 event
값은 Actions – Configure test event 에서 수정할 수 있다.
2. 코드 작성 및 로컬 테스트
2.1. Sublime Text
Sublime Text 에서 Node.js 를 사용하기 위해서는 Package Control 을 이용하여 Nodejs 를 설치해야 한다.
만약 빌드 결과 화면에서 한글이 정상적으로 표시되지 않는다면 다음과 같이 빌드 설정을 변경해야 한다.
1. Package Control 를 이용하여 PackageResourceViewer 를 설치한다.
2. Command Palette (cmd + shift + p) 에서 PackageResourceViewer: Open Resource – Nodejs – Nodejs.sublime-build 를 선택한다.
3. encoding 을 utf8 로 변경한다.
2.2. 빌드
위에서 작성했던 기본 코드는 다음과 같은 형태로 로컬에서 빌드할 수 있다. (cmd + b)
2.3. npm
로컬에 npm 을 설치하고 이를 zip 으로 압축해서 업로드하는 형태로 npm 을 사용할 수 있다. (Creating a Deployment Package (Node.js))
매번 선택해서 압축하기 귀찮으니 자동 배포까지는 아니더라도 다음과 같이 스크립트를 이용하는 방법도 고려해볼 만하다.
3. AWS API Gateway
3.1. 생성
- Create Resource
- Create Method
- DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT
3.2. 배포
- API – Resources – Actions – Deploy API
- Invoke URL
- 배포 이후, API – Stage 에서 확인할 수 있다.
3.3. 삭제
- API – Resources – Actions – Delete API
결론은 나 같이 아무것도 모르는 사람이 쓰기에는 Lambda 만한 것이 없는 것 같다. 라지만.. 사용 요금에 대해서 전혀 감이 오지 않는다는 것은 큰 문제인 것 같다. (Lambda 는 API Gateway, CloudWatch, S3 와 맞물려서 돌아가니 요금을 신경쓰지 않을 수가 있나..)
덧.
삽질 과정에서 숟가락을 포크레인으로 바꿔준 @haruair 님에게 감사!