AWS Lambda 함수 버전 - AWS Lambda

AWS Lambda 함수 버전

버전을 사용하여 AWS Lambda 함수 배포를 관리할 수 있습니다. 예를 들어, 안정적인 프로덕션 버전 사용에 영향을 주지 않고 베타 테스트를 위한 새 버전의 함수를 게시할 수 있습니다.

함수를 게시 할 때마다 시스템에서 Lambda 함수의 새 버전이 생성됩니다. 새 버전은 함수의 게시 되지 않은 버전입니다. 함수 버전에는 다음 정보가 포함됩니다.

  • 함수 코드 및 모든 관련 종속성.

  • 함수를 실행하는 Lambda 런타임.

  • 환경 변수를 포함한 모든 함수 설정.

  • 이 버전의 함수를 식별하는 고유한 Amazon 리소스 이름(ARN).

함수의 게시 되지 않은 버전에서만 함수 코드와 설정을 변경할 수 있습니다. 버전을 게시할 때 사용자가 해당 버전을 일관되게 사용할 수 있도록 하기 위해 코드와 대부분 설정이 잠깁니다. 함수 설정 구성에 대한 자세한 내용은 AWS Lambda 콘솔에서 함수 구성 단원을 참조하십시오.

함수의 새 버전을 생성하려면

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

  2. 게시할 함수를 선택합니다.

  3. 작업에서 새 버전 게시를 선택합니다.

함수의 첫 번째 버전을 게시하면 Lambda 콘솔에 사용 가능한 버전의 드롭다운 메뉴가 표시됩니다. Designer(설계자) 패널의 함수 이름 끝에 버전 한정자가 표시됩니다.

함수의 현재 버전을 보려면 함수를 선택한 다음 한정자를 선택합니다. 확장된 한정자 메뉴에서 버전 탭을 선택합니다. 버전 패널에는 선택한 함수의 버전 목록이 표시됩니다. 선택한 함수의 버전을 게시하지 않은 경우 버전 패널에 $LATEST 버전만 나열됩니다.

Lambda API로 버전 관리

함수의 버전을 게시하려면 PublishVersion API 작업을 사용합니다.

다음 예제에서는 함수의 새 버전을 게시합니다. 응답으로 버전 번호, 버전 접미사가 포함된 함수 ARN과 같은 새 버전에 대한 구성 정보가 반환됩니다.

$ aws lambda publish-version --function-name my-function { "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function:1", "Version": "1", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "function.handler", "Runtime": "nodejs12.x", ... }

버전 사용

ARN을 사용하여 Lambda 함수를 참조합니다. 이 초기 버전에는 두 개의 ARN이 연결되어 있습니다.

  • 정규화된 – 버전 접미사가 포함된 함수 ARN입니다.

    arn:aws:lambda:aws-region:acct-id:function:helloworld:$LATEST
  • 정규화 되지 않은 ARN – 버전 접미사가 포함되지 않은 함수 ARN입니다.

    arn:aws:lambda:aws-region:acct-id:function:helloworld

    모든 관련 작업에서 정규화되지 않은 이 ARN을 사용할 수 있습니다. 그러나 별칭을 생성하는 데 사용할 수 없습니다.

함수 버전을 게시하지 않기로 결정한 경우, 이벤트 소스 매핑에서 정규화된 ARN 또는 정규화되지 않은 ARN을 사용하여 함수를 호출할 수 있습니다.

Lambda은 코드가 게시된 적이 없거나 가장 최근에 게시된 버전과 비교하여 코드가 변경된 경우에만 새 함수 버전을 게시합니다. 변경 사항이 없으면 함수 버전은 가장 최근에 게시된 버전으로 유지됩니다.

각 Lambda 함수 버전은 고유한 ARN을 가집니다. 버전을 게시한 후에는 ARN 또는 함수 코드를 변경할 수 없습니다.

리소스 정책

리소스 기반 정책을 사용해 서비스, 리소스 또는 계정에 함수에 액세스할 수 있는 권한을 부여하는 경우 이 권한의 범위는 이 권한을 함수와 함수의 한 버전 중 어느 것에 적용하는지에 따라 달라집니다.

  • 정규화된 함수 이름(예: helloworld:1)을 사용하는 경우, 권한은 정규화된 ARN을 사용해 helloworld 함수 버전 1을 호출하는 경우에만 유효합니다. 다른 ARN을 사용하면 권한 오류가 발생합니다.

  • 정규화되지 않은 함수 이름(예: helloworld)을 사용하는 경우, 권한은 정규화되지 않은 함수 ARN을 사용하여 helloworld 함수를 호출하는 경우에만 유효합니다. $LATEST을 포함하여 다른 ARN을 사용하면 권한 오류가 발생합니다.

  • $LATEST 정규화된 함수 이름(예: helloworld:$LATEST)을 사용하는 경우, 권한이 정규화된 ARN을 사용하여 helloworld 함수를 호출하는 경우에만 유효합니다. 정규화되지 않은 ARN을 사용하면 권한 오류가 발생합니다.

함수 별칭을 사용하여 이벤트 소스 및 리소스 정책의 관리를 간소화할 수 있습니다. 자세한 내용은 AWS Lambda 함수 별칭 단원을 참조하십시오.