Amazon DVA-C02: Бессерверные вычисления и AWS Lambda — Руководство по подготовке

Часть AWS Developer Associate DVA-C02 — Руководство по подготовке. Практикуйтесь с проверенными ответами в центре экзаменов Amazon, или пройдите тесты на время на ExamRoll.io.

Версии, псевдонимы, слои и пакетирование

Версии Lambda — это неизменяемые снимки (snapshots) кода и конфигурации, создаваемые с помощью API PublishVersion (например, boto3.client(’lambda’).publish_version(FunctionName=‘MyFunc’)). Используйте версии для создания воспроизводимых релизов, а затем создавайте псевдонимы (aliases) (с помощью boto3.client(’lambda’).create_alias или update_alias) как стабильные указатели, которые также могут содержать конфигурацию маршрутизации для распределения трафика между версиями при постепенном развертывании. Слои (layers) предоставляют способ совместного использования общих нативных библиотек или пакетов среды выполнения; publish_layer_version позволяет подключать зависимости (например, скомпилированные бинарные файлы) отдельно от пакета функции, что уменьшает размер сборок и ускоряет холодные старты. Для пакетирования предпочитайте небольшие zip-архивы для быстрых развертываний (или загрузку через S3 для крупных артефактов) и используйте контейнерные образы, когда вам нужны значительные по размеру бинарные файлы или кастомные среды выполнения; команда docker build + aws lambda create-function –package-type Image зарегистрирует образы, хранящиеся в ECR (контейнерные образы поддерживают гораздо большие размеры). Распространенные ошибки включают встраивание учетных данных в переменные окружения, превышение лимитов на размер пакета развертывания и забывчивость о том, что слои версионируются и неизменяемы: обновляйте зависимости, публикуя новую версию слоя и обновляя конфигурацию функции. Для программных откатов обновите псевдоним, чтобы он указывал на предыдущую версию (boto3.client(’lambda’).update_alias(FunctionName=‘MyFunc’, Name=‘prod’, FunctionVersion=‘3’)), чтобы минимизировать влияние на операционную деятельность.

Среда выполнения, настройка производительности и смягчение холодных стартов

Производительность CPU в Lambda масштабируется вместе с памятью, поэтому улучшение нагрузок, ограниченных производительностью CPU, обычно достигается увеличением параметра MemorySize (через UpdateFunctionConfiguration), а не изменением отдельного параметра CPU. Измеряйте показатели с помощью AWS X-Ray и метрик CloudWatch, чтобы найти оптимальное соотношение между длительностью выполнения и стоимостью. На холодные старты влияют размер пакета, код инициализации, использование сети VPC (задержка подключения ENI) и среда выполнения языка. Смягчить их можно, сократив код инициализации, переместив тяжелые библиотеки в слои, используя Provisioned Concurrency (put_provisioned_concurrency_config) или применяя контейнерные образы с оптимизированными точками входа (entrypoints). Для функций, подключенных к VPC, избегайте всплесков задержек при холодных стартах, используя VPC-эндпоинты для S3/DynamoDB или RDS Proxy для ограничения постоянного пересоздания соединений и затрат на NAT Gateway. Убедитесь, что роль выполнения Lambda включает управляемую политику AWSLambdaVPCAccessExecutionRole и что в подсетях достаточно IP-адресов для ENI. Остерегайтесь таких ловушек, как синхронные тайм-ауты: устанавливайте тайм-аут функции меньше, чем у зависимых сервисов, чтобы внешние вызывающие системы получали согласованную модель обработки сбоев, и используйте токены идемпотентности для повторных попыток, поскольку сервисы, такие как SQS, SNS и Kinesis, обеспечивают семантику доставки «как минимум один раз» (at-least-once).

Доступ к VPC, эфемерное хранилище и средства контроля безопасности

Когда вы размещаете Lambda-функцию в VPC, необходимо настроить идентификаторы подсетей (subnet IDs) и группы безопасности (security groups) в конфигурации функции. После этого функция использует ENI в этих подсетях и нуждается в сетевых путях к внешним сервисам. Чтобы получить доступ к S3 или DynamoDB без NAT, создайте VPC-эндпоинты (типа Gateway для S3, типа Interface для многих других сервисов). Для баз данных предпочитайте использовать RDS Proxy для создания пула соединений и сокращения пикового создания новых подключений. Каталог /tmp предоставляет эфемерное хранилище для среды выполнения и доступен для записи во время вызова; при необходимости настройте больший объем эфемерного хранилища (параметр EphemeralStorage), но по возможности проектируйте функции без состояния (stateless). Защищайте секреты, храня их в AWS Secrets Manager или Parameter Store (SSM) и предоставляя роли Lambda минимальные необходимые привилегии (least privilege). Получайте секреты во время холодного старта с помощью boto3.client(‘secretsmanager’).get_secret_value(SecretId=arn) или используйте переменные окружения, зашифрованные с помощью ключа KMS, указанного в параметре KMSKeyArn функции. Распространенные ошибки разработчиков включают отсутствие VPC-эндпоинтов, что приводит к тайм-аутам, встраивание ключей в открытом виде в код и неэффективную ротацию или кэширование секретов, что приводит к троттлингу (регулированию) вызовов API Secrets Manager.

