Обзор

Вопрос. Что такое AWS Step Functions?

AWS Step Functions – это полностью управляемый сервис для координации компонентов распределенных приложений и микросервисов с помощью наглядного представления рабочих процессов. Если приложение состоит из отдельных компонентов, каждый из которых выполняет свою функцию, которая упрощает масштабирование и изменение приложений.

Сервис Step Functions – это простой способ координировать работу компонентов и последовательно контролировать функции приложения. Сервис содержит графическую консоль, с помощью которой можно упорядочить и наглядно представить компоненты приложения в виде последовательности шагов. Это упрощает процесс создания многоступенчатых приложений.

Сервис Step Functions автоматически запускает каждый шаг, отслеживает его выполнение и при наличии ошибок перезапускает его. Таким образом можно проверить правильность работы приложения. Сервис Step Functions ведет журнал состояний каждого шага, чтобы при появлении ошибок можно было быстро определить и устранить их причину. Чтобы изменить или добавить шаг, не требуется даже писать код. Это позволяет легко развивать и совершенствовать приложение.

Вопрос: Каковы преимущества разработки приложений с использованием оркестрации сервисов?

Разбиение приложения на сервисы (или шаги) гарантирует, что сбой одного компонента не вызовет сбой системы в целом. Каждый компонент масштабируется независимо от других, и его можно обновлять без повторного развертывания системы целиком после каждого изменения.

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

Вопрос. Каковы распространенные примеры использования сервиса Step Functions?

Сервис Step Functions помогает при работе с любой вычислительной задачей или бизнес-процессом, которые можно разбить на ряд шагов. Кроме того, его удобно использовать для создания сквозных рабочих процессов, предназначенных для управления заданиями со взаимозависимостями. Некоторые примеры использования приведены ниже.

  • Обработка данных: консолидация данных из множества данных в объединенные отчеты, уточнение и уменьшение больших наборов данных и перевод их в форматы, пригодные для использования, итерирование и обработка миллионов файлов в корзине простого сервиса хранения данных Amazon (S3) с параллельными потоками или координация многоэтапных рабочих процессов аналитики и машинного обучения.
  • Создание бессерверных приложений на базе генеративного искусственного интеллекта: использование Step Functions для организации взаимодействия с базовыми моделями Amazon Bedrock, быстрого создания цепочек, точной настройки и расширения возможностей более 220 сервисов AWS.
  • Автоматизация DevOps и ИТ: создание средств для непрерывной интеграции и непрерывного развертывания или разработка приложений, управляемых по событиям, которые автоматически реагируют на изменения в инфраструктуре.
  • Интернет-коммерция: автоматизация критически важных бизнес-процессов, например процессов выполнения заказов и отслеживания запасов.
  • Веб-приложения: внедрение надежных процессов регистрации и аутентификации пользователей.

Дополнительные сведения см. в примерах использования сервиса AWS Step Functions и отзывах клиентов об этом сервисе.

Вопрос. Как работает сервис AWS Step Functions?

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

Состояния могут выполнять работу, делать выбор, передавать параметры, инициировать параллельное выполнение, управлять тайм-аутами, а также завершать рабочий процесс (успешно либо со сбоями).

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

Дополнительные сведения см. в разделе How Step Functions Works в руководстве разработчика AWS Step Functions.

Вопрос. Как сервис Step Functions подключается к моим ресурсам?

Вы можете управлять любым сервисом AWS благодаря интеграции с сервисами и любым компонентом самостоятельно управляемого приложения с помощью задач действий.

Интеграция с сервисами позволяет вам конструировать вызовы к сервисам AWS и включать ответы в свои рабочие процессы. Интеграция сервисов AWS-SDK дает возможность вызвать одно из более 9000 действий AWS API из более чем 200 сервисов непосредственно из своего рабочего процесса.

Кроме того, оптимизация интеграции сервисов упрощает использование распространенных сервисов, таких как AWS Lambda, эластичный контейнерный сервис Amazon (ECS), AWS Glue или Amazon EMR, за счет таких возможностей, как интеграция политик IAM и шаблон RunAJob, который будет автоматически ожидать завершения выполнения асинхронных заданий.

