티스토리 뷰

aws 람다를 이용하여 개인 프로젝트를 진행하고 있는데,

개발과 운영의 버전을 따로 가져가려고 alias를 주어야 하는 상황이 생겼다.

별거 아닌 이 작업에서 며칠간 엄청난 삽질을 하여 알아낸 것을 정리하고자 한다.

 

(사실 회사 프로젝트에선 이미 많은 능력자 분들이 좋은 환경을 구성해 놓았는데,

개인 프로젝트에서 그것을 좀 흉내내려고 했다...)

 

일단 serverless framework 를 사용하고 있다는 전제하에 글을 작성하겠다.

 

기본적인 serverless 패키지 상에서는 배포 시 alias를 명시할 수가 없다.

deploy 명령어를 통해 배포를 하게 되면 람다들은 $LATEST 라는 버전으로 배포가 될 것이다.

물론 그렇게 배포 하고나서 aws console 에 직접 접속하여 버전별 alias를 부여 할 수 있지만

새로운 버전이 deploy 될 때 마다 특정 alias의 버전도 수동으로 업데이트 해줘야할 것이다.

 

따라서 추가로 패키지 설치가 필요하다. 아래 패키지를 다운로드 받자.

npm i serverless-aws-alias

해당 플러그인이 설치되었으면 serverless.yml 하단부에 해당 플러그인을 명시해준다.

plugins:
  - serverless-aws-alias

이제 아래와 같이 deploy 시에 alias 옵션을 줄 수 있다. (나는 dev 라고 주었다.)

serverless deploy --alias dev

 

그러고 나서 aws console 의 람다 화면으로 가서 배포된 람다의 '구분자' 를 확인해보자.

 

aws console 람다 화면

 

방금 명시한 dev alias 로 배포가 된 것을 확인할 수 있다.

만약 동일한 옵션으로 한번 더 배포하게 되면 dev에는 버전2가 매핑될 것이고,

다른 alias로 배포할 시에, 신규 alias가 버전3 을 가져갈 것이다.

이렇게 되면 cloudwatch 를 활용한 로그 검색 시, 버전별로 확인이 가능해 진다.

 

여기까진 사실 큰 문제 없이 굉장히 간단하다. 그리고 난 이게 끝인줄 알았다...

이 작업 이후 잘만 실행되던 람다가 api gateway를 통해서 호출하면 에러가 났다.

'functionName' failed to satisfy constraint...

function name이 aws의 규칙과 맞지 않는다는 에러인데 도대체 이게 무슨 개소린가 싶었다.

그리고 난 진짜 function name 을 바꿔보는 등 삽질을 하다가 겨우 문제를 알아냈다.

 

람다에 alias를 명시하게 되면 api gateway 의 추가적인 설정이 필요했다.

serverless 배포시 state를 어떻게 명시했느냐에 따라 각자의 stage가 api gateway에 생성되었을 것이다.

(yml 파일에 명시했든, deploy에 --stage 명령어로 주었든)

나같은 경우엔 stage도 alias와 동일하게 dev로 주었기 때문에 api gateway에 dev stage가 생성되어있었다.

 

API Gateway 에서 '스테이지'를 클릭하면 스테이지 목록이 나온다.

 

문제는 dev 라는 스테이지는 자동으로 dev alias의 람다를 호출할 줄 알았더니 그게 아니었던 것이다.

해당 스테이지가 특정 alias 의 람다를 호출할 수 있도록 설정해 주어야 한다.

 

'스테이지 변수' 탭을 눌러서 위와같이 값을 추가해준다.

 

그렇다.. 스테이지 이름과 동일하게 저게 자동으로 넘어가는줄 알았더니 내가 추가해 줬어야 했다. (진짜 눈물났다)

'functionName' failed to satisfy constraint 에러는 아무리 구글링해도 안나오고... 엉뚱한데서 시간을 다 뺏겼다.

다행히 람다 호출은 정상적으로 잘 됐다.

 

결론은... 나와 같은 경우를 겪는 사람이 이 글을 발견하길 바란다...

'개발 > Etc' 카테고리의 다른 글

Blocking, Non-blocking, Sync, Async 의 차이  (7) 2021.10.19
[애자일] MVP 란?  (1) 2019.09.16
Mongoose Query Builder 몽구스 쿼리 빌더  (0) 2019.09.10
[애자일] 트럭(버스) 팩터란?  (0) 2019.04.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함