Lambda 함수에 대한 별칭 생성
Lambda 함수의 별칭을 생성할 수 있습니다. Lambda 별칭은 업데이트할 수 있는 함수 버전에 대한 포인터입니다. 함수 사용자는 별칭 Amazon 리소스 이름(ARN)을 사용하여 함수 버전에 액세스할 수 있습니다. 새 버전을 배포할 때 새 버전을 사용하도록 별칭을 업데이트하거나 두 버전 간에 트래픽을 분할하도록 별칭을 업데이트할 수 있습니다.
Sections
함수 별칭 생성(콘솔)
Lambda 콘솔을 사용하여 함수 별칭을 생성할 수 있습니다.
별칭을 만들려면
Lambda 콘솔의 함수 페이지
를 엽니다. -
함수를 선택합니다.
-
별칭(Aliases)을 선택한 다음 별칭 생성(Create alias)을 선택합니다.
-
별칭 생성(Create alias) 페이지에서 다음을 수행합니다.
-
별칭의 이름(Name)을 입력합니다.
-
(선택 사항) 경보에 대한 설명(Description)을 입력합니다.
-
버전(Version)에서 별칭이 가리키도록 할 함수 버전을 선택합니다.
-
(선택 사항) 별칭에 대한 라우팅을 구성하려면 가중치 기반 별칭(Weighted alias)을 확장합니다. 자세한 내용은 별칭 라우팅 구성 섹션을 참조하세요.
-
저장을 선택합니다.
-
Lambda API를 사용한 별칭 관리
AWS Command Line Interface(AWS CLI)를 사용하여 별칭을 생성하려면 create-alias
명령을 사용합니다.
aws lambda create-alias --function-name
my-function
--namealias-name
--function-versionversion-number
--description " "
새 버전의 함수를 가리키도록 별칭을 변경하려면 update-alias
명령을 사용합니다.
aws lambda update-alias --function-name
my-function
--namealias-name
--function-versionversion-number
별칭을 삭제하려면 delete-alias
명령을 사용합니다.
aws lambda delete-alias --function-name
my-function
--namealias-name
이전 단계의 AWS CLI 명령은 다음 Lambda API 작업에 해당합니다.
AWS SAM 및 AWS CloudFormation을 사용한 별칭 관리
AWS Serverless Application Model(AWS SAM) 및 AWS CloudFormation을 사용하여 함수 별칭을 생성하고 관리할 수 있습니다.
AWS SAM 템플릿에서 함수 별칭을 선언하는 방법은 AWS SAM 개발자 가이드에서 AWS::Serverless::Function 페이지를 참조하세요. AWS CloudFormation을 사용하여 별칭을 생성하고 구성하는 방법에 대한 자세한 내용은 AWS CloudFormation 사용 설명서에서 AWS::Lambda::Alias를 참조하세요.
별칭 사용
각 별칭에는 고유한 ARN이 있습니다. 별칭은 다른 별칭이 아니라 함수 버전만 가리킬 수 있습니다. 함수의 새 버전을 가리키도록 별칭을 업데이트할 수 있습니다.
Amazon Simple Storage Service(Amazon S3)와 같은 이벤트 소스가 Lambda 함수를 호출합니다. 이러한 이벤트 소스에 이벤트가 발생할 때 호출할 함수를 식별하는 매핑이 유지됩니다. 매핑 구성에서 Lambda 함수 별칭을 지정하는 경우 함수 버전이 변경될 때 매핑을 업데이트할 필요가 없습니다. 자세한 내용은 Lambda가 스트림 및 대기열 기반 이벤트 소스의 레코드를 처리하는 방법 섹션을 참조하세요.
리소스 정책에서 이벤트 소스에 Lambda 함수를 사용할 수 있는 권한을 부여할 수 있습니다. 정책에서 별칭 ARN을 지정하면 함수 버전이 변경될 때 정책을 업데이트할 필요가 없습니다.
리소스 정책
리소스 기반 정책을 사용하여 서비스, 리소스 또는 계정에 함수에 대한 액세스 권한을 부여할 수 있습니다. 해당 권한의 범위는 별칭, 버전 또는 전체 함수에 적용하는지 여부에 따라 다릅니다. 예를 들어, 별칭 이름(예: helloworld:PROD
)을 사용하는 경우, 권한이 있으면 별칭 ARN(helloworld
)을 사용하여 helloworld:PROD
함수를 호출할 수 있습니다.
별칭이나 특정 버전 없이 함수를 호출하려고 하면 권한 오류가 발생합니다. 이 권한 오류는 별칭과 연결된 함수 버전을 직접 호출하려고 해도 계속 발생합니다.
예를 들어, 다음 AWS CLI 명령은 Amazon S3 permissions가 DOC-EXAMPLE-BUCKET
을 대신하여 작동할 때 helloworld
함수의 PROD 별칭을 호출할 수 있는 Amazon S3 권한을 부여합니다.
aws lambda add-permission --function-name helloworld \ --qualifier PROD --statement-id 1 --principal s3.amazonaws.com --action lambda:InvokeFunction \ --source-arn arn:aws:s3:::DOC-EXAMPLE-BUCKET --source-account 123456789012
정책에서 리소스 이름을 사용하는 방법에 대한 자세한 내용은 정책의 리소스 및 조건 섹션 미세 조정 단원을 참조하세요.
별칭 라우팅 구성
별칭에 대한 라우팅 구성을 사용하여 트래픽의 일부를 두 번째 함수 버전으로 보냅니다. 예를 들어 대부분의 트래픽은 기존 버전으로 전송되고 소수만 새 버전으로 전송되도록 별칭을 구성하여 새 버전을 배포하는 위험을 줄일 수 있습니다.
Lambda는 간단한 확률 모델을 사용하여 두 함수 버전 간에 트래픽을 분산시킵니다. 트래픽 수준이 낮으면 각 버전에서 구성된 트래픽과 실제 트래픽의 비율 간에 큰 차이가 나타날 수 있습니다. 함수가 프로비저닝된 동시성을 사용하는 경우 별칭 라우팅이 활성 상태인 동안 더 많은 수의 프로비전된 동시성 인스턴스를 구성하여 초과(spillover) 호출을 방지할 수 있습니다.
별칭이 최대 두 개의 Lambda 함수 버전을 가리키도록 설정할 수 있습니다. 버전은 다음 기준을 충족해야 합니다.
-
두 버전이 동일한 실행 역할을 가져야 합니다.
-
두 버전 모두 동일한 배달 못한 편지 대기열 구성을 가져야 하거나 배달 못한 편지 대기열 구성이 없어야 합니다.
-
두 버전 모두 게시해야 합니다. 별칭은
$LATEST
을 가리킬 수 없습니다.
별칭에 대한 라우팅을 구성하려면
참고
함수에 게시된 버전이 두 개 이상 있는지 확인합니다. 추가 버전을 생성하려면 Lambda 함수 버전의 지침을 따르세요.
Lambda 콘솔의 함수 페이지
를 엽니다. -
함수를 선택합니다.
-
별칭(Aliases)을 선택한 다음 별칭 생성(Create alias)을 선택합니다.
-
별칭 생성(Create alias) 페이지에서 다음을 수행합니다.
-
별칭의 이름(Name)을 입력합니다.
-
(선택 사항) 경보에 대한 설명(Description)을 입력합니다.
-
버전(Version)에서 별칭이 가리키도록 할 첫 번째 함수 버전을 선택합니다.
-
가중치 기반 별칭(Weighted alias)을 확장합니다.
-
추가 버전(Additional version)에서 별칭이 가리킬 두 번째 함수 버전을 선택합니다.
-
가중치(Weight)(%)에서 함수의 가중치 값을 입력합니다. 가중치는 별칭이 호출될 때 해당 버전에 할당되는 트래픽의 비율입니다. 첫 번째 버전에는 남은 가중치가 할당됩니다. 예를 들어 Additional version(추가 버전)에 10%를 지정할 경우 첫 번째 버전에 자동으로 90%가 할당됩니다.
-
저장을 선택합니다.
-
CLI를 사용하여 별칭 라우팅 구성
create-alias
및 update-alias
AWS CLI 명령을 사용하여 두 함수 버전 간의 트래픽 가중치를 구성합니다. 별칭을 만들거나 업데이트할 때 routing-config
파라미터에 트래픽 가중치를 지정합니다.
다음 예에서는 함수의 버전 1을 가리키는 routing-alias라는 Lambda 함수 별칭을 생성합니다. 함수의 버전 2는 트래픽의 3%를 수신합니다. 나머지 97%의 트래픽은 버전 1로 라우팅됩니다.
aws lambda create-alias --name routing-alias --function-name my-function --function-version 1 \ --routing-config AdditionalVersionWeights={"2"=0.03}
이 update-alias
명령을 사용하여 버전 2로 들어오는 트래픽의 비율을 늘립니다. 다음 예에서는 트래픽을 5%로 늘립니다.
aws lambda update-alias --name routing-alias --function-name my-function \ --routing-config AdditionalVersionWeights={"2"=0.05}
모든 트래픽을 버전 2로 라우팅하려면 update-alias
명령을 사용하여 별칭이 버전 2를 가리키도록 function-version
속성을 변경합니다. 이 명령은 라우팅 구성도 재설정합니다.
aws lambda update-alias --name routing-alias --function-name my-function \ --function-version 2 --routing-config AdditionalVersionWeights={}
이전 단계의 AWS CLI 명령은 다음 Lambda API 작업에 해당합니다.
호출된 버전 확인
두 함수 버전 간에 트래픽 가중치를 구성할 때 호출된 Lambda 함수 버전을 확인하는 방법은 두 가지가 있습니다.
-
CloudWatch Logs – 매 함수 호출 시 Lambda가 호출된 버전 ID를 포함한
START
로그 항목을 자동으로 Amazon CloudWatch Logs로 내보냅니다. 다음은 그 한 예입니다.19:44:37 START RequestId:
request id
Version: $version
별칭 호출을 위해 Lambda는
Executed Version
차원을 사용하여 호출된 버전을 기준으로 지표 데이터를 필터링합니다. 자세한 내용은 Lambda 함수 지표 작업 섹션을 참조하세요. -
응답 페이로드(동기식 호출) – 동기식 함수 호출에 대한 응답에 호출된 함수 버전을 나타내는
x-amz-executed-version
헤더가 포함되어 있습니다.