Цикл внутри функции шага - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь вызвать пару шагов в моей пошаговой функции в цикле, но я не могу понять, как мне это сделать.Вот что у меня есть до сих пор: мне нужно добавить еще одну лямбда-функцию (GetReviews), которая затем будет вызывать CreateReview, SendNotification в цикле.Как бы я поступил так?Я имею в виду документ « Итерация цикла с использованием лямбды », который показывает, что это возможно.

Шаговая функция Определение:

{
  "Comment": "Scheduling Engine",
  "StartAt": "CreateReview",
  "States": {
    "CreateReview": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-west-2:529627678433:function:CreateReview",
      "Next": "CreateNotification",
      "InputPath": "$",
      "ResultPath": "$.CreateReviewResult",
      "OutputPath": "$"      
    },
    "CreateNotification": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-west-2:529627678433:function:CreateNotification",
      "InputPath": "$",
      "ResultPath": "$.CreateNotificationResult",
      "OutputPath": "$",
      "End": true
    }
  }
}

enter image description here

1 Ответ

0 голосов
/ 31 августа 2018

Извините за поздний ответ.Вы, вероятно, решили это в промежутке, но вот вы

Итак, при цикле в пошаговых функциях я просто добавляю состояние выбора (см. Правила выбора состояний ).

Один из ваших штатов должен был бы вывести погоду, или вы не завершили цикл, или количество повторяемых элементов и общее количество элементов.

В первом случае это будет что-то вроде

{
  "Comment": "Scheduling Engine",
  "StartAt": "CreateReview",
  "States": {
    "GetReviews": {
       whatever
       "Next": "LoopChoiceState"
    },
    "LoopChoiceState": {
      "Type" : "Choice",
      "Choices": [
       {
          "Variable": "$.loopCompleted",
          "BooleanEquals": false,
          "Next": "GetReviews"
        }
      ],
      "Default": "YourEndState"
    },
    "CreateReview": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-westz2:529627678433:function:CreateReview",
      "Next": "CreateNotification",
      "InputPath": "$",
      "ResultPath": "$.CreateReviewResult",
      "OutputPath": "$"      
    },
    "CreateNotification": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-west-2:529627678433:function:CreateNotification",
      "InputPath": "$",
      "ResultPath": "$.CreateNotificationResult",
      "OutputPath": "$",
      "End": true
    }
  }
}

Второй случай:

{
  "Comment": "Scheduling Engine",
  "StartAt": "CreateReview",
  "States": {
    "GetReviews": {
       whatever
       "Next": "LoopChoiceState"
    },
    "LoopChoiceState": {
       "Type" : "Choice",
       "Choices": [
         {
           "Variable": "$.iteratedItemsCount",
           "NumericEquals": "$.totalItemsCount",
           "Next": "CreateNotification"
         }
     ],
     "Default": "CreateReview"
    },
    "CreateReview": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-west-2:529627678433:function:CreateReview",
      "Next": "CreateNotification",
      "InputPath": "$",
      "ResultPath": "$.CreateReviewResult",
      "OutputPath": "$"      
    },
    "CreateNotification": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-west-2:529627678433:function:CreateNotification",
      "InputPath": "$",
      "ResultPath": "$.CreateNotificationResult",
      "OutputPath": "$",
      "End": true
    }
  }
}

Вы также можете использовать индексы (текущий и последний индексы) вместо числа итерированных элементов;это поможет вам отслеживать, где вы находитесь в создании обзоров.

...