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"
}
}
]