Amazon Simple Workflow Service Resources - Amazon Simple Workflow Service

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á.

Amazon Simple Workflow Service Resources

Este capítulo fornece recursos adicionais e informações de referência que são úteis ao desenvolver fluxos de trabalho com o Amazon SWF.

Tipos de tempo limite do Amazon SWF

Para garantir que as execuções do fluxo de trabalho sejam executadas corretamente, o Amazon SWF permite que você defina diferentes tipos de tempo limite. Alguns tempos limite especificam por quanto tempo o fluxo de trabalho pode ser executado na sua totalidade. Outros tempos limites especificam quanto tempo atividades de tarefa podem demorar antes de serem atribuídas a um operador e quanto tempo elas podem levar para serem concluídas a partir do momento em que são agendadas. Todos os tempos limite na API do Amazon SWF são especificados em segundos. O Amazon SWF também aceita a string NONE como um valor de tempo limite, o que indica que não há tempo limite.

Para tempos limite relacionados a tarefas de decisão e tarefas de atividade, o Amazon SWF adiciona um evento ao histórico de execução do fluxo de trabalho. Os atributos do evento fornecem informações sobre o tipo de tempo limite ocorrido e qual tarefa de decisão ou tarefa de atividade foi afetada. O Amazon SWF também agenda uma tarefa de decisão. Quando o tomador de decisão receber a nova tarefa de decisão, ele verá o evento de tempo limite no histórico e tomará uma ação apropriada chamando a RespondDecisionTaskCompletedação.

Uma tarefa é considerada aberta a partir do momento em que ela é agendada até ser encerrada. Portanto, uma tarefa é informada como aberta enquanto um operador a processa. Uma tarefa é encerrada quando um operador a informa como concluída, cancelada ou falha. Uma tarefa também pode ser fechada pelo Amazon SWF como resultado de um tempo limite.

Tempos limites em tarefas de fluxo de trabalho e decisão

O diagrama a seguir mostra como tempos limites de fluxo de trabalho e decisão estão relacionado ao ciclo de vida de um fluxo de trabalho:

A vida útil de um fluxo de trabalho, com tempos limite

Existem dois tipos de tempo limite que são relevantes para tarefas de decisão e fluxo de trabalho:

  • Início do fluxo de trabalho até o encerramento (timeoutType: START_TO_CLOSE): esse tempo limite especifica o tempo máximo que uma execução de fluxo de trabalho pode levar para ser concluída. Ele é definido como um padrão durante o registro do fluxo de trabalho, mas pode ser substituído por um valor diferente quando o fluxo de trabalho é iniciado. Se esse tempo limite for excedido, o Amazon SWF fecha a execução do fluxo de trabalho e adiciona um evento do WorkflowExecutionTimedOuttipo ao histórico de execução do fluxo de trabalho. Além do timeoutType, os atributos de evento especificam o childPolicy que está em vigor para essa execução de fluxo de trabalho. A política de elementos secundários especifica como as execuções de fluxo de trabalho secundárias serão tratadas se a execução de fluxo de trabalho principal atingir o tempo limite ou for encerrada de outro modo. Por exemplo childPolicy, se ela estiver definida como TERMINATE, as execuções de fluxo de trabalho secundárias serão finalizadas. Quando uma execução de fluxo de trabalho tiver atingido o tempo limite, não será possível realizar nenhuma ação nela além de chamadas de visibilidade.

  • Início da tarefa de decisão até o encerramento (timeoutType: START_TO_CLOSE): esse tempo limite especifica o tempo máximo que o agente de decisão correspondente pode levar para concluir uma tarefa de decisão. Ele é definido durante o registro do tipo de fluxo de trabalho. Se esse tempo limite for excedido, a tarefa será marcada como expirada no histórico de execução do fluxo de trabalho e o Amazon SWF adicionará um evento do tipo DecisionTaskTimedOutao histórico do fluxo de trabalho. Os atributos de evento incluirão os IDs dos eventos que correspondem a quando esta tarefa de decisão foi agendada (scheduledEventId) e quando ela foi iniciada (startedEventId). Além de adicionar o evento, o Amazon SWF também agenda uma nova tarefa de decisão para alertar o agente de decisão de que essa tarefa de decisão atingiu o tempo limite. Após esse tempo limite, uma tentativa de concluir a tarefa de decisão expirada usando RespondDecisionTaskCompleted falhará.

Tempos limites em tarefas de atividade

O diagrama a seguir mostra como tempos limite estão relacionados ao ciclo de vida de uma tarefa de atividade:

A vida útil de uma tarefa, com tempos limite

