AWS Lambda 함수 별칭 - AWS Lambda

AWS Lambda 함수 별칭

AWS Lambda 함수의 별칭을 하나 이상 생성할 수 있습니다. Lambda 별칭은 특정 Lambda 함수 버전을 가리키는 포인터와 같습니다. 사용자는 별칭 ARN을 사용하여 함수 버전에 액세스할 수 있습니다.

별칭을 만들려면

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

  2. 함수를 선택합니다.

  3. 작업] 메뉴에서 별칭 생성을 선택합니다.

  4. 새 별칭 생성 양식에 별칭의 이름과 설명(선택 사항)을 입력합니다. 이 별칭에 대한 함수 버전을 선택합니다.

함수에 대해 현재 정의된 별칭을 보려면 한정자를 선택하고 별칭 탭을 선택합니다.

Lambda API를 사용한 별칭 관리

별칭을 만들려면 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 명령은 다음 AWS Lambda API에 해당합니다.

별칭 사용

각 별칭에는 고유한 ARN이 있습니다. 별칭은 다른 별칭이 아니라 함수 버전만 가리킬 수 있습니다. 함수의 새 버전을 가리키도록 별칭을 업데이트할 수 있습니다.

Amazon S3과 같은 이벤트 소스가 Lambda 함수를 호출합니다. 이러한 이벤트 소스에 이벤트가 발생할 때 호출할 함수를 식별하는 매핑이 유지됩니다. 매핑 구성에서 Lambda 함수 별칭을 지정하는 경우 함수 버전이 변경될 때 매핑을 업데이트할 필요가 없습니다.

리소스 정책에서 이벤트 소스에 Lambda 함수를 사용할 수 있는 권한을 부여할 수 있습니다. 정책에서 별칭 ARN을 지정하면 함수 버전이 변경될 때 정책을 업데이트할 필요가 없습니다.

리소스 정책

리소스 기반 정책을 사용해 서비스, 리소스 또는 계정에 함수에 액세스할 수 있는 권한을 부여하는 경우 이 권한의 범위는 이 권한을 별칭, 버전, 함수 중 어느 것에 적용하느냐에 따라 달라집니다. 별칭 이름(예: helloworld:PROD)을 사용하는 경우 별칭 ARN을 사용하여 helloworld 함수를 호출하는 경우에만 액세스 권한이 유효합니다. 버전 ARN 또는 함수 ARN을 사용하면 권한 오류가 발생합니다. 여기에는 별칭이 가리키는 버전 ARN이 포함됩니다.

예를 들어, 다음 AWS CLI 명령은 helloworld Lambda 함수의 PROD 별칭을 호출하는 Amazon S3 권한을 부여합니다. --qualifier 파라미터는 별칭 이름을 지정합니다.

$ aws lambda add-permission --function-name helloworld \ --qualifier PROD --statement-id 1 --principal s3.amazonaws.com --action lambda:InvokeFunction \ --source-arn arn:aws:s3:::examplebucket --source-account 123456789012

이 경우, Amazon S3는 PROD 별칭을 호출할 수 있게 되고 Lambda는 PROD 별칭이 가리키는 helloworld Lambda 함수 버전을 실행할 수 있습니다. 이를 위해서는 S3 버킷의 알림 구성에서 PROD 별칭 ARN을 사용해야 합니다.

별칭 라우팅 구성

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

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

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

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

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

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

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

  2. 함수를 선택합니다.

  3. 함수에 게시된 버전이 두 개 이상 있는지 확인합니다. 이렇게 하려면 한정자를 선택한 다음 버전을 선택하여 버전 목록을 표시합니다. 추가 버전을 생성해야 하는 경우 AWS Lambda 함수 버전의 지침을 따르십시오.

  4. 작업 메뉴에서 별칭 생성을 선택합니다.

  5. 새 별칭 생성 창에서 이름에 값을 입력하고 선택적으로 설명에 값을 입력한 다음, 별칭이 참조하는 Lambda 함수의 버전을 선택합니다.

  6. Additional version(추가 버전)]에서 다음 항목을 지정합니다.

    1. 두 번째 Lambda 함수 버전을 선택합니다.

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

  7. 생성을 선택합니다.

별칭 라우팅 구성

create-aliasupdate-alias 명령을 사용하여 두 함수 버전 간의 트래픽 가중치를 구성합니다. 별칭을 만들거나 업데이트할 때 routing-config 파라미터에 트래픽 가중치를 지정합니다.

다음 예제에서는 Lambda 함수에 대한 별칭(명명된 라우팅 별칭)을 생성합니다. 별칭은 함수의 버전 1을 가리킵니다. 함수의 버전 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로 라우팅하려면 UpdateAlias 명령을 사용하여 별칭이 버전 2를 가리키도록 function-version 속성을 변경합니다. 이 명령은 라우팅 구성도 재설정합니다.

$ aws lambda update-alias --name routing-alias --function-name my-function \ --function-version 2 --routing-config AdditionalVersionWeights={}

이전 단계의 CLI 명령은 다음 AWS Lambda API 작업에 해당합니다.

호출된 버전 확인

두 함수 버전 간에 트래픽 가중치를 구성할 때 호출된 Lambda 함수 버전을 확인하는 방법은 두 가지가 있습니다.

  • CloudWatch Logs – 매 함수 호출 시 Lambda에서 호출된 버전 ID가 포함된 START 로그 항목을 자동으로 CloudWatch Logs로 내보냅니다. 다음은 그 한 예입니다.

    19:44:37 START RequestId: request id Version: $version

    별칭 호출을 위해 Lambda은 Executed Version 차원을 사용하여 실행된 버전을 기준으로 지표 데이터를 필터링합니다. 자세한 내용은 AWS Lambda 함수 지표 작업 단원을 참조하십시오.

  • 응답 페이로드(동기식 호출) – 동기식 함수 호출에 대한 응답에 호출된 함수 버전을 나타내는 x-amz-executed-version 헤더가 포함되어 있습니다.