기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Step Functions의 활동에 대해 알아보기
액티비티는 작업자가 작업을 수행하는 스테이트 머신에서 작업을 수행할 수 있게 해주는 AWS Step Functions 기능입니다. 이 작업은 Amazon Elastic Compute Cloud (Amazon), Amazon Elastic Container Service (Amazon EC2ECS), 모바일 디바이스 등 기본적으로 어디에서든 호스팅할 수 있습니다.
개요
에서 AWS Step Functions액티비티는 어딘가에서 실행 중인 코드 (액티비티 워커라고 함) 를 상태 머신의 특정 작업과 연결하는 방법입니다. Step Functions 콘솔을 사용하거나 CreateActivity
를 직접적으로 호출하여 활동을 만들 수 있습니다. 그러면 작업 상태에 대한 Amazon 리소스 이름 (ARN) 이 제공됩니다. 이를 ARN 사용하여 액티비티 워커의 작업에 대한 작업 상태를 폴링할 수 있습니다.
참고
활동은 버전 관리되지 않으며 이전 버전과 호환이 가능합니다. 이전 버전과 호환되지 않는 방식으로 활동을 변경해야 하는 경우 Step Functions에서 고유한 이름을 사용하여 새 활동을 만드세요.
액티비티 워커는 Amazon EC2 인스턴스에서 실행되는 애플리케이션, AWS Lambda
함수, 모바일 디바이스 등 어디서나 호스팅되는 HTTP 연결을 만들 수 있는 모든 애플리케이션이 될 수 있습니다. Step Functions에서 활동 작업 상태에 이르면 워크플로는 활동 작업자가 작업을 폴링할 때까지 기다립니다. 활동 워커는 관련 활동에 ARN 대해 를 사용하고 GetActivityTask
전송하여 Step Functions를 폴링합니다. GetActivityTask
input
(작업에 대한 JSON 입력 문자열) 및 a taskToken
(작업의 고유 식별자) 를 포함하는 응답을 반환합니다. 활동 작업자는 업무를 완료 후 SendTaskSuccess
또는 SendTaskFailure
를 사용하여 성공 또는 실패 보고서를 작성할 수 있습니다. 이 두 개의 호출에서는 이 작업의 결과를 연결하기 위해 GetActivityTask
에서 제공한 taskToken
을 사용합니다.
APIs액티비티 태스크 관련
Step APIs Functions를 사용하면 활동을 생성 및 나열하고, 작업을 요청하고, 워커의 결과를 기반으로 상태 머신의 흐름을 관리할 수 있습니다.
액티비티와 관련된 Step APIs Functions는 다음과 같습니다.
참고
GetActivityTask
를 사용하여 활동 작업에 대해 폴링하면 일부 구현에서 지연 시간이 발생할 수 있습니다. 액티비티 태스크를 폴링할 때 지연 시간 방지을 참조하세요.
활동 작업이 완료할 때까지 대기
작업 정의에서 TimeoutSeconds
를 설정하여 상태 대기 시간을 설정하십시오. 작업 활성화 및 대기 상태를 유지하려면 TimeoutSeconds
에 설정된 시간 내에서 SendTaskHeartbeat
를 사용하여 활동 작업자의 하트비트를 정기적으로 전송하십시오. 긴 제한 시간을 구성하고 하트비트를 능동적으로 전송하면 Step Functions의 활동은 실행이 완료될 때까지 최대 1년을 대기할 수 있습니다.
예를 들어, 시간이 오래 걸리는 프로세스의 결과를 대기하는 워크플로우가 필요한 경우 다음과 같이 하십시오.
-
콘솔을 사용하거나
CreateActivity
를 사용하여 활동을 생성합니다. 활동을 기록해 두십시오ARN. -
스테이트 머신 정의 및 세트의 액티비티 태스크 ARN 상태에서 이를 참조하세요
TimeoutSeconds
. -
해당 액티비티를 사용하고
GetActivityTask
참조하여 작업을 폴링하는 액티비티 워커를 구현하세요. ARN -
작업이 시간 초과되지 않도록 하려면 상태 시스템 작업 정의에서
HeartbeatSeconds
에 설정한 시간 내에서SendTaskHeartbeat
를 정기적으로 사용하십시오. -
상태 시스템의 실행을 시작하십시오.
-
활동 작업자의 프로세스를 시작하십시오.
이 활동 작업 상태에 이르면 실행이 일시 정지하고 활동 작업자가 작업에 대해 폴링할 때까지 대기합니다. 활동 작업자에게 taskToken
이 제공되면 워크플로우는 SendTaskSuccess
또는 SendTaskFailure
이 상태를 제공할 때까지 대기합니다. 이 실행에서 TimeoutSeconds
에 구성된 시간보다 먼저 이 가운데 하나 또는 SendTaskHeartbeat
호출을 수신하지 않으면 실행이 실패하고 실행 기록에 ExecutionTimedOut
이벤트가 포함됩니다.
예: Ruby의 액티비티 워커
다음은 를 사용하여 자체 액티비티 워커를 구현하는 AWS SDK for Ruby 방법을 보여주는 예제 액티비티 워커입니다.
이 코드는 폴러 및 활동 작업자용 스레드 수를 구성할 수 있는 소비자-생산자 패턴을 구현합니다. 폴러 스레드는 지속적으로 활동 작업을 폴링합니다. 검색된 활동 작업은 활동 스레드가 픽업할 수 있도록 경계가 있는 차단 대기열을 통해 전달됩니다.
-
자세한 내용은 AWS SDK for Ruby API참조를 참조하십시오.
-
이 코드와 관련 리소스를 다운로드하려면 의 step-functions-ruby-activity-worker
저장소를 참조하십시오. GitHub
아래 Ruby 코드는 이 Ruby 활동 작업자 예제에 대한 주 진입점입니다.
require_relative '
../lib/step_functions/activity
' credentials = Aws::SharedCredentials.new region = 'us-west-2
' activity_arn = 'ACTIVITY_ARN
' activity = StepFunctions::Activity.new( credentials: credentials, region: region, activity_arn: activity_arn, workers_count: 1, pollers_count: 1, heartbeat_delay: 30 ) # The start method takes as argument the block that is the actual logic of your custom activity. activity.start do |input| { result: :SUCCESS, echo: input['value'] } end
이 코드에는 기본값이 포함되어 있으며, 사용자가 각 값을 본인의 활동을 참조하도록 변경하고 특정 구현에 맞춰 조정할 수 있습니다. 이 코드는 실제 구현 로직을 입력으로 사용하며 사용자가 특정 활동 및 자격 증명을 참조하고 스레드 수 및 하트비트 지연을 구성할 수 있습니다. 코드에 대한 자세한 내용과 다운로드 방법은 Step Functions Ruby Activity Worker
Item | 설명 |
---|---|
|
다음 활동 작업자 코드 예제의 상대 경로입니다. |
|
AWS 활동 지역. |
|
활동 작업자용 스레드 수입니다. 대부분의 구현에서는 10~20개 스레드면 충분할 것입니다. 활동 처리 시간이 길수록 더 많은 스레드가 필요할 수 있습니다. 초당 프로세스 활동 수에 활동 처리 지연 시간(초)의 99 백분위를 곱하면 추정치를 구할 수 있습니다. |
|
폴러용 스레드 수입니다. 대부분의 구현에서는 10~20개 스레드면 충분할 것입니다. |
|
하트비트 간 지연 시간(초)입니다. |
input |
활동의 구현 로직입니다. |
다음 단계
활동 작업자를 사용하는 상태 머신을 생성하는 방법에 대한 자세한 내용은 다음을 참조하십시오.