Lambda 함수 상태

Lambda 함수 상태 (Lambda function states)

Lambda는 모든 함수의 구성에 State 필드를 포함해서 함수가 호출할 준비가 되었는지 나타내요. State는 함수의 현재 상태에 대한 정보를 제공하며, 함수를 성공적으로 호출할 수 있는지 여부도 포함해요. 함수 상태는 함수 호출의 동작이나 함수가 코드를 실행하는 방식을 바꾸지 않아요.

참고 SnapStart 함수의 함수 상태 정의는 조금 다르게 동작해요. 자세한 내용은 Lambda SnapStart와 함수 상태를 참고하세요.

많은 경우 DynamoDB 테이블이 호출 사이의 상태를 유지하는 이상적인 방법인데, 낮은 지연 시간의 데이터 접근을 제공하고 Lambda 서비스와 함께 확장할 수 있기 때문이에요. Lambda용 Amazon EFS를 사용 중이라면 데이터를 여기에 저장할 수도 있는데, 파일 시스템 스토리지에 낮은 지연 시간으로 접근할 수 있어요.

함수 상태는 다음과 같아요.

  • Pending — Lambda가 함수를 만든 뒤 상태를 pending으로 설정해요. pending 상태 동안 Lambda는 VPC나 EFS 리소스 같은 함수용 리소스를 만들거나 구성하려 해요. Lambda는 pending 상태 동안 함수를 호출하지 않아요. 함수를 대상으로 하는 호출이나 다른 API 작업은 실패해요.
  • Active — Lambda가 리소스 구성과 프로비저닝을 완료하면 함수가 active 상태로 전환돼요. 함수는 active 상태일 때만 성공적으로 호출될 수 있어요.
  • Failed — 리소스 구성이나 프로비저닝에서 오류가 발생했음을 나타내요. 함수 생성이 실패하면 Lambda가 함수 상태를 failed로 설정하고, 함수를 삭제하고 다시 만들어야 해요.
  • Inactive — 함수가 충분히 오래 유휴 상태로 있어서 Lambda가 함수에 구성됐던 외부 리소스를 되찾아가면(reclaim) 함수가 inactive가 돼요. inactive 함수를 호출하려 하면 호출이 실패하고, Lambda는 함수 리소스가 다시 만들어질 때까지 함수를 pending 상태로 설정해요. Lambda가 리소스 재생성에 실패하면 함수는 inactive 상태로 돌아가요. 오류를 해결하고 함수를 다시 배포해 active 상태로 복원해야 할 수도 있어요. Lambda가 함수의 소스 아티팩트에 접근할 수 없게 되어도 함수는 Inactive 상태로 전환돼요. 이는 이미지가 Amazon ECR에서 삭제되거나 권한이 철회된 컨테이너 이미지 함수, 그리고 소스 객체가 삭제되거나 버킷 정책 권한이 철회된 자체 관리 S3 코드 스토리지를 쓰는 .zip 함수에 적용돼요. 함수를 복원하려면 소스 아티팩트에 대한 접근을 복원하고 함수를 업데이트해요.

SDK 기반 자동화 워크플로우를 쓰거나 Lambda 서비스 API를 직접 호출한다면, 호출 전에 함수 상태를 확인해 active인지 검증하세요. 이는 Lambda API 작업 GetFunction으로 하거나, AWS SDK for Java 2.0으로 waiter를 구성해서 할 수 있어요.

aws lambda get-function --function-name my-function --query 'Configuration.[State, LastUpdateStatus]'

다음 출력이 보여야 해요.

[
 "Active",
 "Successful"
]

함수 생성이 pending인 동안 다음 작업들은 실패해요.

업데이트 중 함수 상태

Lambda에는 함수를 업데이트하는 두 가지 작업이 있어요.

Lambda는 LastUpdateStatus 속성으로 이 업데이트 작업의 진행 상황을 추적해요. 업데이트가 진행 중일 때("LastUpdateStatus": "InProgress"):

업데이트가 실패할 때("LastUpdateStatus": "Failed"):

  • 함수의 State는 Active로 유지돼요.
  • 호출은 함수의 이전 코드와 구성을 계속 사용해요.

예시 GetFunctionConfiguration 응답

다음 예시는 업데이트를 겪고 있는 함수에 대한 GetFunctionConfiguration 요청의 결과예요.

{
  "FunctionName": "my-function",
  "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function",
  "Runtime": "nodejs24.x",
  "VpcConfig": {
    "SubnetIds": [
      "subnet-071f712345678e7c8",
      "subnet-07fd123456788a036",
      "subnet-0804f77612345cacf"
    ],
    "SecurityGroupIds": [
      "sg-085912345678492fb"
    ],
    "VpcId": "vpc-08e1234569e011e83"
  },
  "State": "Active",
  "LastUpdateStatus": "InProgress",
  ...
}

출처: AWS Lambda 개발자 안내서

더 알아보기 (Learn more)