Existem quatro tipos de tempo limite que são relevantes para tarefas de atividade:

  • Início da tarefa de atividade até o encerramento (timeoutType: START_TO_CLOSE): esse tempo limite especifica o tempo máximo que um operador de atividade pode levar para processar uma tarefa depois que ele recebeu a tarefa. As tentativas de fechar uma tarefa de atividade com tempo limite expirado usando RespondActivityTaskCanceled, RespondActivityTaskCompleted, RespondActivityTaskFailedfalharão.

  • Heartbeat de tarefa de atividade (timeoutType: HEARTBEAT): esse tempo limite especifica o tempo máximo que uma tarefa pode ser executada antes de fornecer seu andamento por meio da ação RecordActivityTaskHeartbeat.

  • Programação de início da tarefa de atividade(timeoutType: SCHEDULE_TO_START): esse tempo limite especifica quanto tempo o Amazon SWF aguarda antes de encerrar a tarefa de atividade se não houver operadores disponíveis para executar a tarefa. Após o tempo limite, a tarefa expirada não será atribuída a outro operador.

  • Programação de encerramento da tarefa de atividade (timeoutType: SCHEDULE_TO_CLOSE): esse tempo limite especifica quanto tempo a tarefa pode levar desde o momento em que é agendada até o momento em que é concluída. Como prática recomendada, esse valor não deve ser maior que a soma do tempo limite da tarefa e do schedule-to-start tempo limite da tarefa start-to-close .

nota

Cada um dos tipos de tempo limite tem um valor padrão, que geralmente está definido como NONE (infinito). No entanto, o tempo máximo para qualquer execução de atividade é limitado a um ano.

Você define valores padrão para eles durante o registro do tipo de atividade, mas pode substituí-los por novos valores ao agendar a tarefa de atividade. Quando um desses tempos limite ocorrer, o Amazon SWF adicionará um evento do ActivityTaskTimedOuttipo ao histórico do fluxo de trabalho. O atributo de valor timeoutType desse evento especificará quais desses tempos limites ocorreu. Para cada um dos tempos limites, o valor de timeoutType é mostrado entre parênteses. Os atributos de evento também incluirão os IDs dos eventos que correspondem a quando essa tarefa de atividade foi agendada (scheduledEventId) e quando ela foi iniciada (startedEventId). Além de adicionar o evento, o Amazon SWF também agenda uma nova tarefa de decisão para alertar o agente de decisão de que o tempo limite ocorreu.

Endpoints do Amazon Simple Workflow Service

Uma lista das atuais regiões e endpoints do Amazon SWF é fornecida na Referência geral da Amazon Web Services, com os endpoints de outros serviços.

Os domínios do Amazon SWF e todos os fluxos de trabalho e atividades relacionados devem existir na mesma região para se comunicarem entre si. Além disso, domínios, fluxos de trabalho e atividades registrados dentro de uma região não existem em outras regiões. Por exemplo, se você criar um domínio chamado "MySampleDomínio” em us-east-1 e em us-west-2, eles existirão como domínios separados: nenhum dos fluxos de trabalho, listas de tarefas, atividades ou dados associados aos seus domínios é compartilhado entre regiões.

Se você usa outros AWS recursos em seus fluxos de trabalho, como instâncias do Amazon EC2, eles também devem existir na mesma região que seus recursos do Amazon SWF. As únicas exceções a isso são os serviços que abrangem regiões, como o Amazon S3 e o IAM. É possível acessar esses serviços a partir de fluxos de trabalho que existem em qualquer região com suporte.

Documentação adicional sobre o Amazon Simple Workflow Service

Além deste Guia do Desenvolvedor, a seguinte documentação útil pode ser útil para você.

Amazon Simple Workflow Service API Reference

A Amazon Simple Workflow Service API Reference fornece informações detalhadas sobre a API HTTP do Amazon SWF, incluindo ações, estruturas de solicitação e resposta e códigos de erro.

AWS Flow Framework Documentação

O AWS Flow Framework é um framework de programação que simplifica o processo de implementação de aplicações assíncronas distribuídas que usam o Amazon SWF para gerenciar fluxos de trabalho e atividades, para que você possa se concentrar na implementação da lógica do fluxo de trabalho.

Cada um foi AWS Flow Framework projetado para funcionar idiomaticamente no idioma para o qual foi projetado, para que você possa trabalhar naturalmente com a linguagem de sua escolha para implementar fluxos de trabalho com todos os benefícios do Amazon SWF.

Existe uma estrutura AWS de fluxo para Java. O Guia do Desenvolvedor AWS Flow Framework for Java fornece informações sobre como obter, configurar e usar o AWS Flow Framework for Java.

AWS Documentação do SDK

Os kits AWS de desenvolvimento de software (SDKs) fornecem acesso ao Amazon SWF em várias linguagens de programação diferentes. Os SDKs seguem a API HTTP de perto, mas também fornecem interfaces de programação específicas de linguagem para alguns recursos do Amazon SWF. Você pode encontrar mais informações sobre cada SDK visitando os seguintes links.