Задачи действий объединяют интеграцию с исполнителями действий, которые выполняются в выбранном вами расположении, в том числе в эластичном вычислительном облаке Amazon (EC2), Amazon ECS, на мобильном устройстве или на локальном сервере. Исполнитель действия опрашивает сервис Step Functions на наличие работы, принимает входные данные от сервиса Step Functions, выполняет работу, используя ваш код, и возвращает результаты. Так как исполнители действий запрашивают работу, то довольно легко использовать исполнители, развернутые за брандмауэром.

В конечном автомате в сервисе AWS Step Functions можно сочетать интеграцию сервисов и задачи действий. Кроме того, в приложениях в сервисе Step Functions можно сочетать исполнители действий, выполняемые в центре обработки данных, с задачами сервисов, выполняемыми в облаке. Исполнители в центре обработки данных будут работать как обычно, параллельно с любыми задачами сервисов в облаке.

Вопрос. Как начать работу со Step Functions?

Начать работу с сервисом Step Functions можно несколькими перечисленными ниже способами.

Вопрос. Какие языки можно использовать в Step Functions?

Конечные автоматы в сервисе AWS Step Functions заданы с помощью JSON с использованием описательного языка Amazon States Language.

Чтобы создать исполнитель действия, можно использовать любой язык программирования, так как обмениваться данными с сервисом AWS Step Functions можно с помощью API веб-сервисов.

Можно также использовать AWS SDK на удобном языке программирования. Lambda поддерживает код, написанный на языках Node.js (JavaScript), Python, Golang (Go) и C# (с использованием среды выполнения .NET Core и других языков). Дополнительные сведения о модели программирования Lambda см. в руководстве разработчика Lambda.

Вопрос. Мой рабочий процесс имеет некоторые свойства Standard Workflows и Express Workflows. Как я могу максимально эффективно их использовать?

Вы можете комбинировать два типа рабочих процессов.

  • Express Workflows могут выполняться как дочерние рабочие процессы Standard Workflows. Express Workflow инициируется из состояния Task в родительском рабочем процессе оркестровки и в целом завершается успехом или неудачей с точки зрения родительского процесса. Это зависит от политики повторных попыток родительского процесса для задачи.
  • Также можно вызывать Express Workflow из Express Workflow, если все рабочие процессы не превышают ограничение продолжительности родительского процесса. Вы можете разложить ваши рабочие процессы таким образом, если сценарий использования предусматривает сочетание шагов с длительным временем выполнения и однократных высокоскоростных с коротким жизненным циклом.

Вопрос. Как обеспечивается поддержка параллелизма в Step Functions?

Step Functions включает в себя Состояние сопоставления для динамического параллелизма. Состояние сопоставления использует два режима работы (встроенный и распределенный), и оба этих режима выполняют одни и те же шаги для сбора элементов. Сопоставление во встроенном режиме может поддерживать одновременное выполнение 40 параллельных ветвей и историю с пределом 25 000 событий или приблизительно 6 500 изменений состояния в рабочем потоке. В распределенном режиме могут одновременно выполняться до 10 000 ветвей. Сопоставление распределенного режима оптимизировано Amazon S3, что помогает ускорить итерации по объектам в корзине S3. См. Вопросы и ответы в разделе об интеграции. Итерации в распределенном режиме разбиваются на параллельно выполняемые действия, что помогает преодолеть ограничения рабочей нагрузки и пределом истории выполненных действий. Также вы можете указать, будет ли каждая итерация выполняться стандартным потоком операций, который является идемпотентным, или экспресс-потоком операций, который отличается более высокой скоростью и более низкой ценой, но не является идемпотентным. Подробнее о Состоянии сопоставления.

Сравнения

Вопрос. Когда лучше использовать Step Functions, а когда – Простой сервис очередей Amazon (Amazon SQS)?

Сервис AWS Step Functions рекомендуется использовать для координации компонентов сервисов при разработке высокомасштабируемых приложений, поддерживающих аудит. Если же необходима надежная, высокомасштабируемая выделенная очередь для отправки, хранения и приема сообщений в ходе взаимодействия между сервисами, лучше использовать сервис Amazon Simple Queue Service (Amazon SQS).
 
  • Step Functions отслеживает все задачи и события в приложении, а SQS необходимо самостоятельно реализовать отслеживание на уровне приложения, особенно если в приложении используется множество очередей.
  • Консоль Step Functions и API видимости обеспечивают детальный анализ работы приложений, позволяющий осуществлять поиск выполняющихся заданий, переходить к детальному просмотру того или иного задания и управлять ходом их выполнения. В сервисе SQS необходимо реализовывать дополнительные функциональные возможности.
  • В сервисе Step Functions имеется ряд функций, упрощающих разработку приложений, в том числе функции передачи данных между задачами и гибкие возможности распределения задач, в то время как SQS потребует от вас реализации функциональности на уровне приложения.
  • Step Functions имеет готовые возможности для построения рабочих процессов для координации работы вашего распределенного приложения. SQS позволяет строить базовые рабочие процессы, но имеет ограниченную функциональность.

