AWS CLI로 Lambda durable functions 배포 및 호출

AWS CLI로 Lambda durable functions 배포 및 호출 (Deploy and invoke Lambda durable functions with the AWS CLI)

AWS CLI를 사용해 명령형 명령으로 Lambda durable functions를 만들고 배포합니다. 이 접근 방식은 배포 프로세스의 각 단계를 직접 제어할 수 있게 합니다.

출처: AWS Lambda 개발자 안내서

본문

사전 조건

  • AWS CLI를 설치하고 구성합니다. 지침은 AWS CLI 설치를 참조하세요.
  • 함수 코드와 durable execution SDK로 배포 패키지를 만듭니다.
  • 체크포인트 권한이 있는 IAM 실행 역할을 만듭니다.

실행 역할 만들기

기본 Lambda 실행과 체크포인트 작업에 대한 권한이 있는 IAM 역할을 만듭니다.

실행 역할을 만들려면:

  1. Lambda가 역할을 수임할 수 있게 하는 신뢰 정책 문서를 만듭니다. 이것을 trust-policy.json으로 저장합니다:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
  1. 역할을 만듭니다:
aws iam create-role \
  --role-name durable-function-role \
  --assume-role-policy-document file://trust-policy.json
  1. 체크포인트 작업과 기본 실행용 durable 실행 정책을 연결합니다:
aws iam attach-role-policy \
  --role-name durable-function-role \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy

AWSLambdaBasicDurableExecutionRolePolicy 관리형 정책에는 체크포인트 작업(lambda:CheckpointDurableExecution 및 lambda:GetDurableExecutionState)과 기본 Lambda 실행에 필요한 권한이 포함됩니다.

durable function 만들기

--durable-config 파라미터로 durable function을 만듭니다.

durable function을 만들려면:

  1. 함수 코드와 종속성을 .zip 파일로 패키징합니다:
zip -r function.zip index.mjs node_modules/

참고

Java 기반 durable functions의 경우 함수 코드와 종속성을 단일 .zip 파일 또는 Java Archive(JAR) 파일로 컴파일해야 합니다. 자세한 내용은 .zip 또는 JAR 파일 아카이브로 Java Lambda 함수 배포를 참조하세요.

  1. durable execution을 활성화한 채 함수를 만듭니다:
aws lambda create-function \
  --function-name myDurableFunction \
  --runtime nodejs22.x \
  --role arn:aws:iam::123456789012:role/durable-function-role \
  --handler index.handler \
  --zip-file fileb://function.zip \
  --durable-config '{"ExecutionTimeout": 3600, "RetentionPeriodInDays": 7}'

참고

durable execution은 함수를 만들 때만 활성화할 수 있습니다. 기존 함수에서는 활성화할 수 없습니다.

버전 게시

durable functions는 $LATEST 버전 한정자를 사용해 호출할 수 있지만, 코드의 결정적 실행을 보장하려면 항상 안정적인 버전을 가리키는 한정된 ARN을 사용해야 합니다.

aws lambda publish-version \
  --function-name myDurableFunction \
  --description "Initial version"

이 명령은 버전 ARN을 반환합니다. ARN 끝의 버전 번호(예: :1)를 기록하세요.

선택적으로 버전을 가리키는 별칭을 만듭니다:

aws lambda create-alias \
  --function-name myDurableFunction \
  --name prod \
  --function-version 1

durable function 호출

한정된 ARN(버전 또는 별칭)을 사용해 durable function을 호출합니다.

참고

멱등성 호출: 실패한 호출을 재시도할 때 중복 실행을 방지하기 위해 최대 한 번(at-most-once) 실행 의미 체계를 보장하는 실행 이름을 제공할 수 있습니다. 자세한 내용은 멱등성을 참조하세요.

동기 호출:

15분 안에 완료되는 실행에는 동기 호출을 사용합니다:

