AWS Шаг отображает состояние карты с действиями - PullRequest
0 голосов
/ 25 марта 2020

Из документации AWS неясно, может ли динамическая c поддержка параллелизма с состоянием карты в пошаговых функциях использоваться только с лямбдами, или она может отображаться на действия также как часть вложенных рабочих процессов. Кто-нибудь использовал это для распараллеливания различных асин c действий?

1 Ответ

0 голосов
/ 26 марта 2020

Вы можете использовать любое состояние, определенное на языке состояний Amazon, внутри состояния карты, и, если вам интересно, что вы не ограничены одним состоянием, вы можете определить полный рабочий процесс в поле Итератор вашего состояния карты. Думайте об этом как об определении нового конечного автомата в вашем состоянии карты, это похоже на параллельное состояние, за исключением того, что каждая ветвь одинакова, а количество ветвей основано на вашем массиве.

{
  "Comment": "An example of the Amazon States Language using a map state to process elements of an array with a max concurrency of 2.",
  "StartAt": "HardcodedInputsState",
  "States": {
    "HardcodedInputsState": {
      "Type": "Pass",
      "Result": {
        "array": [
          "Iterate",
          "Over",
          "This",
          "Array"
        ]
      },
      "Next": "Map"
    },
    "Map": {
      "Type": "Map",
      "ItemsPath": "$.array",
      "ResultPath": "$.array",
      "MaxConcurrency": 2,
      "Next": "Final State",
      "Parameters": {
        "Value.$": "$$.Map.Item.Value",
        "Index.$": "$$.Map.Item.Index"
      },
      "Iterator": {
        "StartAt": "You",
        "States": {
          "You": {
            "Type": "Pass",
            "Next": "Can"
          },
          "Can": {
            "Type": "Pass",
            "Next": "Do"
          },
          "Do": {
            "Type": "Pass",
            "Next": "Anything"
          },
          "Anything": {
            "Type": "Pass",
            "End": true
          }
        }
      }
    },
    "Final State": {
      "Type": "Pass",
      "End": true
    }
  }
}
...