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/AWSLambdaBasicExecutionRole
  4. 체크포인트 작업에 대한 정책을 생성합니다. checkpoint-policy.json으로 저장합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CheckpointDurableExecutions", "lambda:GetDurableExecutionState" ], "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:myDurableFunction" } ] }
  5. 체크포인트 정책을 생성하고 연결합니다.

    aws iam create-policy \ --policy-name durable-checkpoint-policy \ --policy-document file://checkpoint-policy.json aws iam attach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::ACCOUNT_ID:policy/durable-checkpoint-policy

지속성 함수 생성

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

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

    zip -r function.zip index.mjs node_modules/
  2. 지속성 실행이 활성화된 함수를 생성합니다.

    aws lambda create-function \ --function-name myDurableFunction \ --runtime nodejs22.x \ --role arn:aws:iam::ACCOUNT_ID:role/durable-function-role \ --handler index.handler \ --zip-file fileb://function.zip \ --durable-config '{"ExecutionTimeout": 10, "RetentionPeriodInDays":1}'
참고

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

버전 게시

지속성 함수는 간접 호출에 정규화된 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(버전 또는 별칭)을 사용하여 지속성 함수를 간접 호출합니다.

동기식 간접 호출

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는 즉시 반환합니다. 함수는 백그라운드에서 계속 실행됩니다.

지속성 실행 관리

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

실행 나열

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

aws lambda list-durable-executions \ --function-name myDurableFunction:prod
실행 세부 정보 가져오기

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

aws lambda get-durable-execution \ --function-name myDurableFunction:prod \ --execution-id exec-abc123
실행 내역 가져오기

실행에 대한 체크포인트 내역을 확인합니다.

aws lambda get-durable-execution-history \ --function-name myDurableFunction:prod \ --execution-id exec-abc123
실행 중지

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

aws lambda stop-durable-execution \ --function-name myDurableFunction:prod \ --execution-id exec-abc123

함수 코드 업데이트

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

새 버전 업데이트 및 게시
  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::ACCOUNT_ID:policy/durable-checkpoint-policy aws iam delete-policy \ --policy-arn arn:aws:iam::ACCOUNT_ID:policy/durable-checkpoint-policy # Delete the role aws iam delete-role --role-name durable-function-role

다음 단계

AWS CLI를 사용하여 지속성 함수를 배포하면 다음 작업을 할 수 있습니다.

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

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

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

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

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