nota

Somente os SDKs que têm suporte para o Amazon SWF no momento da redação deste documento estão listados aqui. Para obter uma lista completa dos AWS SDKs disponíveis, visite a página Tools for Amazon Web Services.

Java

O AWS SDK for Java fornece uma API Java para serviços de AWS infraestrutura.

Para visualizar a documentação disponível, consulte a página de Documentação do AWS SDK for Java. Você também pode ir diretamente para as seções do Amazon SWF na referência do SDK seguindo estes links:

JavaScript

AWS SDK for JavaScript Isso permite que os desenvolvedores criem bibliotecas ou aplicativos que fazem uso de AWS serviços usando uma easy-to-use API simples e disponível no navegador ou dentro dos aplicativos Node.js no servidor.

Para visualizar a documentação disponível, consulte a página de Documentação do AWS SDK for JavaScript. Você também pode ir diretamente para a seção Amazon SWF na referência do SDK, seguindo este link:

.NET

AWS SDK for .NET É um pacote único e disponível para download que inclui modelos de projeto do Visual Studio, a AWS biblioteca.NET, exemplos de código C# e documentação. AWS SDK for .NET Isso torna mais fácil para os desenvolvedores do Windows criarem aplicativos.NET para o Amazon SWF e outros serviços.

Para visualizar a documentação disponível, consulte a página de Documentação do AWS SDK for .NET. Você também pode ir diretamente para as seções do Amazon SWF na referência do SDK seguindo estes links:

PHP

O AWS SDK for PHP fornece uma interface de programação PHP para o Amazon SWF.

Para visualizar a documentação disponível, consulte a página de Documentação do AWS SDK for PHP. Você também pode ir diretamente para a seção Amazon SWF na referência do SDK, seguindo este link:

Python

O AWS SDK for Python (Boto) fornece uma interface de programação em Python para o Amazon SWF.

Para ver a documentação disponível, consulte boto: Uma interface do Python para a Amazon Web Services. Você também pode ir diretamente para as seções do Amazon SWF na documentação seguindo estes links:

Ruby

O AWS SDK for Ruby fornece uma interface de programação Ruby para o Amazon SWF.

Para visualizar a documentação disponível, consulte a página de Documentação do AWS SDK for Ruby. Você também pode ir diretamente para a seção Amazon SWF na referência do SDK, seguindo este link:

AWS CLI Documentação

O AWS Command Line Interface (AWS CLI) é uma ferramenta unificada para gerenciar seus AWS serviços. Com apenas uma ferramenta para baixar e configurar, você pode controlar vários AWS serviços na linha de comando e automatizá-los por meio de scripts.

Para obter mais informações sobre o AWS CLI, consulte a AWS Command Line Interfacepágina.

Para obter uma visão geral dos comandos disponíveis para o Amazon SWF, consulte swf na Referência de comandos da AWS CLI .

Recursos da web para o Amazon Simple Workflow Service

Existe vários recursos da web que você pode usar para saber mais sobre o Amazon SWF ou para obter ajuda para usar o serviço e desenvolver fluxos de trabalho.

Fórum do Amazon SWF

O fórum do Amazon SWF oferece um local para você se comunicar com outros desenvolvedores do Amazon SWF e membros da equipe de desenvolvimento do Amazon SWF na Amazon para fazer perguntas e obter respostas.

Você pode visitar o fórum em: Fórum: Serviço de fluxo de trabalho simples da Amazon.

Perguntas frequentes sobre o Amazon SWF

As perguntas frequentes sobre o Amazon SWF fornecem respostas a perguntas frequentes sobre o Amazon SWF, incluindo uma visão geral de casos de uso comuns, diferenças entre o Amazon SWF e outros serviços e muito mais.

Você pode acessar as perguntas frequentes aqui: Perguntas frequentes sobre o Amazon SWF.

Vídeos Amazon SWF

O canal Amazon Web Services YouTube oferece treinamento em vídeo para todos os serviços web da Amazon, incluindo o Amazon SWF. Para obter uma lista completa de vídeos relacionados ao Amazon SWF, use a seguinte consulta: Fluxo de trabalho simples na Amazon Web Services

Opções de migração para Ruby Flow

O AWS Flow Framework for Ruby não está mais em desenvolvimento ativo. Embora o código existente continue funcionando indefinidamente, não haverá novos recursos nem versões. Este tópico abordará as opções de uso e migração para continuar trabalhando com o Amazon SWF, além de informações sobre como migrar para o Step Functions.

Opção Descrição

Continuar usando o Ruby Flow Framework

