У вас может быть один лямбда-запуск другого асинхронно. Тогда вы можете иметь маленькие, быстрые функции. Вот пример Python кода для этого:
payload = {'any-data-you-need-to-pass-along': 'your_data',
'resources': ['you_can_make_this_something_custom']}
lambda_client = boto3.client('lambda')
lambda_client.invoke(FunctionName=the_arn_of_function_you_want_to_call,
InvocationType='Event',
Payload=json.dumps(payload))
Ключ должен использовать InvocationType типа «Событие», так как вызов вызывает асинхронность вызова. Одним из преимуществ этого подхода является то, что у каждого отдельного типа запроса может быть лямбда, которая соответствует его потребностям с точки зрения памяти и времени ожидания. Если все работает в одной большой лямбда-выражении, например, в большом выражении switch, тогда ваша лямбда должна быть сконфигурирована на максимальный объем памяти, который требуется для любого из типов запросов, и это может означать, что небольшие типы запросов выполняются с большим объемом, чем им нужно, и тратят впустую ваши деньги. .
Я рекомендую вам прочитать асинхронные заметки здесь , в которых говорится о других соображениях:
Для асинхронного вызова Lambda добавляет события в очередь перед отправкой. их к вашей функции. Если вашей функции не хватает мощности, чтобы не отставать от очереди, события могут быть потеряны. Время от времени ваша функция может получать одно и то же событие несколько раз, даже если ошибки не происходит. Чтобы сохранить события, которые не были обработаны, настройте свою функцию с очередью недоставленных сообщений.
Если вам нужно больше потока, вы должны изучить пошаговые функции: https://aws.amazon.com/getting-started/tutorials/create-a-serverless-workflow-step-functions-lambda/