Encuesta sobre la situación laboral con Lambda y AWS Batch - AWS Step Functions

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Encuesta sobre la situación laboral con Lambda y AWS Batch

Este proyecto de ejemplo crea un AWS Batch encuestador de empleo. Implementa un AWS Step Functions máquina de estados que usa AWS Lambda para crear un bucle de Wait estado que compruebe un AWS Batch trabajo.

Este proyecto de ejemplo crea y configura todos los recursos para que su flujo de trabajo de Step Functions envíe un AWS Batch y esperará a que se complete ese trabajo antes de finalizar correctamente.

nota

También puede implementar este patrón sin utilizar una función de Lambda. Para obtener información sobre el control AWS Batch directamente, consulteIntegración de servicios con Step Functions.

Este proyecto de ejemplo crea la máquina de estados, dos funciones Lambda y un AWS Batch pone en cola y configura los permisos relacionados. IAM

Para obtener más información sobre cómo AWS Step Functions puede controlar otros AWS servicios, consulteIntegración de servicios con Step Functions.

Paso 1: Crear la máquina de estado

  1. Abra la consola de Step Functions y seleccione Crear máquina de estado.

  2. Escriba Job Poller en el cuadro de búsqueda y, a continuación, seleccione Sondeador de un trabajo en los resultados de búsqueda que aparecen.

  3. Elija Siguiente para continuar.

  4. Elija Ejecutar una demostración para crear un ready-to-deploy flujo de trabajo y de solo lectura, o elija Construir a partir de ella para crear una definición de máquina de estados editable sobre la que pueda crear e implementar posteriormente.

    En este proyecto de muestra se implementan los siguientes recursos:

    • Tres funciones Lambda para enviar un AWS Batch trabajo, obtenga el estado actual de lo enviado AWS Batch trabajo y el estado final de finalización del trabajo.

    • Un registro AWS Batch job

    • Un registro AWS Step Functions máquina de estado

    • Relacionado AWS Identity and Access Management (IAM) roles

    En la siguiente imagen se ilustra el gráfico del flujo de trabajo del proyecto de muestra Sondeador de un trabajo:

    Gráfico del flujo de trabajo del proyecto de muestra Sondeador de un trabajo.
  5. Elija Utilizar plantilla para continuar con la selección.

Los siguientes pasos dependen de la elección anterior:

  1. Realice una demostración: puede revisar la máquina de estados antes de crear un proyecto de solo lectura con los recursos desplegados por AWS CloudFormation a tu Cuenta de AWS.

    Puede ver la definición de la máquina de estados y, cuando esté listo, elija Implementar y ejecutar para implementar el proyecto y crear los recursos.

    La creación de recursos y permisos puede tardar hasta 10 minutos en implementarse. Puede utilizar el enlace Stack ID para supervisar el progreso en AWS CloudFormation.

    Una vez completada la implementación, deberías ver tu nueva máquina de estados en la consola.

  2. Aproveche esta información: puede revisar y editar la definición del flujo de trabajo. Es posible que tengas que establecer valores para los marcadores de posición en el proyecto de ejemplo antes de intentar ejecutar tu flujo de trabajo personalizado.

nota

Es posible que se apliquen cargos estándar por los servicios implementados en tu cuenta.

Paso 2: Ejecutar la máquina de estado

Una vez aprovisionados e implementados todos los recursos, aparece el cuadro de diálogo Iniciar ejecución con una entrada de ejemplo similar a la siguiente.

{ "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 indica al estado Wait que se repita cada 60 segundos.

  • En el cuadro de diálogo Iniciar ejecución, haga lo siguiente:

    1. (Opcional) Introduce un nombre de ejecución personalizado para anular el valor predeterminado generado.

      ASCIINombres no identificables y registro

      Step Functions acepta nombres para máquinas de estados, ejecuciones, actividades y etiquetas que no contengan ASCII caracteres. Como estos personajes no funcionan con Amazon CloudWatch, te recomendamos que utilices solo ASCII caracteres para poder hacer un seguimiento de las métricas CloudWatch.

    2. (Opcional) En el cuadro de entrada, introduce los valores de entrada comoJSON. Puede omitir este paso si está realizando una demostración.

    3. Seleccione Iniciar ejecución.

    La consola Step Functions lo dirigirá a una página de detalles de ejecución en la que puede elegir estados en la vista de gráficos para explorar la información relacionada en el Detalles del paso panel.

    Por ejemplo, para ver el estado cambiante de su AWS Batch trabajo y los resultados en bucle de su ejecución, seleccione la pestaña Salida.

    En la siguiente imagen se muestra el gráfico del estado de la ejecución en la Vista de gráfico. También muestra la salida de la ejecución del paso seleccionado en la pestaña Salida.

    Salida de ejecución para el paso seleccionado denominado Get Final Job Status en la vista gráfica.

Código de la máquina de estado de ejemplo

La máquina de estados de este proyecto de ejemplo se integra con AWS Lambda para enviar un AWS Batch trabajo. Examine este ejemplo de máquina de estados para ver cómo Step Functions controla Lambda y AWS Batch.

Para obtener más información sobre cómo AWS Step Functions puede controlar otros AWS servicios, consulteIntegración de servicios con 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 } } }