기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Lambda를 사용하여 작업 상태를 폴링하고 AWS Batch
이 샘플 프로젝트는 다음을 생성합니다. AWS Batch 잡 폴러. 다음을 구현합니다. AWS Step Functions 다음을 사용하는 스테이트 머신 AWS Lambda 다음을 확인하는 Wait
상태 루프를 만들려면 AWS Batch
작업.
이 샘플 프로젝트는 Step Functions 워크플로에서 리소스를 제출하도록 모든 리소스를 만들고 구성합니다. AWS Batch 작업은 성공적으로 종료되기 전에 작업이 완료될 때까지 기다립니다.
참고
또한 Lambda 함수를 사용하지 않고 이 패턴을 구현할 수 있습니다. 제어에 대한 자세한 내용은 AWS Batch 직접 참조하십시오Step Functions와 서비스 통합.
이 샘플 프로젝트는 상태 머신, 두 개의 Lambda 함수 및 AWS Batch 대기열에 넣고 관련 권한을 구성합니다. IAM
방법에 대한 자세한 내용은 AWS Step Functions 다른 사람을 제어할 수 있습니다. AWS 서비스, 참조Step Functions와 서비스 통합.
1단계: 상태 시스템 만들기
-
Step Functions 콘솔
을 열고 상태 시스템 생성을 선택합니다. -
검색 상자에
Job Poller
를 입력한 다음 반환된 검색 결과에서 작업 폴러를 선택합니다. -
다음을 선택하여 계속 진행합니다.
-
데모 실행을 선택하여 읽기 전용 및 ready-to-deploy 워크플로를 만들거나 빌드 온을 선택하여 빌드하고 나중에 배포할 수 있는 편집 가능한 상태 머신 정의를 생성합니다.
이 샘플 프로젝트는 다음 리소스를 배포합니다.
-
제출을 위한 세 가지 Lambda 함수 AWS Batch 작업, 제출된 파일의 현재 상태 가져오기 AWS Batch 작업 및 최종 작업 완료 상태
-
원래 요청 ping에 대한 AWS Batch job
-
원래 요청 ping에 대한 AWS Step Functions 상태 시스템
-
관련 AWS Identity and Access Management (IAM) 역할
다음 이미지에서는 작업 폴러 샘플 프로젝트의 워크플로 그래프를 보여줍니다.
-
-
템플릿 사용을 선택하여 계속 선택합니다.
다음 단계는 이전 선택에 따라 달라집니다.
-
데모 실행 — 에서 배포한 리소스로 읽기 전용 프로젝트를 만들기 전에 상태 머신을 검토할 수 있습니다. AWS CloudFormation 다음 주소로 AWS 계정.
상태 머신 정의를 볼 수 있으며 준비가 되면 Deploy and run을 선택하여 프로젝트를 배포하고 리소스를 생성할 수 있습니다.
배포하는 데 리소스 및 권한을 생성하는 데 최대 10분이 걸릴 수 있습니다. Stack ID 링크를 사용하여 진행 상황을 모니터링할 수 있습니다. AWS CloudFormation.
배포가 완료되면 콘솔에서 새 상태 머신을 확인할 수 있습니다.
-
기반 구축 — 워크플로 정의를 검토하고 편집할 수 있습니다. 사용자 지정 워크플로를 실행하기 전에 샘플 프로젝트에서 자리 표시자의 값을 설정해야 할 수도 있습니다.
참고
계정에 배포된 서비스에는 표준 요금이 적용될 수 있습니다.
2단계: 상태 시스템 실행
모든 리소스가 프로비저닝되고 배포되면 다음과 비슷한 예제 입력과 함께 실행 시작 대화 상자가 표시됩니다.
{
"jobName": "my-job",
"jobDefinition": "arn:aws:batch:us-east-2:123456789012:job-definition/SampleJobDefinition-343f54b445d5312:1",
"jobQueue": "arn:aws:batch:us-east-2:123456789012:job-queue/SampleJobQueue-4d9d696031e1449",
"wait_time": 60
}
참고
wait_time
은 Wait
상태에 60초마다 루프를 실행하도록 명령합니다.
-
실행 시작 대화 상자에서 다음을 수행합니다.
-
(선택 사항) 생성된 기본값을 재정의하려면 사용자 지정 실행 이름을 입력합니다.
ASCII비이름 및 로깅
Step Functions는 ASCII -자가 아닌 문자를 포함하는 상태 머신, 실행, 액티비티 및 레이블의 이름을 허용합니다. CloudWatchAmazon에서는 이러한 문자를 사용할 수 없으므로 지표를 추적할 수 있도록 ASCII 문자만 사용하는 것이 좋습니다 CloudWatch.
-
(선택 사항) 입력 상자에 입력 값을 로 입력합니다JSON. 데모를 실행 중인 경우 이 단계를 건너뛸 수 있습니다.
-
실행 시작을 선택합니다.
Step Functions 콘솔은 그래프 보기에서 상태를 선택하여 단계 세부 정보 창에서 관련 정보를 탐색할 수 있는 실행 세부 정보 페이지로 안내합니다.
예를 들어, 현재 상황의 변화를 보려면 AWS Batch 작업 및 실행 결과 반복을 보려면 [출력] 탭을 선택합니다.
다음 이미지에서는 그래프 보기의 실행 상태 그래프를 보여줍니다. 또한 출력 탭에서 선택한 단계의 실행 출력도 보여줍니다.
-
예제 상태 머신 코드
이 샘플 프로젝트의 스테이트 머신은 다음과 통합됩니다. AWS Lambda 제출하려면 AWS Batch 직업. 이 예제 상태 머신을 탐색하여 Step Functions가 Lambda를 제어하는 방법을 살펴보고 AWS Batch.
방법에 대한 자세한 내용은 AWS Step Functions 다른 사람을 제어할 수 있습니다. AWS 서비스, 참조Step Functions와 서비스 통합.
{
"Comment": "An example of the Amazon States Language that runs an AWS Batch job and monitors the job until it completes.",
"StartAt": "Submit Job",
"States": {
"Submit Job": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPol-SubmitJobFunction-jDaYcl4cx55r",
"ResultPath": "$.guid",
"Next": "Wait X Seconds"
},
"Wait X Seconds": {
"Type": "Wait",
"SecondsPath": "$.wait_time",
"Next": "Get Job Status"
},
"Get Job Status": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPoll-CheckJobFunction-1JkJwY10vonI",
"Next": "Job Complete?",
"InputPath": "$.guid",
"ResultPath": "$.status"
},
"Job Complete?": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.status",
"StringEquals": "FAILED",
"Next": "Job Failed"
},
{
"Variable": "$.status",
"StringEquals": "SUCCEEDED",
"Next": "Get Final Job Status"
}
],
"Default": "Wait X Seconds"
},
"Job Failed": {
"Type": "Fail",
"Cause": "AWS Batch Job Failed",
"Error": "DescribeJob returned FAILED"
},
"Get Final Job Status": {
"Type": "Task",
"Resource": "arn:aws::lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPoll-CheckJobFunction-1JkJwY10vonI",
"InputPath": "$.guid",
"End": true
}
}
}