포스팅에서 다룰 주제는 간단하게 'hello, [닉네임]' 을 출력하는 API를 작성하기입니다.
살펴보기
이번에는 지난번과 달리 sls create 명령어로 프로젝트를 생성해볼게요. aws-nodejs 템플릿을 hello-api-js라는 프로젝트명을 지정합니다. 이 프로젝트는 --path 에 적힌 디렉터리에 다운로드됩니다. 대화형으로 프로젝트를 만들 때와는 다른 점이 몇 가지 있습니다. 일단 README.md 파일이 없네요.
serverless.yml 파일을 살펴보면 기본 스펙 외에도 주석처리로 다양한 내용이 적혀있습니다. 이를 참고해서 서버리스 스택을 생성할 때 참고하시면 됩니다.
handler.js는 내용에 변화가 없어 보이네요.
serverless.yml 수정
일단 serverless.yml 파일부터 수정해야 합니다. Lambda 함수는 HTTP 이벤트를 포함해서 다양한 이벤트를 실행할 수 있습니다. 그러나 serverless.yml 파일을 보면 events가 주석처리가 되어있을 거예요. 그러면 이벤트가 연결이 안 되어있는 상태라서 반응을 하지 않습니다. 주석을 지워서 httpApi를 받도록 설정해 줍시다. GET /hello 요청에 반응하도록 path를 수정해 줬어요. 이제 handler.hello 함수를 GET /hello의 HTTP 요청을 통해 실행할 수 있습니다.
상단의 provider 부분에서 region을 서울 지역으로 변경해 주세요. 디폴트 값인 us-east-1에 배포가 된다면 아무래도 시간이 오래 걸리기 때문에 직접 지정해주는 편이 좋습니다.
handler.js 수정
이제는 handler.js를 수정해줄 차례입니다. 현재는 hello에 들어오면 무조건 200 상태와 Go Serverless... 메시지를 출력해주고 있습니다.
'use strict';
module.exports.hello = async (event) => {
if(!event.queryStringParameters || !event.queryStringParameters.name){
return {
statusCode:404,
body: `not found`
};
}
return{
statusCode:200,
body:`hello ${event.queryStringParameters.name}!`
};
// Use this code if you don't use the http event with the LAMBDA-PROXY integration
// return { message: 'Go Serverless v1.0! Your function executed successfully!', event };
};
/hello?name=zzz 이런 방식으로 쿼리 파라미터로 name을 받아서 출력을 해줄 예정입니다. 쿼리 파라미터는 event.queryStringParameters 에서 가져올 수 있습니다. event.queryStringParameters.[queryName] 을 통해서 실질적인 입력값을 받아올 수 있죠. event.queryStringParameters 가 없는 경우 undefined가 되므로 예외처리를 미리 해주는 게 좋습니다.
`hello ${event.queryStringParameters.name}!`
위와 같은 코드로 문자열과 변수를 같이 섞어서 출력할 수 있습니다. 일반 따옴표가 아니라 백틱임에 주의해 주세요.
테스트
sls deploy
배포를 해줍시다.
$ sls deploy
Deploying hello-api-js to stage dev (ap-northeast-2)
✔ Service deployed to stack hello-api-js-dev (126s)
endpoint: GET - https://APIID.execute-api.ap-northeast-2.amazonaws.com/hello
functions:
hello: hello-api-js-dev-hello (393 B)
Monitor all your API routes with Serverless Console: run "serverless --console"
배포를 하게 되면 endpoint 주소가 나옵니다. 우리는 이 주소에 HTTP 요청을 해서 handler.hello 함수를 호출할 겁니다.
curl 명령어를 통해서 GET 요청을 수행해 보세요. 그럼 저희가 원한 문자열이 출력됨을 알 수 있습니다.
팁
만약 hello 함수에만 수정사항이 생겼다면 프로젝트 전체 빌드가 아니라 Lambda 함수만 갱신하므로 훨씬 빠르게 작업이 완료된다고 합니다.
sls deploy funchtion -f hello
'AWS lambda' 카테고리의 다른 글
AWS Lambda with Typescript 템플릿 생성하기 (0) | 2023.03.09 |
---|---|
AWS lambda 시작하기 aws 기본 예제 실행 (feat. Node.js) (0) | 2023.01.01 |
AWS CLI 설치 및 설정하기 (0) | 2022.12.28 |
서버리스 컴퓨팅이란? (0) | 2022.12.27 |
AWS 프리티어 계정을 만들면 바로 해야될 설정(기본 리전 설정, 액세스 키 발급) (0) | 2022.12.23 |