본문 바로가기
AWS

[AWS] API Gateway Stage Version 설정하기(feat. lambda)

by parkjp 2023. 7. 19.

 

API Gateway Stage를 사용해서 development와 production 버전을 각각 설정해보자.

 

보통 API Gateway에서 메서드를 생성할 때 lambda이름을 적게 되는데 이 부분을 변수로 처리할 수 있다.

바로 스테이지 변수(Stage Variable)을 사용하는 것이다.

 

일단 나는 스테이지를 dev와 prod로 두 가지를 만들어 배포했다.

그리고 메서드와 연결되는 Lambda 함수도 $Latest 버전을 dev로 별칭을 등록했고, 버전 1을 생성하여 prod로 별칭을 등록했다.

 

이렇게 하였다면 API Gateway 메서드에서 Lambda 함수의 해당 별칭버전으로 호출하도록 해줘야한다.

아래 사진에서 스테이지 메뉴를 들어가면 만들었던 스테이지 리스트가 보인다.

 

API Gateway Stage

 

dev나 prod를 클릭하게되면 오른쪽에 스테이지 변수라는 탭이 보이게 된다.

스테이지 변수를 추가해보자.

이름은 잘 알아보게 지으면 되는데 나는 lambdaAlias라고 지었다.

그리고 변수 값은 Lambda에서 만들어둔 별칭을 적으면 되는데,

나는 dev와 prod라고 지었으므로 dev 스테이지에서는 dev, prod 스테이지에서는 prod라고 설정하였다.

 

 

 

 

스테이지 변수를 설정하였으면 다시 왼쪽메뉴에서 리소스 탭으로 간다.

리소스에서 자신이 생성한 메서드를 클릭해보자.

테스트를 할 수 있고 메서드 요청, 통합 요청이란게 보일 것이다.

여기서 통합 요청을 클릭한다. 여기서 호출되는 Lambda 함수를 변경해야 되는데 아래처럼 하면 된다.

 

<your-lambda-function-name>:${stageVariables.lambdaAlias}

 

Lambda 함수 이름 뒤에 :${stagevariables.lambdaAlias}라고 설정해 준다.

그렇게 되면 경고창으로 permission을 추가하라고 나올 텐데, API Gateway에서 해당 별칭 버전의 Lambda함수를 호출할 수 있는 권한을 주면 된다. 친절하게도 경고창에서 cli 문장을 알려준다.

 

cli 문장을 실행할 때 그대로 복사를 하되 변수 처리된 부분을 바꿔줘야 한다. 필자 같은 경우 ${stageVariables.lambdaAlias}부분을 각각 dev와 prod로 변경하여 permission을 주었다.

 

 

다 되었다하고 실행하면 적용이 안되어 있을 것이다. 마지막으로 각각 스테이지로 배포를 다시 하면 적용된다.

 

 

 

반응형