Oggetto Context - 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à.

Oggetto Context

L'oggetto context è una JSON struttura interna disponibile durante l'esecuzione e contiene informazioni sulla macchina a stati e sull'esecuzione. In questo modo i flussi di lavoro hanno accesso alle informazioni sulla loro esecuzione specifica. È possibile accedere all'oggetto contestuale dai seguenti campi:

  • InputPath

  • OutputPath

  • ItemsPath(negli stati della mappa)

  • Variable(negli stati Choice)

  • ResultSelector

  • Parameters

  • Operatori di confronto da variabile a variabile

Formato oggetto contestuale

L’oggetto contestuale include informazioni sulla macchina a stati, lo stato, l’esecuzione e l’attività. Questo JSON oggetto include nodi per ogni tipo di dati ed è nel seguente formato.

{ "Execution": { "Id": "String", "Input": {}, "Name": "String", "RoleArn": "String", "StartTime": "Format: ISO 8601", "RedriveCount": Number, "RedriveTime": "Format: ISO 8601" }, "State": { "EnteredTime": "Format: ISO 8601", "Name": "String", "RetryCount": Number }, "StateMachine": { "Id": "String", "Name": "String" }, "Task": { "Token": "String" } }

Durante l'esecuzione, l'oggetto contestuale viene popolato con i dati rilevanti per il campo Parameters da cui viene effettuato l'accesso. Il valore per un campo Task è nullo se il campo Parameters è all'esterno dello stato di un'operazione.

Il valore dell'oggetto RedriveCount contestuale è 0, se non l'hai ancora fatto redrivenun'esecuzione. Inoltre, l'oggetto RedriveTime context è disponibile solo se hai redriven un'esecuzione. Se hai redriven a Map Run, l'oggetto RedriveTime context è disponibile solo per i flussi di lavoro secondari di tipo Standard. Per un redriven Map Run con flussi di lavoro secondari di tipo Express non RedriveTime è disponibile.

I contenuti di un’esecuzione in corso includono specifiche nel formato seguente.

{ "Execution": { "Id": "arn:aws:states:us-east-1:123456789012:execution:stateMachineName:executionName", "Input": { "key": "value" }, "Name": "executionName", "RoleArn": "arn:aws:iam::123456789012:role...", "StartTime": "2019-03-26T20:14:13.192Z" }, "State": { "EnteredTime": "2019-03-26T20:14:13.192Z", "Name": "Test", "RetryCount": 3 }, "StateMachine": { "Id": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName", "Name": "stateMachineName" }, "Task": { "Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W" } }
Nota

Per i dati dell'oggetto contesto correlati agli stati Map, consulta Dati dell'oggetto contesto per gli stati Map.

Accesso all'oggetto contestuale

Per accedere all’oggetto contestuale, per prima cosa specificare il nome del parametro aggiungendo .$ alla fine, come durante la selezione dell’input di stato con un percorso. Quindi, per accedere ai dati dell’oggetto contestuale dell’input, anteporre il percorso $$.. Questo dice AWS Step Functions per utilizzare il percorso per selezionare un nodo nell'oggetto di contesto.

Gli esempi seguenti mostrano come accedere agli oggetti di contesto, come l'ID di esecuzione, il nome, l'ora di inizio e redrive contare.

Recupera e passa l'esecuzione ARN a un servizio a valle

Questo esempio di stato di attività utilizza un percorso per recuperare e passare l'esecuzione Amazon Resource Name (ARN) a un messaggio Amazon Simple Queue Service (AmazonSQS).

{ "Order Flight Ticket Queue": { "Type": "Task", "Resource": "arn:aws:states:::sqs:sendMessage", "Parameters": { "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/flight-purchase", "MessageBody": { "From": "YVR", "To": "SEA", "Execution.$": "$$.Execution.Id" } }, "Next": "NEXT_STATE" } }

Per ulteriori informazioni su come usare il token di attività durante la chiamata a un servizio integrato, consultare Attendi una richiamata con Task Token.

Accedi all'ora e al nome di inizio dell'esecuzione in uno stato Pass

{ "Comment": "Accessing context object in a state machine", "StartAt": "Get execution context data", "States": { "Get execution context data": { "Type": "Pass", "Parameters": { "startTime.$": "$$.Execution.StartTime", "execName.$": "$$.Execution.Name" }, "ResultPath": "$.executionContext", "End": true } } }

Accedi a redrive conteggio di un'esecuzione

Il seguente esempio di definizione dello stato di un'attività mostra come accedere a redriveconteggio di un'esecuzione.

{ "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload": { "Number.$": "$$.Execution.RedriveCount" }, "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:functionName" }, "End": true }

Dati dell'oggetto contesto per gli stati Map

Sono disponibili due elementi aggiuntivi nell'oggetto contesto durante l'elaborazione di uno stato stato Map: Index e Value. Per ogni iterazione di Map stato, Index contiene il numero di indice dell'elemento dell'array attualmente in fase di elaborazione, mentre Value contiene l'elemento dell'array in fase di elaborazione. All'interno di uno Map stato, l'oggetto contesto include i seguenti dati:

"Map": { "Item": { "Index": Number, "Value": "String" } }

Questi sono disponibili solo in uno Map stato e possono essere specificati nel ItemSelector (Mappa) campo.

Nota

È necessario definire i parametri dall'oggetto contesto nel blocco ItemSelector dello stato Map principale, non all'interno degli stati inclusi nella sezione ItemProcessor.

Data una macchina a stati con uno stato Map semplice, possiamo inserire informazioni dall'oggetto contesto come segue.

{ "StartAt": "ExampleMapState", "States": { "ExampleMapState": { "Type": "Map", "ItemSelector": { "ContextIndex.$": "$$.Map.Item.Index", "ContextValue.$": "$$.Map.Item.Value" }, "ItemProcessor": { "ProcessorConfig": { "Mode": "INLINE" }, "StartAt": "TestPass", "States": { "TestPass": { "Type": "Pass", "End": true } } }, "End": true } } }

Se esegui la macchina a stati precedente con il seguente input, Index e Value vengono inseriti nell'output.

[ { "who": "bob" }, { "who": "meg" }, { "who": "joe" } ]

L'output per l'esecuzione restituisce i valori Index e Value gli elementi per ciascuna delle tre iterazioni nel modo seguente:

[ { "ContextIndex": 0, "ContextValue": { "who": "bob" } }, { "ContextIndex": 1, "ContextValue": { "who": "meg" } }, { "ContextIndex": 2, "ContextValue": { "who": "joe" } } ]