Sondaggio sullo stato del lavoro con Lambda e AWS Batch - AWS Step Functions

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Sondaggio sullo stato del lavoro con Lambda e AWS Batch

Questo progetto di esempio crea un AWS Batch sondaggio di lavoro. Implementa un AWS Step Functions macchina a stati che utilizza AWS Lambda per creare un ciclo di Wait stati che controlli un AWS Batch lavoro.

Questo progetto di esempio crea e configura tutte le risorse in modo che il flusso di lavoro Step Functions invii un AWS Batch lavoro, e aspetterà che il lavoro venga completato prima di terminarlo con successo.

Nota

È inoltre possibile implementare questo modello senza utilizzare una funzione Lambda. Per informazioni sul controllo AWS Batch direttamente, vediIntegrazione dei servizi con Step Functions.

Questo progetto di esempio crea la macchina a stati, due funzioni Lambda e un AWS Batch mette in coda e configura le relative autorizzazioni. IAM

Per ulteriori informazioni su come AWS Step Functions può controllarne altri AWS servizi, vediIntegrazione dei servizi con Step Functions.

Fase 1: Creare la macchina a stati

  1. Apri la console Step Functions e scegli Crea macchina a stati.

  2. Digita Job Poller nella casella di ricerca, quindi scegli Job Poller dai risultati di ricerca restituiti.

  3. Seleziona Successivo per continuare.

  4. Scegli Esegui una demo per creare un ready-to-deploy flusso di lavoro di sola lettura o scegli Crea su di esso per creare una definizione di macchina a stati modificabile da utilizzare e distribuire in un secondo momento.

    Questo progetto di esempio utilizza le seguenti risorse:

    • Tre funzioni Lambda per inviare un AWS Batch job, ottieni lo stato attuale del messaggio inviato AWS Batch lavoro e lo stato di completamento del lavoro finale.

    • Un record AWS Batch job

    • Un record AWS Step Functions macchina a stati

    • Correlati AWS Identity and Access Management (IAM) ruoli

    L'immagine seguente mostra il grafico del flusso di lavoro per il progetto di esempio Job Poller:

    Grafico del flusso di lavoro del progetto di esempio Job Poller.
  5. Scegli Usa modello per continuare con la selezione.

I passaggi successivi dipendono dalla scelta precedente:

  1. Esegui una demo: puoi esaminare la macchina a stati prima di creare un progetto di sola lettura con risorse distribuite da AWS CloudFormation al tuo Account AWS.

    Puoi visualizzare la definizione della macchina a stati e, quando sei pronto, scegli Implementa ed esegui per distribuire il progetto e creare le risorse.

    La creazione di risorse e autorizzazioni può richiedere fino a 10 minuti per la distribuzione. Puoi utilizzare il link Stack ID per monitorare i progressi in AWS CloudFormation.

    Una volta completata la distribuzione, dovresti vedere la tua nuova macchina a stati nella console.

  2. Sviluppala: puoi rivedere e modificare la definizione del flusso di lavoro. Potrebbe essere necessario impostare i valori per i segnaposto nel progetto di esempio prima di provare a eseguire il flusso di lavoro personalizzato.

Nota

Potrebbero essere applicati costi standard per i servizi distribuiti sul tuo account.

Passaggio 2: Esegui la macchina a stati

Dopo aver fornito e distribuito tutte le risorse, viene visualizzata la finestra di dialogo Avvia esecuzione con un input di esempio simile al seguente.

{ "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 impone allo stato Wait un loop ogni 60 secondi.

  • Nella finestra di dialogo Avvia esecuzione, effettuate le seguenti operazioni:

    1. (Facoltativo) Immettete un nome di esecuzione personalizzato per sovrascrivere il valore predefinito generato.

      ASCIINomi diversi e registrazione

      Step Functions accetta nomi per macchine a stati, esecuzioni, attività ed etichette che contengono non ASCII caratteri. Poiché tali caratteri non funzionano con Amazon CloudWatch, ti consigliamo di utilizzare solo ASCII caratteri in modo da poter tenere traccia delle metriche. CloudWatch

    2. (Facoltativo) Nella casella Input, inserisci i valori di input comeJSON. Puoi saltare questo passaggio se stai eseguendo una demo.

    3. Selezionare Start execution (Avvia esecuzione).

    La console Step Functions ti indirizzerà a una pagina dei dettagli di esecuzione in cui puoi scegliere gli stati nella vista Graph per esplorare le informazioni correlate nel Dettagli del passaggio riquadro.

    Ad esempio, per visualizzare lo stato di modifica del AWS Batch selezionate la scheda Output per il job e i risultati in loop dell'esecuzione.

    L'immagine seguente mostra il grafico dello stato di esecuzione nella vista Grafico. Mostra anche l'output di esecuzione per la fase selezionata nella scheda Output.

    Output di esecuzione per il passo selezionato denominato Get Final Job Status nella vista Grafico.

Esempio di codice della macchina a stati

La macchina a stati di questo progetto di esempio si integra con AWS Lambda inviare un AWS Batch lavoro. Sfoglia questo esempio di macchina a stati per vedere come Step Functions controlla Lambda e AWS Batch.

Per ulteriori informazioni su come AWS Step Functions può controllarne altri AWS servizi, vediIntegrazione dei servizi 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 } } }