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 CLI를 설치하고 구성합니다. 지침은 AWS CLI 설치를 참조하세요.
- 함수 코드와 durable execution SDK로 배포 패키지를 만듭니다.
- 체크포인트 권한이 있는 IAM 실행 역할을 만듭니다.
실행 역할 만들기
기본 Lambda 실행과 체크포인트 작업에 대한 권한이 있는 IAM 역할을 만듭니다.
실행 역할을 만들려면:
- Lambda가 역할을 수임할 수 있게 하는 신뢰 정책 문서를 만듭니다. 이것을
trust-policy.json으로 저장합니다:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
- 역할을 만듭니다:
aws iam create-role \
--role-name durable-function-role \
--assume-role-policy-document file://trust-policy.json
- 체크포인트 작업과 기본 실행용 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을 만들려면:
- 함수 코드와 종속성을 .zip 파일로 패키징합니다:
zip -r function.zip index.mjs node_modules/
참고
Java 기반 durable functions의 경우 함수 코드와 종속성을 단일 .zip 파일 또는 Java Archive(JAR) 파일로 컴파일해야 합니다. 자세한 내용은 .zip 또는 JAR 파일 아카이브로 Java Lambda 함수 배포를 참조하세요.
- 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 코드를 업데이트하고 새 버전을 게시합니다.
업데이트 및 새 버전 게시:
- 함수 코드를 업데이트합니다:
aws lambda update-function-code \
--function-name myDurableFunction \
--zip-file fileb://function.zip
- 업데이트가 완료될 때까지 기다립니다:
aws lambda wait function-updated \
--function-name myDurableFunction
- 새 버전을 게시합니다:
aws lambda publish-version \
--function-name myDurableFunction \
--description "Updated order processing logic"
- 별칭이 새 버전을 가리키도록 업데이트합니다:
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 멱등성