Функции Lambda: среды выполнения, триггеры и обработчики
Напишите функцию Lambda, выберите среду выполнения, настройте память и время ожидания и подключите её к событию S3 или триггеру API Gateway.
«Функции Lambda: среды выполнения, триггеры и обработчики» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Что такое AWS Lambda
AWS Lambda — это бессерверная вычислительная служба, которая запускает Ваш код в ответ на события без необходимости подготавливать серверы или управлять ими. Вы платите только за потреблённое вычислительное время, измеряемое в миллисекундах, поэтому Lambda чрезвычайно экономична для нерегулярных рабочих нагрузок, управляемых событиями. Lambda автоматически масштабируется от нуля до тысяч параллельных выполнений в зависимости от входящих событий.
Поддерживаемые среды выполнения
Lambda поддерживает управляемые среды выполнения, включая Python, Node.js, Java, Go, Ruby, .NET и другие. AWS поддерживает эти среды выполнения и устанавливает для них исправления безопасности. Для языков или версий сред выполнения, которые не поддерживаются изначально, можно предоставить пользовательскую среду выполнения с помощью исполняемого файла bootstrap или упаковать функцию в образ контейнера размером до 10 GB вместо ZIP-пакета развёртывания.
Функция-обработчик Lambda
У каждой функции Lambda есть обработчик — точка входа, которую необходимо экспортировать из кода. AWS вызывает обработчик с двумя аргументами: объектом события (входными данными от источника вызова) и объектом контекста (метаданными о вызове, такими как имя функции, оставшееся время и идентификатор запроса). Обработчик возвращает ответ, который в зависимости от типа вызова может быть передан вызывающей стороне.
# Python handler example
def lambda_handler(event, context):
# event contains the trigger payload
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
print(f'Processing {key} from {bucket}')
return {
'statusCode': 200,
'body': 'Processed successfully'
}Память, время ожидания и эфемерное хранилище
Lambda позволяет настроить объём памяти от 128 MB до 10 240 MB. CPU выделяется пропорционально объёму памяти: больше памяти означает больше CPU. Время ожидания можно установить от 1 секунды до 15 минут; если функция превышает это значение, Lambda завершает её работу. Также предоставляется эфемерное хранилище /tmp (по умолчанию 512 MB, с возможностью настройки до 10 GB) для временных файлов в рамках одного вызова. Это хранилище не сохраняется между вызовами.
Синхронный и асинхронный вызов
Функции Lambda можно вызывать синхронно (вызывающая сторона ожидает результат — так работают API Gateway и ALB) или асинхронно (вызывающая сторона не ожидает результат — так работают события S3 и SNS). В асинхронном режиме Lambda повторяет неудачные выполнения до двух раз и может направлять неудачные события в очередь недоставленных сообщений (SQS или SNS) либо в шину событий EventBridge. Выбор подходящего режима вызова влияет на проектирование обработки ошибок.
Распространённые источники вызова Lambda
Lambda поддерживает нативную интеграцию с десятками сервисов AWS в качестве источников событий (источников вызова):
- API Gateway / ALB: HTTP-запросы (синхронно)
- S3: события создания и удаления объектов (асинхронно)
- потоки DynamoDB / Kinesis: потоковая передача записей (синхронно, на основе опроса)
- SQS: сообщения очереди (на основе опроса)
- SNS: уведомления темы (асинхронно)
- EventBridge: запланированные или пользовательские события
- журналы CloudWatch: фильтры подписки на журналы
Роль выполнения IAM
У каждой функции Lambda должна быть роль выполнения IAM, предоставляющая функции разрешения на вызов других сервисов AWS. Например, если функция читает данные из S3 и записывает их в DynamoDB, роли выполнения нужны разрешения s3:GetObject и dynamodb:PutItem. Следуйте принципу минимальных привилегий: предоставляйте только те разрешения, которые действительно нужны функции. Базовая роль выполнения также должна включать logs:CreateLogGroup, logs:CreateLogStream и logs:PutLogEvents для журналов CloudWatch.
Пакеты развёртывания и ограничения размера
Lambda поддерживает два формата развёртывания: ZIP-файл (50 MB в сжатом виде, 250 MB в распакованном), загружаемый напрямую или через S3, и образ контейнера (до 10 GB), хранящийся в Amazon ECR. ZIP-пакеты развёртываются быстрее и хорошо подходят для небольших функций и слоёв Lambda. Образы контейнеров оптимальны для больших наборов зависимостей или команд, которые уже используют рабочие процессы на основе Docker. Оба формата могут использовать одни и те же среды выполнения и схему обработчика.
# Deploy a ZIP package from S3
aws lambda update-function-code \
--function-name 'MyFunction' \
--s3-bucket 'my-lambda-packages' \
--s3-key 'my-function-v2.zip'Переменные среды и секреты
Передавайте конфигурацию в Lambda через переменные среды. Конфиденциальные значения (ключи API, пароли баз данных) храните в AWS Secrets Manager или хранилище параметров и получайте их при инициализации функции (вне обработчика), чтобы использовать контекст выполнения повторно. Никогда не встраивайте секреты в код функции и не храните их в переменных среды в открытом виде — используйте шифрование KMS для переменных среды Lambda, чтобы защитить их при хранении.
import boto3
import os
# Fetch secret once during cold start (outside handler)
ssm = boto3.client('ssm')
DB_PASSWORD = ssm.get_parameter(
Name=os.environ['DB_PASSWORD_PARAM'],
WithDecryption=True
)['Parameter']['Value']
def lambda_handler(event, context):
# DB_PASSWORD is already loaded; no SSM call on each invocation
passХолодный запуск и повторное использование контекста выполнения
Первый вызов функции Lambda после развёртывания или периода бездействия сопровождается холодным запуском: AWS должна инициализировать среду выполнения, загрузить пакет развёртывания и выполнить код инициализации. Последующие вызовы в той же среде выполнения являются тёплыми запусками и выполняются значительно быстрее. Размещайте глобальный код инициализации (клиенты SDK, подключения к базам данных) вне обработчика, чтобы повторно использовать контекст выполнения при тёплых вызовах.
Lambda в VPC
По умолчанию Lambda работает в VPC, управляемой AWS, и может обращаться к интернету, но не к ресурсам вашей частной VPC. Чтобы получить доступ к базе данных RDS или кластеру ElastiCache в частной подсети, настройте запуск Lambda внутри вашей VPC, указав подсети и группы безопасности. Функции Lambda с поддержкой VPC используют для сетевого взаимодействия Hyperplane ENI (теперь ENI не выделяется отдельно для каждой функции), что устраняет историческую задержку холодного запуска для Lambda в VPC.
aws lambda update-function-configuration \
--function-name 'MyFunction' \
--vpc-config 'SubnetIds=subnet-aaa111,subnet-bbb222,SecurityGroupIds=sg-xyz'Быстрая проверка
Проверьте своё понимание концепций AWS Solutions Architect (SAA-C03) из этого урока.
Итоги урока
В этом уроке Вы узнали, что среды выполнения Lambda поддерживают Python, Node.js, Java, Go и другие языки, а для особых случаев доступны пользовательские среды выполнения и образы контейнеров; источники вызова, включая API Gateway (синхронно) и S3/SNS (асинхронно), определяют, как события поступают в функции Lambda; а роль выполнения, переменные среды и конфигурация VPC — ключевые аспекты безопасного подключения Lambda к другим сервисам AWS. Далее мы рассмотрим параллелизм Lambda, ограничение скорости и зарезервированный параллелизм.
Изучай Cloud & IT Cert Prep с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 150
- Уроки
- 600
Часто задаваемые вопросы
Урок «Функции Lambda: среды выполнения, триггеры и обработчики» бесплатный?
Да — полный текст урока «Функции Lambda: среды выполнения, триггеры и обработчики» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Чему я научусь в уроке «Функции Lambda: среды выполнения, триггеры и обработчики»?
Напишите функцию Lambda, выберите среду выполнения, настройте память и время ожидания и подключите её к событию S3 или триггеру API Gateway. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?
Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Функции Lambda: среды выполнения, триггеры и обработчики»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?
Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Функции Lambda: среды выполнения, триггеры и обработчики
- Параллелизм, ограничение частоты и зарезервированный параллелизм
- Слои Lambda и пакеты развёртывания
- Lambda@Edge и событийно-ориентированные шаблоны