Lambda SnapStart 활성화 및 관리
Lambda SnapStart 활성화 및 관리
SnapStart를 사용하려면 새 또는 기존 Lambda 함수에서 SnapStart를 활성화하세요. 그런 다음 함수 버전을 게시하고 호출하면 됩니다.
본문
Topics(주제)
- SnapStart 활성화 (콘솔)
- SnapStart 활성화 (AWS CLI)
- SnapStart 활성화 (API)
- Lambda SnapStart와 함수 상태
- 스냅샷 업데이트
- AWS SDK와 함께 SnapStart 사용
- CloudFormation, AWS SAM, AWS CDK와 함께 SnapStart 사용
- 스냅샷 삭제
SnapStart 활성화 (콘솔)
함수에 SnapStart 활성화하기
- Lambda 콘솔의 함수 페이지를 엽니다.
- 함수 이름을 선택합니다.
- Configuration(구성)을 선택한 다음 General configuration(일반 구성)을 선택합니다.
- General configuration 창에서 Edit(편집)을 선택합니다.
- Edit basic settings(기본 설정 편집) 페이지에서 SnapStart에 대해 Published versions를 선택합니다.
- Save(저장)를 선택합니다.
- 함수 버전을 게시합니다. Lambda가 코드를 초기화하고, 초기화된 실행 환경의 스냅샷을 만들고, 저지연 접근을 위해 스냅샷을 캐시해요.
- 함수 버전을 호출합니다.
SnapStart 활성화 (AWS CLI)
기존 함수에 SnapStart 활성화하기
-
update-function-configuration 명령을 --snap-start 옵션으로 실행해 함수 구성을 업데이트합니다.
aws lambda update-function-configuration \ --function-name my-function \ --snap-start ApplyOn=PublishedVersions -
publish-version 명령으로 함수 버전을 게시합니다.
aws lambda publish-version \ --function-name my-function -
get-function-configuration 명령을 버전 번호를 지정해 실행해 함수 버전에서 SnapStart가 활성화되었는지 확인합니다. 다음 예제는 버전 1을 지정해요.
aws lambda get-function-configuration \ --function-name my-function:{{1}}응답에 OptimizationStatus가
On이고 State가Active로 표시되면 SnapStart가 활성화되었고 지정된 함수 버전에 스냅샷이 있다는 뜻이에요."SnapStart": { "ApplyOn": "PublishedVersions", "OptimizationStatus": "On" }, "State": "Active", -
invoke 명령을 버전을 지정해 실행해 함수 버전을 호출합니다. 다음 예제는 버전 1을 호출해요.
aws lambda invoke \ --cli-binary-format raw-in-base64-out \ --function-name my-function:{{1}} \ --payload '{ "name": "Bob" }' \ response.jsoncli-binary-format 옵션은 AWS CLI version 2를 사용하는 경우 필수예요. 이를 기본 설정으로 만들려면
aws configure set cli-binary-format raw-in-base64-out을 실행하세요. 자세한 내용은 AWS Command Line Interface User Guide for Version 2의 AWS CLI 지원 전역 명령줄 옵션을 참고하세요.
새 함수를 만들 때 SnapStart 활성화하기
-
create-function 명령을 --snap-start 옵션으로 실행해 함수를 만듭니다. --role에는 실행 역할의 Amazon Resource Name(ARN)을 지정하세요. 참고
Java(버전 11+), Python(버전 3.12+), .NET(버전 8+)용 Lambda의 AWS 기본 이미지가 아닌 기본 이미지를 사용하는 컨테이너 이미지 함수로 SnapStart를 사용한다면, 컨테이너 이미지용 SnapStart 훅 구현의 지침을 따라 이미지를 SnapStart와 호환되게 만드세요.aws lambda create-function \ --function-name {{my-function}} \ --runtime "{{java25}}" \ --zip-file fileb://my-function.zip \ --handler my-function.handler \ --role {{arn:aws:iam::111122223333:role/lambda-ex}} \ --snap-start ApplyOn=PublishedVersions -
publish-version 명령으로 버전을 만듭니다.
aws lambda publish-version \ --function-name {{my-function}} -
get-function-configuration 명령을 버전 번호를 지정해 실행해 함수 버전에서 SnapStart가 활성화되었는지 확인합니다. 다음 예제는 버전 1을 지정해요.
aws lambda get-function-configuration \ --function-name my-function:{{1}}응답에 OptimizationStatus가
On이고 State가Active로 표시되면 SnapStart가 활성화되었고 지정된 함수 버전에 스냅샷이 있다는 뜻이에요."SnapStart": { "ApplyOn": "PublishedVersions", "OptimizationStatus": "On" }, "State": "Active", -
invoke 명령을 버전을 지정해 실행해 함수 버전을 호출합니다. 다음 예제는 버전 1을 호출해요.
aws lambda invoke \ --cli-binary-format raw-in-base64-out \ --function-name my-function:{{1}} \ --payload '{ "name": "Bob" }' \ response.jsoncli-binary-format 옵션은 AWS CLI version 2를 사용하는 경우 필수예요. 이를 기본 설정으로 만들려면
aws configure set cli-binary-format raw-in-base64-out을 실행하세요. 자세한 내용은 AWS Command Line Interface User Guide for Version 2의 AWS CLI 지원 전역 명령줄 옵션을 참고하세요.
SnapStart 활성화 (API)
SnapStart 활성화하기
-
다음 중 하나를 수행합니다:
- SnapStart 매개변수와 함께 CreateFunction API 작업을 사용해 SnapStart가 활성화된 새 함수를 만듭니다.
- SnapStart 매개변수와 함께 UpdateFunctionConfiguration 작업을 사용해 기존 함수에 SnapStart를 활성화합니다.
-
PublishVersion 작업으로 함수 버전을 게시합니다. Lambda가 코드를 초기화하고, 초기화된 실행 환경의 스냅샷을 만들고, 저지연 접근을 위해 스냅샷을 캐시해요.
-
GetFunctionConfiguration 작업으로 함수 버전에서 SnapStart가 활성화되었는지 확인합니다. 버전 번호를 지정해 해당 버전에서 SnapStart가 활성화되었는지 확인하세요. 응답에 OptimizationStatus가
On이고 State가Active로 표시되면 SnapStart가 활성화되었고 지정된 함수 버전에 스냅샷이 있다는 뜻이에요."SnapStart": { "ApplyOn": "PublishedVersions", "OptimizationStatus": "On" }, "State": "Active", -
Invoke 작업으로 함수 버전을 호출합니다.
Lambda SnapStart와 함수 상태
SnapStart를 사용할 때 다음 함수 상태가 발생할 수 있어요.
Pending
Lambda가 코드를 초기화하고 초기화된 실행 환경의 스냅샷을 찍고 있어요. 함수 버전에서 동작하는 모든 호출이나 기타 API 작업은 실패해요.
Active
스냅샷 생성이 완료되었고 함수를 호출할 수 있어요. SnapStart를 사용하려면 게시되지 않은 버전($LATEST)이 아니라 게시된 함수 버전을 호출해야 해요.
Inactive
Lambda가 소프트웨어 업데이트를 적용하기 위해 함수 스냅샷을 주기적으로 다시 생성할 때 Inactive 상태가 발생할 수 있어요. 이 경우 함수가 초기화에 실패하면 함수가 Inactive 상태로 들어갈 수 있어요.
Java 런타임을 사용하는 함수의 경우 Lambda는 호출 없이 14일이 지나면 스냅샷을 삭제해요. 14일 후 함수 버전을 호출하면 Lambda가 SnapStartNotReadyException 응답을 반환하고 새 스냅샷 초기화를 시작해요. 함수 버전이 Active 상태에 도달할 때까지 기다린 다음 다시 호출하세요.
Failed
Lambda가 초기화 코드를 실행하거나 스냅샷을 만들 때 오류를 만났어요.
스냅샷 업데이트
Lambda는 각 게시된 함수 버전에 대해 스냅샷을 만들어요. 스냅샷을 업데이트하려면 새 함수 버전을 게시하세요.
AWS SDK와 함께 SnapStart 사용
함수에서 AWS SDK 호출을 하려면 Lambda가 함수의 실행 역할을 수임해 일시적(ephemeral) 자격 증명 세트를 생성해요. 이러한 자격 증명은 함수 호출 중 환경 변수로 사용할 수 있어요. 코드에서 SDK에 자격 증명을 직접 제공할 필요가 없죠. 기본적으로 자격 증명 공급자 체인은 자격 증명을 설정할 수 있는 각 위치를 순차적으로 확인하고 첫 번째 사용 가능한 것을 선택해요 — 보통 환경 변수(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN)예요.
참고
SnapStart가 활성화되면 Lambda 런타임은 접근 키 환경 변수 대신 컨테이너 자격 증명(AWS_CONTAINER_CREDENTIALS_FULL_URI와 AWS_CONTAINER_AUTHORIZATION_TOKEN)을 자동으로 사용해요. 이렇게 하면 함수가 복원되기 전에 자격 증명이 만료되는 것을 방지할 수 있죠.
CloudFormation, AWS SAM, AWS CDK와 함께 SnapStart 사용
- AWS CloudFormation: 템플릿에 SnapStart 엔터티를 선언하세요.
- AWS Serverless Application Model (AWS SAM): 템플릿에 SnapStart 속성을 선언하세요.
- AWS Cloud Development Kit (AWS CDK): SnapStartProperty 타입을 사용하세요.
스냅샷 삭제
Lambda는 다음 경우 스냅샷을 삭제해요:
- 함수 또는 함수 버전을 삭제할 때.
- Java 런타임만 — 함수 버전을 14일 동안 호출하지 않을 때. 호출 없이 14일이 지나면 함수 버전이 Inactive 상태로 전환돼요. 14일 후 함수 버전을 호출하면 Lambda가
SnapStartNotReadyException응답을 반환하고 새 스냅샷 초기화를 시작해요. 함수 버전이 Active 상태에 도달할 때까지 기다린 다음 다시 호출하세요.
Lambda는 GDPR(General Data Protection Regulation)을 준수하여 삭제된 스냅샷과 관련된 모든 리소스를 제거해요.
더 알아보기 (Learn more)
- 콘솔·CLI·API로 SnapStart를 활성화하고, 함수 상태·스냅샷 업데이트·SDK 자격 증명·IaC 템플릿과 스냅샷 삭제까지 살펴보세요.