Lambda 함수 별칭 - AWS Lambda

Lambda 함수 별칭

Lambda 함수의 별칭을 생성할 수 있습니다. Lambda 별칭은 업데이트할 수 있는 함수 버전에 대한 포인터입니다. 함수 사용자는 별칭 Amazon 리소스 이름(ARN)을 사용하여 함수 버전에 액세스할 수 있습니다. 새 버전을 배포할 때 새 버전을 사용하도록 별칭을 업데이트하거나 두 버전 간에 트래픽을 분할하도록 별칭을 업데이트할 수 있습니다.

함수 별칭 생성(콘솔)

Lambda 콘솔을 사용하여 함수 별칭을 생성할 수 있습니다.

별칭을 만들려면
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수를 선택합니다.

  3. 별칭(Aliases)을 선택한 다음 별칭 생성(Create alias)을 선택합니다.

  4. 별칭 생성(Create alias) 페이지에서 다음을 수행합니다.

    1. 별칭의 이름(Name)을 입력합니다.

    2. (선택 사항) 경보에 대한 설명(Description)을 입력합니다.

    3. 버전(Version)에서 별칭이 가리키도록 할 함수 버전을 선택합니다.

    4. (선택 사항) 별칭에 대한 라우팅을 구성하려면 가중치 기반 별칭(Weighted alias)을 확장합니다. 자세한 내용은 별칭 라우팅 구성 섹션을 참조하세요.

    5. 저장을 선택합니다.

Lambda API를 사용한 별칭 관리

AWS Command Line Interface(AWS CLI)를 사용하여 별칭을 생성하려면 create-alias 명령을 사용합니다.

aws lambda create-alias --function-name my-function --name alias-name --function-version version-number --description " "

새 버전의 함수를 가리키도록 별칭을 변경하려면 update-alias 명령을 사용합니다.

aws lambda update-alias --function-name my-function --name alias-name --function-version version-number

별칭을 삭제하려면 delete-alias 명령을 사용합니다.

aws lambda delete-alias --function-name my-function --name alias-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 작업에 사용되는 리소스 및 조건 단원을 참조하세요.

별칭 라우팅 구성

별칭에 대한 라우팅 구성을 사용하여 트래픽의 일부를 두 번째 함수 버전으로 보냅니다. 예를 들어 대부분의 트래픽은 기존 버전으로 전송되고 소수만 새 버전으로 전송되도록 별칭을 구성하여 새 버전을 배포하는 위험을 줄일 수 있습니다.

Lambda는 간단한 확률 모델을 사용하여 두 함수 버전 간에 트래픽을 분산시킵니다. 트래픽 수준이 낮으면 각 버전에서 구성된 트래픽과 실제 트래픽의 비율 간에 큰 차이가 나타날 수 있습니다. 함수가 프로비저닝된 동시성을 사용하는 경우 별칭 라우팅이 활성 상태인 동안 더 많은 수의 프로비전된 동시성 인스턴스를 구성하여 초과(spillover) 호출을 방지할 수 있습니다.

별칭이 최대 두 개의 Lambda 함수 버전을 가리키도록 설정할 수 있습니다. 버전은 다음 기준을 충족해야 합니다.

  • 두 버전이 동일한 실행 역할을 가져야 합니다.

  • 두 버전 모두 동일한 배달 못한 편지 대기열 구성을 가져야 하거나 배달 못한 편지 대기열 구성이 없어야 합니다.

  • 두 버전 모두 게시해야 합니다. 별칭은 $LATEST을 가리킬 수 없습니다.

별칭에 대한 라우팅을 구성하려면
참고

함수에 게시된 버전이 두 개 이상 있는지 확인합니다. 추가 버전을 생성하려면 Lambda 함수 버전의 지침을 따르세요.

  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수를 선택합니다.

  3. 별칭(Aliases)을 선택한 다음 별칭 생성(Create alias)을 선택합니다.

  4. 별칭 생성(Create alias) 페이지에서 다음을 수행합니다.

    1. 별칭의 이름(Name)을 입력합니다.

    2. (선택 사항) 경보에 대한 설명(Description)을 입력합니다.

    3. 버전(Version)에서 별칭이 가리키도록 할 첫 번째 함수 버전을 선택합니다.

    4. 가중치 기반 별칭(Weighted alias)을 확장합니다.

    5. 추가 버전(Additional version)에서 별칭이 가리킬 두 번째 함수 버전을 선택합니다.

    6. 가중치(Weight)(%)에서 함수의 가중치 값을 입력합니다. 가중치는 별칭이 호출될 때 해당 버전에 할당되는 트래픽의 비율입니다. 첫 번째 버전에는 남은 가중치가 할당됩니다. 예를 들어 Additional version(추가 버전)에 10%를 지정할 경우 첫 번째 버전에 자동으로 90%가 할당됩니다.

    7. 저장을 선택합니다.

CLI를 사용하여 별칭 라우팅 구성

create-aliasupdate-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 헤더가 포함되어 있습니다.