Отображение ступенчатой ​​функции

Вариант использования: я хотел бы сопоставить массив SKU в полученном JSON, выполнить запрос GET с SKU, получить product_id из этого запроса и заново создать массив, заменив SKU (по порядку) их соответствующими product_id.

Шаг Функция Шаги:

  1. Код ввода получен
  2. Задача карты -> GET Запрос -> ??
  3. Новый объект создан с помощью product_id
  4. Новый объект используется для бизнеса

Пример кода ввода:

{
  "data": {
      "product": {
          "configurable_product_links": [
              "SKU1",
              "SKU2",
              "SKU3",
              "SKU4"
          ]
      }
  }
}

Пример выходного кода:

{
  "data": {
      "product": {
          "configurable_product_links": [
              "product_id_1",
              "product_id_2",
              "product_id_3",
              "product_id_4"
          ]
      }
  }
}

Я буду использовать шаблон возврата обратного вызова с пошаговой функцией для постановки запросов в очередь в API, из которого я получаю product_ids.

Пробовали ли вы примеры из docs.aws.amazon.com/step-functions/latest/dg/…?

luk2302 03.02.2023 10:34

Часть, с которой я концептуально борюсь, - это понимание того, как вернуть новый массив обратно в JSON.

Luke 03.02.2023 11:04

Если вы посмотрите на фрагмент "Validate All": с помощью ResultPath.

luk2302 03.02.2023 11:05
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

При отображении через массив в Step Functions он не позволяет получить доступ к информации о предыдущей задаче за пределами карты.

При выполнении запроса GET требуются учетные данные, и их жесткое кодирование является плохой практикой. Для AWS можно использовать секретный менеджер.

Таким образом, решение этой проблемы было решено с помощью Итерации цикла с использованием Lambda.

Мы посчитаем количество элементов в массиве и пройдем до конца. Это снимает ограничения задачи карты, но при этом выполняет требования.

Зачем вам нужен «доступ к информации о предыдущей задаче»? Состояние Map будет рассеивать ваши запросы. Он выводит массив результатов, который сохраняет исходный порядок ввода.

fedonev 07.02.2023 15:48

Мне нужно получить секреты от Secrets Manager и сделать запрос HTTPPOST для каждого сопоставленного элемента. Мне нужно было сделать это один раз вверху перед циклом (чтобы быть более эффективным).

Luke 08.02.2023 15:03
Ответ принят как подходящий

Состояние карты может обрабатывать этот вариант использования. В поле ItemProcessor будет указана задача Lambda для выполнения поиска. На выходе будет массив результатов. Массив результатов сохраняет порядок входного массива ItemsPath.

Хотя итерации Map по умолчанию получают одно входное значение, вы можете передавать произвольные входные данные для каждой итерации. Состояния карты имеют свойство ItemSelector , которое «переопределяет значения элементов входного массива перед их передачей в каждую итерацию состояния карты». У вас есть доступ к $$ объекту контекста и объекту ввода $.

"ItemSelector": {
        "Index.$": "$$.Map.Item.Index",
        "Value.$": "$$.Map.Item.Value",
        "Secret.$": "$.previousTask.secret",
},

Другие вопросы по теме