Lambda 함수의 버전과 별칭의 사용법에 대해 알아보자

2022.01.07

안녕하세요, 임채정입니다.
이번 블로그에서는 람다 함수의 버전과 별칭에 대해 알아보고 실제로 예시까지 정리해보겠습니다.

아젠다

  1. 함수의 버전 (versions)
  2. 함수의 별칭 (aliases)

1. 함수의 버전 (versions)

정의

  • 버전을 사용해서 함수의 배포를 관리
  • 함수의 프로덕션 버전 사용에 영향을 주지 않고, 베타 테스트를 위한 새로운 버전의 함수를 게시 가능
  • 함수에 포함되는 정보
    • 함수 코드 및 모든 관련 종속성
    • Lambda 런타임
    • 모든 함수 설정
    • 고유한 Amazon 리소스 이름(ARN)

예시

이번에는 실제로 람다 함수의 버전을 생성해봅시다.
위에 있는 그림처럼 두 개의 버전을 만들어보겠습니다.

먼저 새로운 버전으로 작성하기 전에 람다 코드를 변경합니다.

import json

def lambda_handler(event, context):
    return "lambda function version1"

그 후 새로운 버전으로 만들기 위해 작업에서 새 버전 발행을 클릭합니다.

그러면 새 버전을 게시한다는 안내문이 나오고 게시를 눌러주면 새로운 버전이 생성됩니다.

이렇게 생성한 버전은 코드의 수정이 불가능하게 됩니다.
만약 코드의 수정을 하고 싶으면 다시 $LATEST 버전으로 돌아가서 수정해야 합니다.

코드만 수정한 후에 같은 방식으로 버전2의 함수도 만들면 위의 그림처럼 두 개의 버전이 생성할 수 있습니다.

import json

def lambda_handler(event, context):
    return "lambda function version2"

생성한 버전의 목록은 함수의 [버전] 탭에 들어가면 확인할 수 있습니다.

2. 함수의 별칭 (aliases)

정의

  • 특정 함수 버전을 가리키는 포인터
  • 별칭은 Amazon 리소스 이름(ARN)을 사용해 특정 함수 버전에 액세스
  • 별칭과 함수의 주요 차이점 중 하나는 다른 버전의 함수를 가리키도록 별칭을 변경할 수 있다는 것
  • 또한 별칭 하나로 복수의 함수를 가리키도록 할 수 있음

혹은

예시

이번에는 위에서 해봤던 람다 버전에 대한 예시에 이어서 람다 버전에 별칭을 부여해보겠습니다.
먼저 아래 사진과 같이 별칭을 설정해보겠습니다.

람다 함수의 [별칭]탭에 들어갑니다.
아직 별칭을 생성하지 않았기 때문에 목록이 없습니다.
새로운 별칭을 생성해보겠습니다.

사진과 같이 dev 별칭을 생성하고 $LATEST 버전을 가리키도록 설정합니다.

그러면 아래 사진과 같이 dev 별칭이 생성됩니다.

이와 같은 방법으로 prdstg를 각각의 버전을 가리키도록 설정해주면 그림과 같이 각각의 버전을 가리키도록 별칭을 생성할 수 있습니다.

그러면 조금 변경해서 아래의 사진과 같이 별칭 prd 가 두 개의 함수를 가리키도록 변경하겠습니다.

별칭 prd를 선택한 후에 편집을 해줍니다.

편집화면에서 가중치 기반 별칭의 설정에서 V2를 설정하고 가중치를 10으로 설정합니다.

그 후에 저장을 해주면 사진과 같이 설정한 가중치로 각각의 버전을 가리키도록 할 수 있습니다.

이렇게 변경되면 별칭 prd에서 함수를 실행했을 때 90%의 가중치로 version1의 함수가 실행되고 10%의 가중치로 version2의 함수가 실행되게 됩니다.