Pesquisa sobre a situação do trabalho na Lambda e AWS Batch - AWS Step Functions

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

Pesquisa sobre a situação do trabalho na Lambda e AWS Batch

Esse projeto de amostra cria um AWS Batch pesquisa de emprego. Ele implementa um AWS Step Functions máquina de estado que usa AWS Lambda para criar um loop de Wait estado que verifica um AWS Batch emprego.

Esse projeto de amostra cria e configura todos os recursos para que seu fluxo de trabalho do Step Functions envie um AWS Batch trabalho e aguardará que esse trabalho seja concluído antes de terminar com sucesso.

nota

Também é possível implementar esse padrão sem usar uma função do Lambda. Para obter informações sobre o controle AWS Batch diretamente, vejaIntegrando serviços com Step Functions.

Esse projeto de amostra cria a máquina de estado, duas funções Lambda e uma AWS Batch fila e configura as permissões relacionadasIAM.

Para obter mais informações sobre como AWS Step Functions pode controlar outros AWS serviços, vejaIntegrando serviços com Step Functions.

Etapa 1: Criar a máquina de estado

  1. Abra o console do Step Functions e clique em Criar máquina de estado.

  2. Digite Job Poller na caixa de pesquisa e escolha Instrumento de sondagem de trabalho nos resultados da pesquisa que são retornados.

  3. Escolha Próximo para continuar.

  4. Escolha Executar uma demonstração para criar um ready-to-deploy fluxo de trabalho e somente leitura, ou escolha Criar nele para criar uma definição de máquina de estado editável na qual você possa criar e implantar posteriormente.

    ‎Este projeto de exemplo implementa os recursos a seguir.

    • Três funções Lambda para enviar uma AWS Batch trabalho, obtenha o status atual do trabalho enviado AWS Batch tarefa e o status final de conclusão da tarefa.

    • Uma AWS Batch trabalho

    • Uma AWS Step Functions máquina de estado

    • Relacionado AWS Identity and Access Management (IAM) funções

    A imagem a seguir mostra o gráfico do fluxo de trabalho do exemplo de projeto do Instrumento de sondagem de trabalho:

    Gráfico do fluxo de trabalho do exemplo de projeto do Instrumento de sondagem de trabalho.
  5. Escolha Usar modelo para continuar com a seleção.

As próximas etapas dependem da sua escolha anterior:

  1. Execute uma demonstração — Você pode revisar a máquina de estado antes de criar um projeto somente para leitura com recursos implantados pelo AWS CloudFormation para o seu Conta da AWS.

    Você pode visualizar a definição da máquina de estado e, quando estiver pronto, escolher Implantar e executar para implantar o projeto e criar os recursos.

    A implantação pode levar até 10 minutos para criar recursos e permissões. Você pode usar o link Stack ID para monitorar o progresso no AWS CloudFormation.

    Após a conclusão da implantação, você deverá ver sua nova máquina de estado no console.

  2. Desenvolva com base nisso — você pode revisar e editar a definição do fluxo de trabalho. Talvez seja necessário definir valores para espaços reservados no projeto de amostra antes de tentar executar seu fluxo de trabalho personalizado.

nota

Cobranças padrão podem ser aplicadas aos serviços implantados em sua conta.

Etapa 2: Executar a máquina de estado

Depois que todos os recursos forem provisionados e implantados, a caixa de diálogo Iniciar execução será exibida com um exemplo de entrada semelhante ao seguinte:

{ "jobName": "my-job", "jobDefinition": "arn:aws:batch:us-east-2:123456789012:job-definition/SampleJobDefinition-343f54b445d5312:1", "jobQueue": "arn:aws:batch:us-east-2:123456789012:job-queue/SampleJobQueue-4d9d696031e1449", "wait_time": 60 }
nota

wait_time instrui o estado Wait a fazer loop a cada 60 segundos.

  • Na caixa de diálogo Iniciar execução, faça o seguinte:

    1. (Opcional) Insira um nome de execução personalizado para substituir o padrão gerado.

      ASCIINão-nomes e registro

      Step Functions aceita nomes para máquinas de estado, execuções, atividades e rótulos que não contenham ASCII caracteres. Como esses caracteres não funcionarão com a Amazon CloudWatch, recomendamos usar somente ASCII caracteres para que você possa acompanhar as métricas CloudWatch.

    2. (Opcional) Na caixa Entrada, insira os valores de entrada comoJSON. Você pode pular essa etapa se estiver executando uma demonstração.

    3. Selecione Iniciar execução.

    O console Step Functions direcionará você para uma página de detalhes da execução, na qual você pode escolher estados na visualização do gráfico para explorar informações relacionadas no Detalhes da etapa painel.

    Por exemplo, para ver a alteração do status de seu AWS Batch job e os resultados em loop de sua execução, escolha a guia Saída.

    A imagem a seguir mostra o gráfico do estado de execução na Visualização de gráfico. Também mostra a saída de execução da etapa selecionada na guia Saída.

    Saída de execução para a etapa selecionada chamada Get Final Job Status na visualização do gráfico.

Exemplo de código da máquina de estado

A máquina de estado neste projeto de amostra se integra com AWS Lambda para enviar um AWS Batch emprego. Navegue por este exemplo de máquina de estado para ver como o Step Functions controla Lambda e AWS Batch.

Para obter mais informações sobre como AWS Step Functions pode controlar outros AWS serviços, vejaIntegrando serviços com Step Functions.

{ "Comment": "An example of the Amazon States Language that runs an AWS Batch job and monitors the job until it completes.", "StartAt": "Submit Job", "States": { "Submit Job": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPol-SubmitJobFunction-jDaYcl4cx55r", "ResultPath": "$.guid", "Next": "Wait X Seconds" }, "Wait X Seconds": { "Type": "Wait", "SecondsPath": "$.wait_time", "Next": "Get Job Status" }, "Get Job Status": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPoll-CheckJobFunction-1JkJwY10vonI", "Next": "Job Complete?", "InputPath": "$.guid", "ResultPath": "$.status" }, "Job Complete?": { "Type": "Choice", "Choices": [ { "Variable": "$.status", "StringEquals": "FAILED", "Next": "Job Failed" }, { "Variable": "$.status", "StringEquals": "SUCCEEDED", "Next": "Get Final Job Status" } ], "Default": "Wait X Seconds" }, "Job Failed": { "Type": "Fail", "Cause": "AWS Batch Job Failed", "Error": "DescribeJob returned FAILED" }, "Get Final Job Status": { "Type": "Task", "Resource": "arn:aws::lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPoll-CheckJobFunction-1JkJwY10vonI", "InputPath": "$.guid", "End": true } } }