As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Saiba mais sobre atividades em Step Functions
As atividades são um AWS Step Functions recurso que permite que você tenha uma tarefa em sua máquina de estado em que o trabalho é executado por um trabalhador que pode ser hospedado no Amazon Elastic Compute Cloud (AmazonEC2), no Amazon Elastic Container Service (AmazonECS), em dispositivos móveis, basicamente em qualquer lugar.
Visão geral
Em AWS Step Functions, as atividades são uma forma de associar o código executado em algum lugar (conhecido como agente de atividades) a uma tarefa específica em uma máquina de estado. Você pode criar uma atividade usando o console do Step Functions ou chamando CreateActivity
. Isso fornece um Amazon Resource Name (ARN) para o estado da sua tarefa. Use isso ARN para pesquisar o estado da tarefa do trabalho em seu trabalhador de atividades.
nota
As atividades não são versionadas e devem sempre ter compatibilidade com versões anteriores. Se for necessário fazer uma alteração incompatível com versões anteriores em uma atividade, crie uma nova atividade no Step Functions usando um nome exclusivo.
Um trabalhador de atividades pode ser um aplicativo executado em uma EC2 instância da Amazon, uma AWS Lambda
função, um dispositivo móvel: qualquer aplicativo que possa fazer uma HTTP conexão, hospedado em qualquer lugar. Quando o Step Functions atinge um estado de tarefa de atividade, o fluxo de trabalho aguarda um operador de atividade para fazer a sondagem de uma tarefa. Um funcionário da atividade pesquisa Step Functions usando GetActivityTask
e enviando o ARN para a atividade relacionada. GetActivityTask
retorna uma resposta incluindo input
(uma sequência de JSON entrada para a tarefa) e um taskToken
(um identificador exclusivo para a tarefa). Após o operador de atividade concluir seu trabalho, ele pode fornecer um relatório de êxito ou falha usando SendTaskSuccess
ou SendTaskFailure
. Essas duas chamadas usam o taskToken
fornecido por GetActivityTask
para associar o resultado a essa tarefa.
APIsRelacionado às tarefas de atividade
O Step Functions fornece APIs a criação e listagem de atividades, a solicitação de uma tarefa e o gerenciamento do fluxo de sua máquina de estado com base nos resultados de seu trabalhador.
A seguir estão as Step Functions APIs relacionadas às atividades:
nota
A sondagem de tarefas de atividade com GetActivityTask
pode causar latência em algumas implementações. Consulte Evitando a latência ao pesquisar tarefas de atividade.
Aguardar a conclusão de uma tarefa de atividade
Configure por quanto tempo um estado deve aguardar definindo TimeoutSeconds
na definição da tarefa. Para manter a tarefa ativa e em espera, envie uma pulsação periodicamente do operador de atividade usando SendTaskHeartbeat
dentro do tempo configurado em TimeoutSeconds
. Ao configurar uma longa duração do tempo limite e enviar uma pulsação de maneira ativa, uma atividade no Step Functions pode aguardar até um ano para uma execução ser concluída.
Por exemplo, se você precisa de um fluxo de trabalho que aguarda a saída de um longo processo, faça o seguinte:
-
Crie uma atividade usando o console ou
CreateActivity
. Anote a atividadeARN. -
Faça referência a isso ARN em um estado de tarefa de atividade na definição e no conjunto da sua máquina de estado
TimeoutSeconds
. -
Implemente um trabalhador de atividades que faça pesquisas de trabalho usando
GetActivityTask
, referenciando essa atividade. ARN -
Use
SendTaskHeartbeat
periodicamente dentro do período que você definiu emHeartbeatSeconds
na definição da tarefa da máquina de estado para evitar que a tarefa expire. -
Inicie uma execução da máquina de estado.
-
Inicie um processo do operador de atividade.
A execução coloca o estado de tarefa da atividade em pausa e aguarda que o operador de atividade faça sondagem de uma tarefa. Assim que um taskToken
é fornecido para o operador de atividade, seu fluxo de trabalho aguardará SendTaskSuccess
ou SendTaskFailure
para fornecer um status. Se a execução não receber nenhum deles ou receber uma chamada SendTaskHeartbeat
antes do tempo configurado em TimeoutSeconds
, ocorrerá uma falha na execução, e o histórico de execução conterá um evento ExecutionTimedOut
.
Exemplo: Activity Worker em Ruby
A seguir está um exemplo de trabalhador de atividades que usa o AWS SDK for Ruby para mostrar como implementar seu próprio operador de atividades.
O código implementa um padrão de produtor-consumidor com um número configurável de threads para agentes de sondagem e operadores de atividade. Os threads dos agentes de sondagem detectam longamente, de forma constante, a tarefa de atividade. Assim que uma tarefa de atividade é recuperada, ela é transmitida por meio de uma fila de bloqueio delimitada para ser capturada pelo thread de atividade.
-
Para obter mais informações, consulte a AWS SDK for Ruby APIReferência.
-
Para baixar esse código e os recursos relacionados, consulte o repositório step-functions-ruby-activity-worker
em. GitHub
O código Ruby a seguir é o ponto de entrada principal para esse operador de atividade do Ruby de exemplo.
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
O código inclui valores padrão que você pode alterar e usar como referência para a atividade e adaptar para sua implementação específica. Esse código usa a lógica de implementação real como entrada, permite que você faça referência a suas atividades e credenciais específicas e permite que você configure o número de threads e o atraso de pulsação. Para ver mais informações e fazer download do código, consulte Ruby Activity Worker do Step Functions
Item | Descrição |
---|---|
|
Caminho relativo para o seguinte código do operador de atividade de exemplo. |
|
AWS Região da sua atividade. |
|
O número de threads para o operador de atividade. Para a maioria das implementações, entre 10 e 20 threads deveria ser suficiente. Quanto mais tempo a atividade demorar para ser processada, maior será o número de threads que ela pode precisar. Como estimativa, multiplique o número de atividades de processos por segundo pela latência do 99º percentil do processamento da atividade em segundos. |
|
O número de threads dos seus agentes de sondagem. Entre 10 e 20 threads deveriam ser suficientes para a maioria das implementações. |
|
O atraso em segundos entre as pulsações. |
input |
Lógica de implementação da sua atividade. |
Próximos Passos
Para obter uma análise mais detalhada da criação de máquinas de estado que usam operadores de atividade, consulte: