Lambda 함수 버전 관리하기
Lambda 함수 버전 관리하기 (Manage Lambda function versions)
버전(versions)을 사용해 함수의 배포를 관리할 수 있어요. 예를 들어 안정된 프로덕션 버전의 사용자에게 영향을 주지 않고 베타 테스트용으로 함수의 새 버전을 게시할 수 있어요. 함수를 게시할 때마다 Lambda는 함수의 새 버전을 만들어요. 새 버전은 함수의 미게시 버전의 사본이며, 미게시 버전은 $LATEST라고 불러요.
중요한 점은, 함수 코드를 배포할 때마다 $LATEST의 현재 코드를 덮어쓴다는 거예요. 현재 $LATEST 반복을 저장하려면 새 함수 버전을 만드세요. $LATEST가 이전에 게시한 버전과 동일하다면 $LATEST에 변경 사항을 배포할 때까지 새 버전을 만들 수 없어요. 이 변경에는 코드 업데이트나 함수 구성 설정 수정이 포함될 수 있어요.
함수 버전을 게시하고 나면 코드, 런타임, 아키텍처, 메모리, 레이어, 대부분의 기타 구성 설정은 불변(immutable)이 돼요. 즉 $LATEST에서 새 버전을 게시하지 않고는 이런 설정을 변경할 수 없어요. 게시된 함수 버전에 대해 다음 항목은 구성할 수 있어요.
- 트리거(Triggers)
- 대상(Destinations)
- 프로비저닝된 동시성(Provisioned concurrency)
- 비동기 호출(Asynchronous invocation)
- 데이터베이스 연결과 프록시(Database connections and proxies)
참고
런타임 관리 제어를 Auto 모드로 사용하면 함수 버전이 사용하는 런타임 버전이 자동으로 업데이트돼요. Function update 또는 Manual 모드에서는 런타임 버전이 업데이트되지 않아요.
본문
함수 버전 만들기
함수의 미게시 버전에서만 함수 코드와 설정을 변경할 수 있어요. 버전을 게시하면 Lambda는 코드와 대부분의 설정을 잠가 해당 버전 사용자에게 일관된 경험을 제공해요.
함수 버전은 Lambda 콘솔에서 만들 수 있어요.
새 함수 버전을 만들려면
- Lambda 콘솔의 Functions 페이지를 엽니다.
- 함수를 선택하고 Versions 탭을 선택합니다.
- 버전 구성 페이지에서 Publish new version을 선택합니다.
- (선택 사항) 버전 설명을 입력합니다.
- Publish를 선택합니다.
또는 PublishVersion API 작업으로 함수 버전을 게시할 수 있어요.
다음 AWS CLI 명령은 함수의 새 버전을 게시해요. 응답은 버전 번호와 버전 접미사가 붙은 함수 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": "nodejs24.x",
...
}
참고
Lambda는 버전 관리에 단조 증가하는 시퀀스 번호를 할당해요. 함수를 삭제하고 다시 만들어도 Lambda는 버전 번호를 절대 재사용하지 않아요.
버전 사용하기
Lambda 함수는 qualified ARN 또는 unqualified ARN으로 참조할 수 있어요.
- Qualified ARN — 버전 접미사가 있는 함수 ARN이에요. 다음 예시는 helloworld 함수의 버전 42를 참조해요.
arn:aws:lambda:aws-region:acct-id:function:helloworld:42 - Unqualified ARN — 버전 접미사가 없는 함수 ARN이에요.
arn:aws:lambda:aws-region:acct-id:function:helloworld
모든 관련 API 작업에서 qualified 또는 unqualified ARN을 사용할 수 있어요. 하지만 unqualified ARN으로는 별칭을 만들 수 없어요.
함수 버전을 게시하지 않기로 결정했다면 이벤트 소스 매핑에서 qualified 또는 unqualified ARN으로 함수를 호출할 수 있어요. unqualified ARN으로 함수를 호출하면 Lambda는 암시적으로 $LATEST를 호출해요.
각 Lambda 함수 버전의 qualified ARN은 고유해요. 버전을 게시하고 나면 ARN이나 함수 코드를 변경할 수 없어요.
Lambda는 코드가 한 번도 게시된 적이 없거나, 코드가 마지막 게시 버전에서 변경된 경우에만 새 함수 버전을 게시해요. 변경이 없으면 함수 버전은 마지막 게시 버전으로 유지돼요.
버전을 게시하면 Lambda는 함수 코드와 구성의 불변 스냅샷을 만들어요. 모든 구성 변경이 새 버전 게시를 트리거하는 것은 아니에요. 다음 구성 변경은 함수를 버전 게시 대상으로 만들어요.
- 함수 코드
- 환경 변수
- 런타임
- 핸들러
- 레이어
- 메모리 크기
- 타임아웃
- VPC 구성
- 데드 레터 큐(DLQ) 구성
- IAM 역할
- 설명
- 아키텍처(x86_64 또는 arm64)
- 임시 스토리지 크기
- 패키지 유형
- 코드 저장 모드(Lambda 관리형과 자체 관리형 S3 저장소 간 전환)
- 로깅 구성
- 파일 시스템 구성
- SnapStart
- 추적(tracing) 구성
reserved concurrency 같은 운영 설정은 변경돼도 새 버전 게시를 트리거하지 않아요.
권한 부여
리소스 기반 정책이나 ID 기반 정책으로 함수에 대한 접근을 부여할 수 있어요. 권한의 범위는 정책을 함수에 적용하는지 함수의 한 버전에 적용하는지에 따라 달라져요.
함수 별칭을 사용하면 이벤트 소스와 AWS Identity and Access Management(IAM) 정책 관리를 단순화할 수 있어요.