Интеграция с источниками событий, обработка ошибок, локальное тестирование и стратегии развертывания

Lambda нативно интегрируется со многими источниками событий: уведомлениями S3, DynamoDB Streams, Kinesis, SQS и API Gateway. Для потоковых источников настраивайте размер пакета (batch size) и parallelizationFactor, отслеживайте IteratorAge и обрабатывайте частичные сбои, поскольку Lambda будет повторять обработку неудавшихся пакетов и может блокировать последующую обработку при постоянных ошибках. Для асинхронных вызовов используйте очереди недоставленных сообщений (DLQ) или Destinations для перехвата сбоев (настройте асинхронный вызов с назначениями onFailure/onSuccess). Функции, запускаемые по триггеру S3, должны быть защищены от рекурсивных вызовов при обратной записи в тот же бакет путем проверки ключей объектов или использования тегов объектов. Локальное тестирование лучше всего проводить с помощью AWS SAM CLI (sam build; sam local invoke; sam local start-api) или контейнеризированных сред выполнения Lambda; в модульных тестах можно использовать moto или локальные моки, но интеграционные тесты следует запускать на реальных ресурсах AWS во временных тестовых аккаунтах. При развертывании следует использовать версионированные функции и псевдонимы (aliases) со смещением трафика через CodeDeploy или UpdateAlias с RoutingConfig для выполнения канареечных или линейных развертываний; для верификации реализуйте хуки PreTraffic и PostTraffic. Типичные ловушки — это игнорирование идемпотентности при повторных попытках, необработка частичных ответов BatchGetItem (проверяйте UnprocessedKeys) и использование слишком широких IAM-ролей для выполнения.

Практическая задача: Сценарий использования

Сценарий: Компания PhotoSpot Inc использует Lambda-функцию на Python, которая обрабатывает изображения, загруженные в S3, записывает метаданные в DynamoDB и вызывает сторонний API для оптимизации изображений. Функции требуется высокая производительность при холодном старте, безопасное хранение учетных данных API, возможность безопасного отката и доступ к RDS Proxy в VPC для обогащения метаданных.

Задача: Уменьшить задержку холодного старта для загрузок, видимых пользователям, защитить и ротировать ключ стороннего API, а также обеспечить безопасные откаты без простоя и контролируемое смещение трафика.

Рекомендуемый подход:

  1. Создавайте и публикуйте неизменяемые (immutable) релизы: используйте AWS CLI или boto3 для обновления кода, затем публикуйте версию с помощью

undefined

и создавайте/обновляйте псевдоним (alias) с помощью

undefined

. 2. Смягчайте холодные старты: настройте Provisioned Concurrency для псевдонима с помощью

undefined

и переместите тяжелые нативные библиотеки в опубликованный слой (

undefined

). 3. Защищайте учетные данные: храните ключ стороннего API в AWS Secrets Manager, предоставьте IAM-роли Lambda минимально необходимые привилегии и получайте ключ при холодном старте с помощью

undefined

вместо встраивания секретов в код или хранения в незашифрованных переменных окружения. 4. Работа с VPC и подключениями: разместите функцию в приватных подсетях с группами безопасности, используйте RDS Proxy для доступа к БД, чтобы избежать «шторма подключений», и создайте VPC endpoint для S3, чтобы чтение изображений не требовало NAT.

Обоснование: Использование версий и псевдонимов (aliases) со смещением трафика обеспечивает безопасное развертывание и немедленный откат путем перенаправления псевдонима. Provisioned Concurrency и слои уменьшают задержку инициализации, а Secrets Manager централизует ротацию учетных данных и минимизирует риск их раскрытия. RDS Proxy и VPC endpoints снижают задержку и операционные затраты за счет уменьшения постоянного пересоздания подключений и зависимости от NAT.


Все домены · Amazon API Gateway и интеграция приложений

Отработать эти вопросы → · Тесты на время на ExamRoll.io →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

Сдайте экзамен →

Просмотреть Amazon →

Related guides

Все включено

Одна подписка. Каждый экзамен.

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

Ежемесячно
24.87
Just €0.83/day
Все включено:
  • Неограниченный поиск ответов
  • Неограниченные практические тесты
  • Объяснения на основе AI
  • Полная библиотека ресурсов
  • 20+ языков
  • Еженедельные обновления контента
  • Награды и рефералы
  • Приоритетная поддержка
Начать бесплатную пробную версию

Кредитная карта не требуется*

Лучшая цена
12 месяцев
179.87
Just €0.49/daySave 40%
Все включено:
  • Неограниченный поиск ответов
  • Неограниченные практические тесты
  • Объяснения на основе AI
  • Полная библиотека ресурсов
  • 20+ языков
  • Еженедельные обновления контента
  • Награды и рефералы
  • Приоритетная поддержка
Начать бесплатную пробную версию

Кредитная карта не требуется*

✓ Включен бесплатный план · ✓ Отмена в любое время · ✓ Все планы открывают полный продукт