[AWS] Lambda와 API Gateway로 새로운 개발 환경에서 테스트하는 법 (Alias와 Stage 기능 활용)
Scenario (시나리오)
Production 환경에서 Lambda와 API Gateway를 사용한 백엔드 시스템으로 웹 애플리케이션을 배포하고 있을 경우에 따로 백엔드 시스템만 다른 개발 환경에서 테스트 하고 싶다.
Lambda와 API Gateway로 새로운 개발 환경에서 테스트하는 방법
1. Lambda 함수 코드 수정
- 일단 먼저 새로운 개발환경에서 테스트하고 싶은 Lambda 함수의 코드를 만들어 테스트한다.
- 테스트가 완료되면 Lambda 함수를 새 버전으로 게시한다.
2. Lambda에서 Alias 생성
- Lambda 함수의 새 버전에 alias을 생성한다.
- 예: dev 라는 alias을 새 버전에 연결한다
3. API Gateway에서 Stage 설정
- API Gateway에서 새로운 Stage(예: dev, test, prod 등)를 생성한다.
- 새로운 stage의 Lambda 통합 요청에서 dev alias을 사용하는 Lambda 버전을 설정한다.
- Stage Variables는 특정 Stage(예: dev, test, prod 등)마다 다르게 설정할 수 있는 환경 변수이다.
API Gateway Stage에 관하여: https://jibinary.tistory.com/528
4. 독립적인 개발 환경
- 새로운 stage(예: dev)를 통해 프로덕션과 격리된 환경에서 테스트를 수행한다.
- 프로덕션 환경에 영향을 주지 않으면서 수정된 Lambda 함수의 동작을 확인할 수 있다.
🤔 문제
한 회사가 AWS에 배포된 웹 애플리케이션을 운영 중입니다. 이 애플리케이션은 Amazon API Gateway API와 AWS Lambda 함수를 백엔드로 사용합니다.
최근 애플리케이션이 예기치 않은 동작을 보였고, 개발자가 Lambda 함수 코드를 검토한 결과 오류를 발견했습니다. 문제를 해결하기 위해 코드를 수정했으며, 변경된 코드를 프로덕션 환경에 배포하기 전에 애플리케이션이 제대로 작동하는지 확인하는 테스트를 실행해야 합니다.
현재 애플리케이션에는 프로덕션 환경만 존재합니다. 개발자는 코드 변경 사항을 테스트하기 위해 새로운 개발 환경을 생성해야 하며, 테스트 주기 동안 다른 개발자가 이 변경 사항을 덮어쓰지 못하도록 방지해야 합니다.
다음 중 가장 적은 개발 작업으로 이러한 요구 사항을 충족할 수 있는 단계 조합은 무엇인가요? (두 가지 선택)
- 현재 스테이지에서 새로운 리소스를 생성합니다. Lambda 프록시 통합이 있는 새 메서드를 생성하고, Lambda 함수를 선택한 다음 hotfix alias을 추가합니다. 현재 스테이지를 다시 배포합니다. 백엔드를 테스트합니다.
- API Gateway API 통합 요청에서 Lambda 함수가 hotfix alias을 사용하도록 업데이트합니다. API Gateway API를 hotfix라는 새로운 스테이지에 배포합니다. 백엔드를 테스트합니다.
- Lambda 함수의 코드를 수정하여 문제를 해결합니다. Lambda 함수를 테스트합니다. hotfix라는 alias을 생성하고 이 별칭을 $LATEST 버전에 연결합니다.
- Lambda 함수의 코드를 수정하여 문제를 해결합니다. Lambda 함수를 테스트합니다. Lambda 함수가 예상대로 작동하면 새 버전으로 함수를 게시합니다. hotfix라는 alias을 생성하고 이 별칭을 새 버전에 연결합니다.
- 개발 환경을 위한 새로운 API Gateway API를 생성합니다. Lambda 통합이 있는 리소스와 메서드를 추가합니다. Lambda 함수와 hotfix alias을 선택합니다. 새 스테이지에 배포합니다. 백엔드를 테스트합니다.
정답
정답. 2번, 4번
1번 (오답) 프로덕션 환경을 변경하므로 오답
3번 (오답). $latest
버전은 사용하지 않는게 좋다.
왜냐하믄 Lambda 함수 코드가 수정될 때마다 자동으로 $latest
버전으로 업데이트되기 때문에 다른 개발자가 잘못 업데이트하면 새로 만든 개발환경에 영향을 준다.
5번 (오답) 새로운 API Gateway를 생성하면 더 많은 개발 작업이 필요하며, 효율성이 떨어진다