aws lambda invoke \
  --function-name myDurableFunction:1 \
  --payload '{"orderId": "order-12345"}' \
  --cli-binary-format raw-in-base64-out \
  response.json

또는 별칭 사용:

aws lambda invoke \
  --function-name myDurableFunction:prod \
  --payload '{"orderId": "order-12345"}' \
  --cli-binary-format raw-in-base64-out \
  response.json

비동기 호출:

장기 실행에는 비동기 호출을 사용합니다:

aws lambda invoke \
  --function-name myDurableFunction:prod \
  --invocation-type Event \
  --payload '{"orderId": "order-12345"}' \
  --cli-binary-format raw-in-base64-out \
  response.json

비동기 호출을 사용하면 Lambda는 즉시 반환합니다. 함수는 백그라운드에서 계속 실행됩니다.

참고

프로토타이핑과 콘솔 테스트에는 $LATEST를 사용할 수 있습니다. 프로덕션 워크로드에는 게시된 버전이나 별칭을 사용하세요.

durable 실행 관리

다음 명령을 사용해 durable function 실행을 관리하고 모니터링합니다.

실행 나열:

durable function의 모든 실행을 나열합니다:

aws lambda list-durable-executions-by-function \
  --function-name myDurableFunction

실행 세부 정보 가져오기:

특정 실행에 대한 세부 정보를 가져옵니다:

aws lambda get-durable-execution \
  --durable-execution-arn arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id

실행 기록 가져오기:

실행의 체크포인트 기록을 봅니다:

aws lambda get-durable-execution-history \
  --durable-execution-arn arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id

실행 중지:

실행 중인 durable execution을 중지합니다:

aws lambda stop-durable-execution \
  --durable-execution-arn arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id

함수 코드 업데이트

durable function 코드를 업데이트하고 새 버전을 게시합니다.

업데이트 및 새 버전 게시:

  1. 함수 코드를 업데이트합니다:
aws lambda update-function-code \
  --function-name myDurableFunction \
  --zip-file fileb://function.zip
  1. 업데이트가 완료될 때까지 기다립니다:
aws lambda wait function-updated \
  --function-name myDurableFunction
  1. 새 버전을 게시합니다:
aws lambda publish-version \
  --function-name myDurableFunction \
  --description "Updated order processing logic"
  1. 별칭이 새 버전을 가리키도록 업데이트합니다:
aws lambda update-alias \
  --function-name myDurableFunction \
  --name prod \
  --function-version 2

중요

실행 중인 실행은 시작된 버전을 계속 사용합니다. 새 호출은 업데이트된 별칭 버전을 사용합니다.

함수 로그 보기

CloudWatch Logs에서 durable function의 로그를 봅니다:

aws logs tail /aws/lambda/myDurableFunction --follow

특정 실행에 대한 로그를 필터링합니다:

aws logs filter-log-events \
  --log-group-name /aws/lambda/myDurableFunction \
  --filter-pattern "exec-abc123"

리소스 정리

durable function과 관련 리소스를 삭제합니다:

# Delete the function
aws lambda delete-function --function-name myDurableFunction

# Delete the IAM role policies
aws iam detach-role-policy \
  --role-name durable-function-role \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

aws iam detach-role-policy \
  --role-name durable-function-role \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy

# Delete the role
aws iam delete-role --role-name durable-function-role

다음 단계

AWS CLI로 durable function을 배포한 후:

  • list-durable-executions-by-function 및 get-durable-execution 명령으로 실행 모니터링
  • AWS CloudTrail 데이터 이벤트에서 체크포인트 작업 보기
  • 실행 실패 또는 장기 실행에 대한 CloudWatch 알람 설정
  • 셸 스크립트 또는 CI/CD 파이프라인을 사용해 배포 자동화

Lambda용 AWS CLI 명령에 대한 자세한 내용은 AWS CLI 명령 참조를 참조하세요.

더 알아보기 (Learn more)

  • Lambda durable functions
  • durable functions 지원 런타임
  • Lambda 멱등성