View a markdown version of this page

AWS CLI를 사용하여 Lambda 지속성 함수 배포 및 간접 호출 - AWS Lambda

AWS CLI를 사용하여 Lambda 지속성 함수 배포 및 간접 호출

AWS CLI를 사용하여 필수 명령으로 Lambda 지속성 함수를 생성 및 배포합니다. 이 접근 방식을 사용하면 배포 프로세스의 각 단계를 직접 제어할 수 있습니다.

사전 조건

  • AWS CLI를 설치하고 구성합니다. 지침은 AWS CLI 설치를 참조하세요.

  • 함수 코드와 지속성 실행 SDK를 사용하여 배포 패키지를 생성합니다.

  • 체크포인트 권한을 가진 IAM 실행 역할을 생성합니다.

실행 역할 생성

기본 Lambda 실행 및 체크포인트 작업에 대한 권한이 있는 IAM 역할을 생성합니다.

실행 역할을 만들려면
  1. Lambda의 역할 수임을 허용하는 신뢰 정책 문서를 생성합니다. trust-policy.json으로 저장합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 역할을 생성합니다.

    aws iam create-role \ --role-name durable-function-role \ --assume-role-policy-document file://trust-policy.json
  3. 체크포인트 작업 및 기본 실행을 위한 지속성 실행 정책을 연결합니다.

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

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

지속성 함수 생성

--durable-config 파라미터를 사용하여 지속성 함수를 생성합니다.

지속성 함수 생성
  1. 종속성이 포함된 함수 코드를 .zip 파일로 패키징합니다.

    zip -r function.zip index.mjs node_modules/
    참고

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

  2. 지속성 실행이 활성화된 함수를 생성합니다.

    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}'
참고

함수를 생성할 때만 지속성 실행을 활성화할 수 있습니다. 기존 함수에서는 활성화할 수 없습니다.

버전 게시

지속성 함수는 $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

지속성 함수 간접 호출

정규화된 ARN(버전 또는 별칭)을 사용하여 지속성 함수를 간접 호출합니다.

참고

멱등적 간접 호출: 실패한 간접 호출을 재시도할 때 중복 실행을 방지하려면 최대 1회 실행 의미 체계를 보장하는 실행 이름을 제공할 수 있습니다. 자세한 내용은 멱등성을 참조하세요.

동기식 간접 호출

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를 사용할 수 있습니다. 프로덕션 워크로드의 경우 게시된 버전 또는 별칭을 사용합니다.

지속성 실행 관리

다음 명령을 사용하여 지속성 함수 실행을 관리하고 모니터링합니다.

실행 나열

지속성 함수에 대한 모든 실행을 나열합니다.

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
실행 중지

지속성 실행을 중지합니다.

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

함수 코드 업데이트

지속성 함수 코드를 업데이트하고 새 버전을 게시합니다.

새 버전 업데이트 및 게시
  1. 함수 코드를 업데이트합니다.

    aws lambda update-function-code \ --function-name myDurableFunction \ --zip-file fileb://function.zip
  2. 업데이트가 완료될 때까지 대기합니다.

    aws lambda wait function-updated \ --function-name myDurableFunction
  3. 새 버전을 게시합니다.

    aws lambda publish-version \ --function-name myDurableFunction \ --description "Updated order processing logic"
  4. 새 버전을 가리키도록 별칭을 업데이트합니다.

    aws lambda update-alias \ --function-name myDurableFunction \ --name prod \ --function-version 2
중요

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

함수 로그 보기

CloudWatch Logs에서 지속성 함수의 로그를 봅니다.

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

특정 실행에 대해 로그를 필터링합니다.

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

리소스 정리

지속성 함수 및 관련 리소스를 삭제합니다.

# 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를 사용하여 지속성 함수를 배포하면 다음 작업을 할 수 있습니다.

  • list-durable-executions-by-functionget-durable-execution 명령을 사용하여 실행 모니터링

  • AWS CloudTrail 데이터 이벤트에서 체크포인트 작업 보기

  • 실행 실패 또는 장기 실행에 대한 CloudWatch 경보 설정

  • 쉘 스크립트 또는 CI/CD 파이프라인을 사용하여 배포 자동화

Lambda에 대해 사용 가능한 AWS CLI 명령에 대한 자세한 내용은 AWS CLI 명령 레퍼런스를 참조하세요.