Step Functions의 활동에 대해 알아보기 - AWS Step Functions

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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를 폴링합니다. GetActivityTaskinput(작업에 대한 JSON 입력 문자열) 및 a taskToken(작업의 고유 식별자) 를 포함하는 응답을 반환합니다. 활동 작업자는 업무를 완료 후 SendTaskSuccess 또는 SendTaskFailure를 사용하여 성공 또는 실패 보고서를 작성할 수 있습니다. 이 두 개의 호출에서는 이 작업의 결과를 연결하기 위해 GetActivityTask에서 제공한 taskToken을 사용합니다.

APIs액티비티 태스크 관련

Step APIs Functions를 사용하면 활동을 생성 및 나열하고, 작업을 요청하고, 워커의 결과를 기반으로 상태 머신의 흐름을 관리할 수 있습니다.

액티비티와 관련된 Step APIs Functions는 다음과 같습니다.

참고

GetActivityTask를 사용하여 활동 작업에 대해 폴링하면 일부 구현에서 지연 시간이 발생할 수 있습니다. 액티비티 태스크를 폴링할 때 지연 시간 방지을 참조하세요.

활동 작업이 완료할 때까지 대기

작업 정의에서 TimeoutSeconds를 설정하여 상태 대기 시간을 설정하십시오. 작업 활성화 및 대기 상태를 유지하려면 TimeoutSeconds에 설정된 시간 내에서 SendTaskHeartbeat를 사용하여 활동 작업자의 하트비트를 정기적으로 전송하십시오. 긴 제한 시간을 구성하고 하트비트를 능동적으로 전송하면 Step Functions의 활동은 실행이 완료될 때까지 최대 1년을 대기할 수 있습니다.

예를 들어, 시간이 오래 걸리는 프로세스의 결과를 대기하는 워크플로우가 필요한 경우 다음과 같이 하십시오.

  1. 콘솔을 사용하거나 CreateActivity를 사용하여 활동을 생성합니다. 활동을 기록해 두십시오ARN.

  2. 스테이트 머신 정의 및 세트의 액티비티 태스크 ARN 상태에서 이를 참조하세요TimeoutSeconds.

  3. 해당 액티비티를 사용하고 GetActivityTask 참조하여 작업을 폴링하는 액티비티 워커를 구현하세요. ARN

  4. 작업이 시간 초과되지 않도록 하려면 상태 시스템 작업 정의에서 HeartbeatSeconds에 설정한 시간 내에서 SendTaskHeartbeat를 정기적으로 사용하십시오.

  5. 상태 시스템의 실행을 시작하십시오.

  6. 활동 작업자의 프로세스를 시작하십시오.

이 활동 작업 상태에 이르면 실행이 일시 정지하고 활동 작업자가 작업에 대해 폴링할 때까지 대기합니다. 활동 작업자에게 taskToken이 제공되면 워크플로우는 SendTaskSuccess 또는 SendTaskFailure이 상태를 제공할 때까지 대기합니다. 이 실행에서 TimeoutSeconds에 구성된 시간보다 먼저 이 가운데 하나 또는 SendTaskHeartbeat 호출을 수신하지 않으면 실행이 실패하고 실행 기록에 ExecutionTimedOut 이벤트가 포함됩니다.

예: Ruby의 액티비티 워커

다음은 를 사용하여 자체 액티비티 워커를 구현하는 AWS SDK for Ruby 방법을 보여주는 예제 액티비티 워커입니다.

이 코드는 폴러 및 활동 작업자용 스레드 수를 구성할 수 있는 소비자-생산자 패턴을 구현합니다. 폴러 스레드는 지속적으로 활동 작업을 폴링합니다. 검색된 활동 작업은 활동 스레드가 픽업할 수 있도록 경계가 있는 차단 대기열을 통해 전달됩니다.

아래 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 설명

require_relative

다음 활동 작업자 코드 예제의 상대 경로입니다.

region

AWS 활동 지역.

workers_count

활동 작업자용 스레드 수입니다. 대부분의 구현에서는 10~20개 스레드면 충분할 것입니다. 활동 처리 시간이 길수록 더 많은 스레드가 필요할 수 있습니다. 초당 프로세스 활동 수에 활동 처리 지연 시간(초)의 99 백분위를 곱하면 추정치를 구할 수 있습니다.

pollers_count

폴러용 스레드 수입니다. 대부분의 구현에서는 10~20개 스레드면 충분할 것입니다.

heartbeat_delay

하트비트 간 지연 시간(초)입니다.

input 활동의 구현 로직입니다.

다음 단계

활동 작업자를 사용하는 상태 머신을 생성하는 방법에 대한 자세한 내용은 다음을 참조하십시오.