기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
맵 상태로 일괄 작업 실행
이 샘플 프로젝트는 Step Functions의 워크플로 상태 매핑 상태를 사용하여 팬아웃하는 방법을 보여줍니다. AWS Batch 작업.
이 프로젝트에서 Step Functions는 상태 머신을 사용하여 Lambda 함수를 호출하여 간단한 사전 처리를 수행한 다음 여러 개를 호출합니다. AWS Batch 워크플로 상태 매핑상태를 사용하여 병렬로 작업을 수행합니다.
1단계: 상태 시스템 만들기
-
Step Functions 콘솔
을 열고 상태 시스템 생성을 선택합니다. -
검색 상자에
Fan out a batch job
을 입력한 다음 반환된 검색 결과에서 배치 작업 팬아웃을 선택합니다. -
다음을 선택하여 계속 진행합니다.
-
데모 실행을 선택하여 읽기 전용 및 ready-to-deploy 워크플로를 생성하거나 빌드 온을 선택하여 빌드하고 나중에 배포할 수 있는 편집 가능한 상태 머신 정의를 생성합니다.
이 샘플 프로젝트는 다음 리소스를 배포합니다.
-
A Lambda 함수
-
원래 요청 ping에 대한 AWS Batch 작업 대기열
-
원래 요청 ping에 대한 AWS Step Functions 상태 시스템
-
관련 AWS Identity and Access Management (IAM) 역할
다음 이미지에서는 배치 작업 팬아웃 샘플 프로젝트의 워크플로 그래프를 보여줍니다.
-
-
템플릿 사용을 선택하여 계속 선택합니다.
다음 단계는 이전 선택에 따라 달라집니다.
-
데모 실행 — 에서 배포한 리소스로 읽기 전용 프로젝트를 만들기 전에 상태 머신을 검토할 수 있습니다. AWS CloudFormation 다음 주소로 AWS 계정.
상태 머신 정의를 볼 수 있으며 준비가 되면 Deploy and run을 선택하여 프로젝트를 배포하고 리소스를 생성할 수 있습니다.
배포하는 데 리소스 및 권한을 생성하는 데 최대 10분이 걸릴 수 있습니다. Stack ID 링크를 사용하여 진행 상황을 모니터링할 수 있습니다. AWS CloudFormation.
배포가 완료되면 콘솔에서 새 상태 머신을 확인할 수 있습니다.
-
기반 구축 — 워크플로 정의를 검토하고 편집할 수 있습니다. 사용자 지정 워크플로를 실행하기 전에 샘플 프로젝트에서 자리 표시자의 값을 설정해야 할 수도 있습니다.
참고
계정에 배포된 서비스에는 표준 요금이 적용될 수 있습니다.
2단계: 상태 시스템 실행
-
상태 시스템 페이지에서 샘플 프로젝트를 선택합니다.
-
샘플 프로젝트 페이지에서 실행 시작을 선택합니다.
-
실행 시작 대화 상자에서 다음을 수행합니다.
-
(선택 사항) 생성된 기본값을 재정의하려면 사용자 지정 실행 이름을 입력합니다.
ASCII비이름 및 로깅
Step Functions는 ASCII -자가 아닌 문자를 포함하는 상태 머신, 실행, 액티비티 및 레이블의 이름을 허용합니다. CloudWatchAmazon에서는 이러한 문자를 사용할 수 없으므로 지표를 추적할 수 있도록 ASCII 문자만 사용하는 것이 좋습니다 CloudWatch.
-
(선택 사항) 입력 상자에 입력 값을 로 입력합니다JSON. 데모를 실행 중인 경우 이 단계를 건너뛸 수 있습니다.
-
실행 시작을 선택합니다.
Step Functions 콘솔은 그래프 보기에서 상태를 선택하여 단계 세부 정보 창에서 관련 정보를 탐색할 수 있는 실행 세부 정보 페이지로 안내합니다.
-
예제 상태 머신 코드
이 샘플 프로젝트의 상태 머신은 다음과 통합됩니다. AWS Batch 그리고 SNS Amazon은 파라미터를 해당 리소스에 직접 전달합니다.
이 예제 스테이트 머신을 살펴보고 Step Functions가 어떻게 제어되는지 살펴보세요. AWS Batch Resource
필드의 Amazon SNS 리소스 이름 (ARN) 에 연결하고 서비스에 Parameters
전달하여 Amazon을 실행합니다API.
방법에 대한 자세한 내용은 AWS Step Functions 다른 사람을 제어할 수 있습니다. AWS 서비스, 참조Step Functions와 서비스 통합.
{
"Comment": "An example of the Amazon States Language for fanning out AWS Batch job",
"StartAt": "Generate batch job input",
"TimeoutSeconds": 3600,
"States": {
"Generate batch job input": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"FunctionName": "<GENERATE_BATCH_JOB_INPUT_LAMBDA_FUNCTION_NAME>
"
},
"Next": "Fan out batch jobs"
},
"Fan out batch jobs": {
"Comment": "Start multiple executions of batch job depending on pre-processed data",
"Type": "Map",
"End": true,
"ItemsPath": "$",
"Parameters": {
"BatchNumber.$": "$$.Map.Item.Value"
},
"Iterator": {
"StartAt": "Submit Batch Job",
"States": {
"Submit Batch Job": {
"Type": "Task",
"Resource": "arn:aws:states:::batch:submitJob.sync",
"Parameters": {
"JobName": "BatchJobFanOut",
"JobQueue": "<BATCH_QUEUE_ARN>
",
"JobDefinition": "<BATCH_JOB_DEFINITION_ARN>
"
},
"End": true
}
}
}
}
}
}
IAM예시
이 예시 AWS Identity and Access Management 샘플 프로젝트에서 생성된 (IAM) 정책에는 상태 머신 및 관련 리소스를 실행하는 데 필요한 최소 권한이 포함됩니다. IAM정책에 필요한 권한만 포함하는 것이 좋습니다.
예 BatchJobFanOutAccessPolicy
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"batch:SubmitJob",
"batch:DescribeJobs",
"batch:TerminateJob"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"events:PutTargets",
"events:PutRule",
"events:DescribeRule"
],
"Resource": [
"arn:aws:events:us-west-2
:123456789012
:rule/StepFunctionsGetEventsForBatchJobsRule"
],
"Effect": "Allow"
}
]
}
예 InvokeGenerateBatchJobMapLambdaPolicy
{ "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:
us-west-2
:123456789012
:function:StepFunctionsSample-BatchJobFa-GenerateBatchJobMap-444455556666
", "Effect": "Allow" } ] }
Step Functions를 다른 기능과 함께 사용할 IAM 때 구성하는 방법에 대한 자세한 내용은 AWS 서비스는 을 참조하십시오Step Functions가 통합 서비스를 위한 IAM 정책을 생성하는 방법.