가중치 별칭을 사용하여 Lambda 카나리 배포 구현
가중치가 적용된 별칭을 사용하여 동일한 함수의 서로 다른 두 버전 간에 트래픽을 분할할 수 있습니다. 이 접근 방식을 사용하면 적은 비율의 트래픽으로 함수의 새 버전을 테스트하고 필요한 경우 빠르게 롤백할 수 있습니다. 이를 카나리 배포라고 합니다. 카나리 배포는 모든 트래픽을 한 번에 전환하는 대신 새 버전을 요청의 일부에만 노출하여 블루/그린 배포와 다릅니다.
별칭이 최대 두 개의 Lambda 함수 버전을 가리키도록 설정할 수 있습니다. 버전은 다음 기준을 충족해야 합니다.
-
두 버전이 동일한 실행 역할을 가져야 합니다.
-
두 버전 모두 동일한 배달 못한 편지 대기열 구성을 가져야 하거나 배달 못한 편지 대기열 구성이 없어야 합니다.
-
두 버전 모두 게시해야 합니다. 별칭은
$LATEST
을 가리킬 수 없습니다.
참고
Lambda는 간단한 확률 모델을 사용하여 두 함수 버전 간에 트래픽을 분산시킵니다. 트래픽 수준이 낮으면 각 버전에서 구성된 트래픽과 실제 트래픽의 비율 간에 큰 차이가 나타날 수 있습니다. 함수가 프로비저닝된 동시성을 사용하는 경우 별칭 라우팅이 활성 상태인 동안 더 많은 수의 프로비전된 동시성 인스턴스를 구성하여 초과(spillover) 호출을 방지할 수 있습니다.
가중치가 적용된 별칭 생성
간접 호출된 버전 확인
두 함수 버전 간에 트래픽 가중치를 구성할 때 간접 호출된 Lambda 함수 버전을 확인하는 방법은 두 가지가 있습니다.
-
CloudWatch Logs – 매 함수 간접 호출 시 Lambda가 간접 호출된 버전 ID를 포함한
START
로그 항목을 자동으로 내보냅니다. 예시:START RequestId: 1dh194d3759ed-4v8b-a7b4-1e541f60235f Version:
2
별칭 간접 호출을 위해 Lambda는
ExecutedVersion
차원을 사용하여 간접 호출된 버전을 기준으로 지표 데이터를 필터링합니다. 자세한 내용은 Lambda 함수에 대한 지표 보기 단원을 참조하십시오. -
응답 페이로드(동기식 간접 호출) – 동기식 함수 간접 호출에 대한 응답에 간접 호출된 함수 버전을 나타내는
x-amz-executed-version
헤더가 포함되어 있습니다.
가중치가 적용된 별칭을 사용하여 롤링 배포 생성
AWS CodeDeploy 및 AWS Serverless Application Model(AWS SAM) 항목을 사용하여 함수 코드의 변경 사항을 자동으로 감지하고, 함수의 새 버전을 배포하고, 새 버전으로 흐르는 트래픽 양을 점진적으로 늘리는 롤링 배포를 생성합니다. 트래픽 양과 증가 속도는 구성이 가능한 파라미터입니다.
롤링 배포에서 AWS SAM는 다음 작업을 수행합니다.
-
Lambda 함수를 구성하고 별칭을 생성합니다. 별칭 가중치 라우팅 구성은 롤링 배포 구현의 기반이 되는 기능입니다.
-
CodeDeploy 애플리케이션 및 배포 그룹을 생성합니다. 배포 그룹은 롤링 배포 및 롤백(필요한 경우)을 관리합니다.
-
내 Lambda 함수의 새 버전이 생성될 때 이를 감지합니다.
-
새 버전의 배포를 시작하도록 CodeDeploy를 트리거합니다.
예제 AWS SAM 템플릿
다음 예제는 간단한 롤링 배포를 위한 AWS SAM 템플릿을 보여줍니다.
AWSTemplateFormatVersion : '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: A sample SAM template for deploying Lambda functions Resources: # Details about the myDateTimeFunction Lambda function myDateTimeFunction: Type: AWS::Serverless::Function Properties: Handler: myDateTimeFunction.handler Runtime: nodejs18.x # Creates an alias named "live" for the function, and automatically publishes when you update the function. AutoPublishAlias: live DeploymentPreference: # Specifies the deployment configuration Type: Linear10PercentEvery2Minutes
이 템플릿은 다음 속성을 가진 myDateTimeFunction
이라는 Lambda 함수를 정의합니다.
- AutoPublishAlias
-
AutoPublishAlias
속성은live
라는 별칭을 생성합니다. 또한 AWS SAM 프레임워크는 함수에 대한 새 코드를 저장할 때 이를 자동으로 감지합니다. 그러면 프레임워크가 새 함수 버전을 게시하고 새 버전을 가리키도록live
별칭을 업데이트합니다. - DeploymentPreference
-
DeploymentPreference
속성은 CodeDeploy 애플리케이션이 Lambda 함수의 원래 버전에서 새 버전으로 트래픽을 이동시키는 속도를 결정합니다. 값이Linear10PercentEvery2Minutes
면 트래픽의 10%가 2분마다 새 버전으로 새롭게 이동됩니다.사전 정의된 배포 구성의 목록은 배포 구성을 참조하세요.
CodeDeploy 및 AWS SAM 항목을 사용하여 롤링 배포를 생성하는 방법에 대한 자세한 내용은 다음을 참조하세요.