翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ItemsPath (マップ、JSONPath のみ)
ステートの管理とデータの変換
このページは JSONPath に関するものです。Step Functions では最近、ステート管理とデータ変換のために変数と JSONata が追加されました。
変数を使用したデータ受け渡しと JSONata を使用したデータ変換について説明します。
JSONPath ベースの状態で、 ItemsPathフィールドを使用して、Map状態に提供される JSON 入力内の配列またはオブジェクトを選択します。デフォルトでは、Map 状態は ItemsPath を $ に設定し、これにより入力全体が選択されます。
-
Map状態への入力が JSON 配列の場合、配列内の各項目に対して反復を実行し、その項目を入力として反復に渡します。 -
Map状態への入力が JSON オブジェクトの場合、オブジェクト内のキーと値のペアごとに反復を実行し、そのペアを入力として反復に渡します。
注記
分散マップ状態で ItemsPath を使用できるのは、ワークフローの前のステートから渡された JSON 入力を使用する場合のみです。
の値は参照パスItemsPathでなければならず、そのパスは JSON 配列またはオブジェクトに評価する必要があります。例えば、次の例のように、Map 状態への入力に 2 つの配列が含まれている場合について考えてみます。
{
"ThingsPiratesSay": [
{
"say": "Avast!"
},
{
"say": "Yar!"
},
{
"say": "Walk the Plank!"
}
],
"ThingsGiantsSay": [
{
"say": "Fee!"
},
{
"say": "Fi!"
},
{
"say": "Fo!"
},
{
"say": "Fum!"
}
]
}この場合、ItemsPath で配列を選択して、Map 状態の反復処理に使用する配列を指定できます。次のステートマシン定義では ItemsPath を使用して入力内の ThingsPiratesSay 配列を指定し、ThingsPiratesSay 配列内の各項目に対して SayWord パス状態の反復処理を実行します。
{
"StartAt": "PiratesSay",
"States": {
"PiratesSay": {
"Type": "Map",
"ItemsPath": "$.ThingsPiratesSay",
"ItemProcessor": {
"StartAt": "SayWord",
"States": {
"SayWord": {
"Type": "Pass",
"End": true
}
}
},
"End": true
}
}
} ネストされた JSON オブジェクトの場合、 ItemsPathを使用して入力内の特定のオブジェクトを選択できます。ネストされた設定データで次の入力を検討してください。
{
"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}
}
}
}ウェブサーバーオブジェクトを反復処理するには、 ItemsPath を に設定します$.servers.web。
{
"StartAt": "ProcessWebServers",
"States": {
"ProcessWebServers": {
"Type": "Map",
"ItemsPath": "$.servers.web",
"ItemProcessor": {
"StartAt": "CheckServer",
"States": {
"CheckServer": {
"Type": "Pass",
"End": true
}
}
},
"End": true
}
}
}入力を処理する場合、Map 状態は InputPath の後に ItemsPath を適用します。InputPath によって入力がフィルタリングされた後、状態への有効な入力に対して処理されます。
Map 状態の詳細については、以下を参照してください。