Por ora, o Ruby Flow Framework continuará funcionando. Se você não fizer nada, o código continuará funcionando como está. Planeje migrar do AWS Flow Framework para Ruby em um futuro próximo.

Migrar para o Java Flow Framework

O Java Flow Framework permanece em desenvolvimento ativo e continuará recebendo recursos e atualizações novos.

Migrar para o Step Functions

O Step Functions oferece uma maneira de coordenar os componentes de aplicativos distribuídos usando fluxos de trabalho visuais controlados por uma máquina de estado.

Usar a API do SWF diretamente, sem o Flow Framework Você pode continuar trabalhando no Ruby e usar a API do SWF diretamente em vez do Ruby Flow Framework.

A vantagem que o Flow Framework oferece, para o Ruby ou o Java, é que permite a você se concentrar na lógica do fluxo de trabalho. A estrutura processa muitos dos detalhes da comunicação e da coordenação, e parte da complexidade é abstraída. Você pode continuar a ter o mesmo nível de abstração migrando para o Java Flow Framework ou pode interagir diretamente com o SDK do Amazon SWF.

Continuar usando o Ruby Flow Framework

O AWS Flow Framework for Ruby continuará funcionando como agora no curto prazo. Se você tiver fluxos de trabalho escritos em AWS Flow Framework para Ruby, eles continuarão funcionando. Sem atualizações, suporte ou correções de segurança, é melhor ter um plano firme para migrar do AWS Flow Framework para o Ruby em um futuro próximo.

Migrar para o Java Flow Framework

O AWS Flow Framework for Java permanecerá em desenvolvimento ativo. Conceitualmente, o AWS Flow Framework para Java é semelhante ao AWS Flow Framework para Ruby: você ainda pode se concentrar na lógica do fluxo de trabalho, e a estrutura ajudará a gerenciar sua lógica de decisão e facilitará o gerenciamento de outros aspectos do Amazon SWF.

Migrar para o Step Functions

AWS Step Functions fornece um serviço semelhante ao Amazon SWF, mas em que a lógica do fluxo de trabalho é controlada por uma máquina de estado. O Step Functions permite que você coordene os componentes de aplicações e microsserviços distribuídos usando fluxos de trabalho visuais. Os aplicativos são desenvolvidos a partir de componentes individuais que executam uma função ou uma tarefa distinta e permitem dimensionar e alterar rapidamente os aplicativos. O Step Functions oferece uma maneira confiável de coordenar componentes e percorrer as funções da aplicação. Um console gráfico oferece uma maneira de visualizar os componentes do aplicativo como uma série de etapas. Ele aciona e rastreia e monitora automaticamente todas as etapas e tenta executar novamente etapas que apresentaram falha para que a aplicação sempre execute na ordem e da forma esperada. O Step Functions registra o estado de cada etapa, de modo que, quando algo dá errado, é possível diagnosticar e depurar problemas rapidamente.

No Step Functions, você gerencia a coordenação de suas tarefas usando uma máquina de estado, escrita em JSON declarativo, que é definida usando a Amazon States Language. Ao usar uma máquina de estado, você não precisa escrever e manter um programa do agente de decisão para controlar a lógica da aplicação. O Step Functions oferece uma abordagem intuitiva, produtiva e ágil para coordenar componentes de aplicações usando fluxos de trabalho visuais. Você deve considerar o uso AWS Step Functions para todos os seus novos aplicativos, e o Step Functions fornece uma excelente plataforma para migrar para os fluxos de trabalho que você implementou atualmente no AWS Flow Framework para Ruby.

Para ajudar a migrar suas tarefas para o Step Functions e, ao mesmo tempo, continuar aproveitando suas habilidades na linguagem Ruby, o Step Functions fornece um exemplo de operador de atividade Ruby. Esse exemplo usa as práticas recomendadas para implementar um operador de atividade e pode ser usado como modelo para migrar sua lógica de tarefa para Step Functions. Para obter mais informações, consulte o tópico Example Activity Worker in Ruby no Guia do desenvolvedor AWS Step Functions.

nota

Para muitos clientes, migrar para Step Functions do AWS Flow Framework for Ruby é a melhor opção. Mas, se você precisar que os sinais interfiram em seus processos ou se precisar iniciar processos secundários que retornem um resultado para um pai, considere usar a API Amazon SWF diretamente ou migrar para a AWS Flow Framework for Java.

Para obter mais informações sobre AWS Step Functions, consulte:

Use a API do Amazon SWF diretamente

Embora o AWS Flow Framework for Ruby gerencie parte da complexidade do Amazon SWF, você também pode usar a API Amazon SWF diretamente. Usar a API diretamente permite criar fluxos de trabalho nos quais você tenha controle total sobre a implementação de tarefas e a coordenação delas sem se preocupar com complexidades subjacentes, como acompanhar o progresso e a manter o estado.