Вопрос. Когда лучше использовать AWS Step Functions, а когда – Amazon Simple Workflow Service (SWF)?

Сервис Step Functions рекомендуется использовать при разработке любых новых приложений, так как он обеспечивает более продуктивный и гибкий подход к координации компонентов приложения с помощью наглядного представления рабочих процессов. Если в процессах необходимо использовать внешние сигналы или предполагается выполнять дочерние процессы, которые возвращают результат родительскому процессу, рекомендуется использовать сервис Amazon Simple Workflow Service (Amazon SWF).

В сервисе SWF вместо того, чтобы писать конечные автоматы в декларативном формате JSON, достаточно написать программу принятия решений, чтобы отделить рабочие шаги от шагов принятия решений. Это обеспечивает полный контроль над логикой механизмов оркестрации, но усложняет разработку приложений. Программы для принятия решений можно писать на любых языках либо, используя среду Flow, составлять их из программных элементов, которые автоматически организуют асинхронное взаимодействие.

Как интеграция конечных точек Step Functions с адресами HTTPS связана с конечными точками API Amazon EventBridge?

Amazon EventBridge – это бессерверный сервис, который использует события для соединения компонентов приложения, что упрощает разработчикам создание масштабируемых приложений, управляемых событиями. Конечные точки API – это функция EventBridge, которая позволяет создавать правила для передачи событий на сторонние адреса, чтобы отделить продюсеров и потребителей событий.

Интеграция AWS Step Functions с адресами HTTPS позволит запускать сервисы на основе HTTPS и получать ответ, который можно использовать для управления потоком исполнения в соответствии с бизнес-логикой. Amazon EventBridge специализируется на маршрутизации событий, а Step Functions – на оркестрации рабочих процессов и управлении состоянием. Интеграция конечных точек API EventBridge и Step Functions с адресами HTTPS может поддерживать подключение для аутентификации, что позволяет повторно использовать учетные данные аутентификации в разных сервисах. Оба сервиса можно использовать вместе для создания высокомасштабируемых и надежных распределенных приложений.

Интеграция

Вопрос. Как сервис Step Functions подключается к другим сервисам AWS и координирует с ними свою работу?

Рабочие процессы, которые вы создаете с помощью сервиса Step Functions, могут подключаться к более 200 сервисам AWS и координировать их, используя возможности интеграции. Ниже приведены несколько примеров.

  • Вызов функции AWS Lambda
  • Запуск задания ECS или AWS Fargate
  • Получение существующего элемента из таблицы Amazon DynamoDB и размещение нового элемента в таблице DynamoDB
  • Отправка задания Пакета AWS и ожидание его выполнения
  • Вызов базовой модели Amazon Bedrock
  • Публикация сообщения в теме SNS
  • Отправка сообщения в очередь Amazon SQS
  • Запуск задания AWS Glue
  • Создание задания Amazon SageMaker для обучения модели машинного обучения или пакетного преобразования набора данных

Дополнительные сведения о том, как использовать сервис Step Functions для подключения к другим сервисам AWS, см. в руководстве разработчика Step Functions. Вы также можете создавать задачи в своих конечных автоматах, которые выполняют приложения. См. вопросы и ответы в разделе Обзор, вопрос Как сервис AWS Step Functions подключается к моим ресурсам?

Для ознакомления с наиболее распространенными случаями использования Step Functions посетите страницу примеров использования, где представлены подробные описания таких случаев, а также визуализация их архитектуры.

Вопрос. Как сервис Step Functions интегрируется со сторонними приложениями?

Используя интеграцию AWS Step Functions с адресами HTTPS, вы можете напрямую интегрироваться с сервисами на основе HTTP, включая приложения SaaS. С помощью визуального интерфейса можно создавать и координировать распределенные приложения, состоящие из сервисов AWS и приложений SaaS.

Вопрос. Как протестировать, проанализировать или отладить процесс выполнения заданий?

Можно использовать API TestState для тестирования одного этапа рабочего процесса, что позволяет ускорить циклы обратной связи и разработку. TestState позволяет напрямую вызывать службы и адреса, изменять входные данные для имитации различных сценариев и просматривать ответ. Доступ к TestState можно получить через Workflow Studio, что упрощает тестирование во время проектирования без необходимости развертывать рабочий процесс. TestState принимает одно определение и ввод состояния, а затем синхронно возвращает выходные данные состояния вместе с их промежуточными преобразованиями. После запуска рабочего процесса можно анализировать и отлаживать выполнения с помощью Журналов Amazon CloudWatch, AWS X-Ray и непосредственно в консоли Step Functions с помощью визуального интерфейса оператора, помогающего быстро выявлять проблемные области. 

Вопрос. Как Step Functions могут помочь мне в обработке большого набора данных в S3?

Вы можете создавать рабочие потоки с помощью Состояния сопоставления в распределенном режиме для обработки больших объемов данных, например журналов, медиафайлов, торговых транзакций или данных с датчиков IoT. Step Functions будут проводить итерации по элементам и мгновенно начнут параллельное выполнение рабочих потоков, что позволит вам обеспечить обработку данных по требованию в любом масштабе. Состояние распределенного режима оптимизировано для работы с S3. В качестве входных данных вы можете указать корзину S3 с использованием критериев фильтрации, файла манифеста S3, коллекции JSON или CSV-файла, который хранится в S3. Также можно указать корзину S3 для выходных данных, получаемых в результате обработки распределенного сопоставления.

Как сервис Step Functions работает с сервисом API шлюз Amazon?

Вы можете связать свои API Step Functions с API шлюзом Amazon, чтобы эти API вызывали ваши конечные автоматы при отправке HTTPS-запроса в определенный вами метод API.

Вы можете использовать шлюз API для запуска конечных автоматов Step Functions, которые координируют компоненты распределенного серверного приложения, и интегрировать задачи, требующие действий человека, в шаги приложения, например при отправке запросов на утверждение и получения ответов на них.

Можно выполнять даже бессерверные асинхронные вызовы API сервисов, используемых приложением. Дополнительные сведения см. в нашем учебном пособии Creating a Step Functions API Using API Gateway.

Вопрос. Как AWS Step Functions работает с сервисом Amazon EventBridge?

Хореграфия и оркестровка – это две разные модели того, как распределенные сервисы могут взаимодействовать друг с другом. В оркестровке связь контролируется более жестко, а Step Functions, сервис оркестровки, координирует взаимодействие и порядок вызова сервисов.

Хореография обеспечивает коммуникацию без жесткого контроля. С помощью Amazon EventBridge события протекают между сервисами без централизованной координации. Многие приложения используют как хореографию, так и оркестровку для различных сценариев использования. 

Примерами совместного использования Step Functions и EventBridge могут быть отправка события или создание расписания с помощью EventBridge Scheduler для запуска рабочего процесса AWS Step Functions, с последующим выпуском событий на различных этапах рабочего процесса.

Что такое AWS Step Functions и AWS Lambda

AWS Lambda – это бессерверный, управляемый событиями вычислительный сервис, который позволяет вам выполнять код практически для неограниченного типа приложения или сервиса без предоставления серверов и их обслуживания. Step Functions – это сервис оркестрации бессерверных приложений, с помощью которого можно координировать работу нескольких функций Lambda и объединять их в гибкие рабочие процессы. Такие рабочие процессы просты в отладке и в них несложно вносить изменения. Step Functions позволяет не перегружать функции Lambda дополнительными логическими компонентами, запуская и отслеживая каждое действие вашего приложения вместо вас.

Является ли AWS Step Functions бессерверным сервисом?

Да, Step Functions – это бессерверный сервис оркестрации. Сервис Step Functions автоматически масштабирует операции и используемые вычислительные ресурсы, чтобы обеспечить достаточную производительность приложения при изменении нагрузки. Сервис Step Functions имеет встроенные функции отказоустойчивости и поддерживает необходимые объемы вычислительных ресурсов в различных зонах доступности в каждом из регионов, защищая рабочие процессы приложения от неисправностей отдельных единиц оборудования или сбоев на уровне центров обработки данных. Это позволяет обеспечить доступность как самого сервиса, так и запускаемых в нем приложений.
 
Step Functions предлагает модель тарификации «плата за использование» для повышения гибкости и оптимизации затрат. Подробнее о ценах на Step Functions.

Вопрос. Как функции ведения журналов и мониторинга работают для сервиса Step Functions?

Для мониторинга приложений сервис AWS Step Functions отправляет метрики в сервисы Amazon CloudWatch и AWS CloudTrail. Amazon CloudWatch собирает и отслеживает метрики, настраивает предупреждения и автоматически реагирует на изменения в сервисе AWS Step Functions.

Сервис CloudTrail регистрирует в качестве событий все вызовы API для сервиса Step Functions, включая вызовы из консоли Step Functions и вызовы из кода к API Step Functions. Кроме того, сервис Step Functions поддерживает управляемые правила CloudWatch Events для каждого интегрированного сервиса в вашем рабочем процессе, а также при необходимости создает правила CloudWatch Events и управляет ими в вашем аккаунте AWS.

Дополнительные сведения см. в разделе Monitoring and Logging в руководстве разработчика Step Functions.

Вопрос. Что произойдет, если мой рабочий процесс Express Workflow завершится неудачно по причине исчерпания попыток или неуправляемого исключения?

По умолчанию рабочие процессы Express Workflows передают данные со всеми результатами в журналы CloudWatch Logs, включая входящие и выходящие данные, а также выполненные шаги рабочего процесса. Вы можете выбрать разные уровни ведения журнала: регистрировать только ошибки, отменить регистрацию входящих и выходящих данных. Рабочие процессы, которые исчерпали повторные попытки или имеют неуправляемое исключение, необходимо перезапустить.

Вопрос. Как сервис Step Functions помогает создавать приложения на основе генеративного искусственного интеллекта?

В сервисе Step Functions оптимизирована интеграция с Amazon Bedrock. Вы можете вызывать базовые модели Bedrock непосредственно из рабочего процесса Step Functions, используя естественный язык. Это дает вам следующие возможности.   

  • Оптимизировать данные, обрабатываемые сервисом Step Functions, с помощью возможностей генеративного искусственного интеллекта, чтобы снизить сложность процессов обработки данных, таких как суммирование текста, генерация изображений или персонализация.
  • Извлекать информацию из баз данных, такую как последние цены на продукты и данные о персонализации пользователей, и использовать встроенные функции Step Functions для ввода ее в запрос, убедившись, что LLM использует самые актуальные данные для самого точного ответа.
  • Создавать вложения, используя Step Functions для просмотра и фрагментации документов, извлечения данных, а затем преобразования данных из цифрового текста во вложение в виде многоэтапного процесса. Это можно сделать повторяющимся действием.
  • Использовать рабочие процессы Step Function для быстрого образования цепочки действий. Вы можете организовать несколько вызовов LLM и выбрать наилучшую модель для каждого этапа цепочки, сформировав индивидуальную цепочку этапов обработки и составив более контекстно-ориентированные и точные ответы на основе базовой модели.
  • Налаживать взаимодействие задач с оператором в контуре управления (HITL) с помощью генеративного искусственного интеллекта, чтобы модерировать ответы во избежание галлюцинаций или использовать логику для обработки ответов, которые не поддерживаются базовой моделью.

Безопасность

Вопрос. Можно ли получить доступ к сервису Step Functions с помощью ресурсов в облаке Amazon VPC без подключения к Интернету?

Сервис Step Functions также поддерживает использование адресов VPC (VPCE) с помощью AWS PrivateLink. Вы можете обращаться к Step Functions с помощью функций AWS Lambda с поддержкой VPC и других сервисов AWS, минуя общедоступный Интернет.

Подробнее см. в разделе Amazon VPC Endpoints for AWS Step Functions руководства разработчика по AWS Step Functions.

Соответствие требованиям

Вопрос. Какие стандарты соответствия поддерживает сервис Step Functions?

Step Functions соответствует требованиям HIPAA, FedRAMP, SOC, GDPR и другим распространенным стандартам. Подробный список поддерживаемых стандартов соответствия см. на сайте по безопасности облака AWS.

Начало работы с AWS Step Functions

Перейти на страницу начала работы
Готовы начать?
Войти в консоль AWS Step Functions
Есть вопросы?
Связаться с нами