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á.
ItemsPath (Mapa, JSONPath somente)
Gerenciar estados e transformar dados
Esta página se refere JSONPath a. Recentemente, o Step Functions adicionou variáveis JSONata para gerenciar dados de estado e transformação.
Saiba mais sobre como transmitir dados com variáveis e transformar dados com JSONata.
Em estados JSONPath baseados, use o ItemsPath campo para selecionar uma matriz ou objeto em uma entrada JSON fornecida a um Map estado. Por padrão, um estado Map define ItemsPath como $, o que seleciona toda a entrada.
-
Se a entrada para o
Mapestado for uma matriz JSON, ela executará uma iteração para cada item na matriz, passando esse item para a iteração como entrada -
Se a entrada para o
Mapestado for um objeto JSON, ela executará uma iteração para cada par de valores-chave no objeto, passando o par para a iteração como entrada
nota
Você só poderá usar ItemsPath no estado Mapa Distribuído se usar uma entrada JSON transmitida de um estado anterior no fluxo de trabalho.
O valor de ItemsPath deve ser um caminho de referência, e esse caminho deve ser avaliado como uma matriz ou objeto JSON. Por exemplo, considere a entrada para um estado Map que inclua duas matrizes, como o exemplo a seguir.
{
"ThingsPiratesSay": [
{
"say": "Avast!"
},
{
"say": "Yar!"
},
{
"say": "Walk the Plank!"
}
],
"ThingsGiantsSay": [
{
"say": "Fee!"
},
{
"say": "Fi!"
},
{
"say": "Fo!"
},
{
"say": "Fum!"
}
]
}Nesse caso, você pode especificar qual matriz usar para iterações do estado Map selecionando-a com ItemsPath. A definição de máquina de estado a seguir especifica a matriz ThingsPiratesSay na entrada usando ItemsPath. Em seguida, ela executa uma iteração do estado de passagem SayWord para cada item na matriz ThingsPiratesSay.
{
"StartAt": "PiratesSay",
"States": {
"PiratesSay": {
"Type": "Map",
"ItemsPath": "$.ThingsPiratesSay",
"ItemProcessor": {
"StartAt": "SayWord",
"States": {
"SayWord": {
"Type": "Pass",
"End": true
}
}
},
"End": true
}
}
} Para objetos JSON aninhados, você pode usar ItemsPath para selecionar um objeto específico na entrada. Considere a seguinte entrada com dados de configuração aninhados:
{
"environment": "production",
"servers": {
"web": {
"server1": {"port": 80, "status": "active"},
"server2": {"port": 8080, "status": "inactive"}
},
"database": {
"primary": {"host": "db1.example.com", "port": 5432},
"replica": {"host": "db2.example.com", "port": 5432}
}
}
}Para iterar sobre o objeto do servidor web, você definiria comoItemsPath: $.servers.web
{
"StartAt": "ProcessWebServers",
"States": {
"ProcessWebServers": {
"Type": "Map",
"ItemsPath": "$.servers.web",
"ItemProcessor": {
"StartAt": "CheckServer",
"States": {
"CheckServer": {
"Type": "Pass",
"End": true
}
}
},
"End": true
}
}
}Ao processar a entrada, o estado Map aplica ItemsPath depois do InputPath. Ele é operado na entrada efetiva para o estado depois que InputPath filtra a entrada.
Para obter mais informações sobre estados Map, consulte os tópicos a seguir: