Шаговые функции и лямбда-функции — мощные инструменты в области бессерверных вычислений. Шаговые функции позволяют координировать и упорядочивать несколько функций Lambda для создания сложных рабочих процессов и конечных автоматов. В этой статье мы рассмотрим различные методы вызова ступенчатых функций с использованием лямбда-функций, а также примеры кода для каждого подхода. Давайте погрузимся!
Метод 1: вызов AWS SDK (Boto3)
Один из самых простых способов вызвать пошаговую функцию из функции Lambda — использовать AWS SDK, в частности библиотеку Boto3 для Python. Вот пример фрагмента кода:
import boto3
def lambda_handler(event, context):
client = boto3.client('stepfunctions')
response = client.start_execution(
stateMachineArn='YOUR_STATE_MACHINE_ARN',
input='{"key1": "value1", "key2": "value2"}'
)
return response
Метод 2: вызов AWS CLI
Если вы предпочитаете использовать интерфейс командной строки (CLI) AWS, вы можете вызвать пошаговую функцию из лямбда-функции с помощью команды aws stepfunctions start-execution. Вот пример фрагмента кода:
import subprocess
def lambda_handler(event, context):
subprocess.run(['aws', 'stepfunctions', 'start-execution',
'--state-machine-arn', 'YOUR_STATE_MACHINE_ARN',
'--input', '{"key1": "value1", "key2": "value2"}'])
return
Метод 3: прямой вызов HTTP
Шаговые функции предоставляют RESTful API, который позволяет выполнять прямые HTTP-запросы для вызова конечного автомата. При таком подходе вы можете использовать библиотеку requestsв Python для отправки запроса POST в API Step Functions. Вот пример фрагмента кода:
import requests
import json
def lambda_handler(event, context):
url = 'https://states.YOUR_REGION.amazonaws.com/'
headers = {'Content-Type': 'application/json'}
data = {
'input': '{"key1": "value1", "key2": "value2"}',
'stateMachineArn': 'YOUR_STATE_MACHINE_ARN'
}
response = requests.post(url, headers=headers, data=json.dumps(data))
return response.json()
Метод 4: вызов EventBridge (события CloudWatch).
AWS EventBridge (ранее известный как CloudWatch Events) может запускать функцию Step на основе различных событий в экосистеме AWS. Настроив правило EventBridge для вызова функции Step, вы можете использовать функции Lambda для генерации события и запуска рабочего процесса. Вот пример фрагмента кода:
import boto3
def lambda_handler(event, context):
client = boto3.client('events')
response = client.put_events(
Entries=[
{
'Source': 'aws.lambda',
'DetailType': 'StepFunctionTrigger',
'Detail': '{"key1": "value1", "key2": "value2"}',
'EventBusName': 'default',
'Resources': ['YOUR_STATE_MACHINE_ARN']
}
]
)
return response
В этой статье мы рассмотрели четыре различных метода вызова ступенчатых функций с использованием лямбда-функций. Независимо от того, предпочитаете ли вы использовать AWS SDK, интерфейс командной строки, прямой вызов HTTP или EventBridge, у вас есть несколько вариантов запуска пошаговых функций и автоматизации рабочих процессов. Выберите подход, который лучше всего соответствует вашим потребностям, и используйте возможности бессерверных вычислений!