- Вычисления›
- AWS Lambda›
- Вопросы и ответы
Вопросы и ответы по AWS Lambda
Темы страниц
Общие вопросыОбщие вопросы
Вопрос: Что такое AWS Lambda?
Вопрос: Что такое бессерверные вычисления?
Бессерверные вычисления позволяют создавать и запускать приложения и сервисы, не беспокоясь о серверах. При бессерверных вычислениях приложение по‑прежнему работает на серверах, но управление этими серверами AWS полностью берет на себя. В основе бессерверных вычислений лежит сервис AWS Lambda, позволяющий запускать код без выделения серверов или управления ими.
Вопрос: Какие события могут запустить функцию AWS Lambda?
Полный перечень источников событий см. в нашей документации.
Вопрос: В каких случаях стоит использовать AWS Lambda вместо Amazon EC2?
Amazon Web Services предлагает большое количество вычислительных сервисов, которые подходят для самых разнообразных потребностей.
Amazon EC2 — это гибкий сервис с большим выбором различных типов инстансов и вариантов настроек операционной системы, сети, параметров безопасности и всего программного стека, который позволяет без труда переместить существующие приложения в облако. При использовании Amazon EC2 клиент берет на себя ответственность за предоставление ресурсов, мониторинг работоспособности и производительности групп инстансов, а также за обеспечение отказоустойчивости и масштабирование. AWS Elastic Beanstalk — удобный сервис для развертывания и масштабирования веб‑приложений, при использовании которого базовые инстансы EC2 по‑прежнему принадлежат пользователю и полностью контролируются им. Сервис контейнеров Amazon EC2 — это масштабируемый сервис управления, поддерживающий контейнеры Docker и позволяющий запускать распределенные приложения в управляемом кластере инстансов Amazon EC2 без лишних усилий.
AWS Lambda позволяет исполнять код в качестве ответа на какое‑либо событие, например изменение корзины Amazon S3, обновление таблицы Amazon DynamoDB или специальные события, созданные определенными приложениями или устройствами. При использовании Lambda не приходится самостоятельно выделять инстансы. Lambda выполняет от имени пользователя все операционные и административные действия, в том числе распределение ресурсов, мониторинг работоспособности инстансов, применение обновлений безопасности к базовым вычислительным ресурсам, развертывание кода, запуск интерфейса веб‑сервиса, а также мониторинг кода и ведение соответствующих журналов. AWS Lambda обеспечивает легкое масштабирование и высокую доступность для кода без каких-либо дополнительных усилий с вашей стороны.
Вопрос: Какой код можно запустить на AWS Lambda?
Вопрос: Какие языки поддерживает AWS Lambda?
AWS Lambda обеспечивает встроенную поддержку Java, Go, PowerShell, Node.js, C#, Python и Ruby, а также предоставляет API Runtime, с помощью которого для создания функций можно использовать любой дополнительный язык программирования. Ознакомьтесь с нашей документацией по использованию Node.js, Python, Java, Ruby, C#, Go и PowerShell.
Вопрос: Можно ли получить доступ к инфраструктуре, на которой работает AWS Lambda?
Вопрос: Как в AWS Lambda обеспечивается изоляция кода?
Вопрос: Как в AWS Lambda обеспечивается безопасность кода?
Вопрос: В каких регионах AWS работает AWS Lambda?
Функции AWS Lambda
Вопрос: Что такое функция AWS Lambda?
Вопрос: Использует ли AWS Lambda инстансы функций повторно?
В целях повышения производительности (чтобы не создавать новые копии инстансов) инстансы функций в AWS Lambda могут сохраняться для обработки дальнейших запросов. Подробнее о том, как Lambda повторно использует инстансы функций, см. в нашей документации. В коде необходимо учитывать, что это случается не всегда.
Вопрос: Как быть, если выполнение функций AWS Lambda требует рабочего пространства на диске?
Вы можете предоставить каждой функции Lambda собственное краткосрочное хранилище размером от 512 МБ до 10 240 МБ с шагом в 1 МБ. Временное хранилище доступно в каталоге /tmp каждой функции.
Каждая функция имеет доступ к 512 МБ хранилища без дополнительной платы. Когда вы выделяете для своих функций более 512 МБ краткосрочной памяти, с вас взимается плата в зависимости от указанного размера хранилища и времени выполнения функции, измеряемого с шагом в 1 мс. Для сравнения: в регионе Восток США (Огайо) цена на краткосрочное хранение для AWS Fargate составляет 0,000111 USD за 1 ГБ в час или 0,08 USD за 1 ГБ в месяц. Цена на том хранилища Amazon EBS gp3 в регионе Восток США (Огайо) составляет 0,08 USD за 1 ГБ в месяц. Цена на краткосрочное хранение AWS Lambda составляет 0,0000000309 USD за 1 ГБ в секунду или 0,000111 USD за 1 ГБ в час и 0,08 USD за 1 ГБ в месяц. Подробнее см. в разделе Цены на AWS Lambda.
Вопрос. Как настроить приложение для использования краткосрочного хранилища AWS Lambda?
Вопрос. Шифруется ли информация в краткосрочном хранилище AWS Lambda?
Вопрос. Какие метрики можно использовать для отслеживания использования краткосрочного хранилища AWS Lambda?
Для отслеживания использования краткосрочного хранилища AWS Lambda можно использовать метрики AWS CloudWatch Lambda Insight. Дополнительную информацию см. в документации AWS CloudWatch Lambda Insights.
Вопрос. Когда следует использовать Amazon S3, Amazon EFS или краткосрочное хранилище AWS Lambda для бессерверных приложений?
Если вашему приложению требуется надежное постоянное хранилище, воспользуйтесь Amazon S3 или Amazon EFS. Если вашему приложению требуется хранить данные, которые нужны коду для выполнения отдельной функции, воспользуйтесь краткосрочным хранилищем AWS Lambda как временным кэшем. Дополнительную информацию см. в разделе Выбор хранилища данных AWS Lambda для веб-приложений.
Вопрос. Можно ли пользоваться краткосрочным хранилищем, когда для функции Lambda включена функция Provisioned Concurrency?
Да. Однако, если вашему приложению требуется постоянное хранилище, воспользуйтесь Amazon EFS или Amazon S3. Когда для функции Lambda включена функция Provisioned Concurrency, код инициализации вашей функции выполняется во время распределения ресурсов, а также каждые несколько часов по мере утилизации инстансов вашей функции. Вы можете просмотреть время инициализации в журналах и маршрутах после обработки запроса инстансом. Однако плата за инициализацию взимается, даже если инстанс ни разу не обрабатывает запрос. Это поведение при инициализации Provisioned Concurrency может повлиять на взаимодействие вашей функции с данными, которые хранятся в краткосрочном хранилище, даже если ваша функция не обрабатывает запросы. Чтобы узнать больше о Provisioned Concurrency, см. соответствующую документацию.
Вопрос. Как настроить приложение для использования краткосрочного хранилища AWS Lambda?
Вопрос. Шифруется ли информация в краткосрочном хранилище AWS Lambda?
Вопрос. Какие метрики можно использовать для отслеживания использования краткосрочного хранилища AWS Lambda?
Для отслеживания использования краткосрочного хранилища AWS Lambda можно использовать метрики AWS CloudWatch Lambda Insight. Дополнительную информацию см. в документации AWS CloudWatch Lambda Insights.
Вопрос: Почему функции AWS Lambda не должны сохранять состояние?
Вопрос: Можно ли использовать потоки и процессы в коде функции AWS Lambda?
Вопрос: Какие существуют ограничения для кода функции AWS Lambda?
Вопрос: Как создать функцию AWS Lambda, используя консоль Lambda?
При использовании Node.js или Python можно написать код функции с помощью редактора кода в консоли AWS Lambda, который позволяет создавать и тестировать функции, а также просматривать результаты их исполнения в надежной среде, похожей на IDE. Чтобы начать работу, перейдите в консоль.
Вы также можете заархивировать код (и любые зависимые библиотеки) в формат ZIP и загрузить архив с локального компьютера, используя консоль AWS Lambda, либо указать местоположение этого файла ZIP в Amazon S3. Размер загрузок не должен превышать 50 МБ (в сжатом виде). Для создания и развертывания функций Lambda на Java можно использовать подключаемый модуль AWS Eclipse. Для создания и развертывания функций Lambda на C# и Node.js можно использовать подключаемый модуль Visual Studio.
Вопрос: Как создать функцию AWS Lambda, используя интерфейс командной строки Lambda?
Вы можете заархивировать код (и любые зависимые библиотеки) в формат ZIP и загрузить архив с локального компьютера, используя AWS CLI, либо указать местоположение этого файла ZIP в Amazon S3. Размер загрузок не должен превышать 50 МБ (в сжатом виде). Чтобы начать работу, перейдите на страницу Руководство по началу работы с Lambda.
Вопрос: Поддерживает ли AWS Lambda переменные среды?
Да. Переменные среды можно просто создавать и изменять в консоли AWS Lambda, с помощью интерфейса командной строки или SDK. Подробнее о переменных среды см. в документации.
Вопрос: Можно ли хранить конфиденциальную информацию в переменных среды?
Для конфиденциальной информации, например паролей к базам данных, рекомендуется использовать шифрование на стороне клиента с помощью сервиса управления ключами AWS и хранить полученные значения в виде зашифрованного текста в переменных среды. Для расшифровки этих значений необходимо будет включить алгоритм расшифровки в код функции AWS Lambda.
Вопрос: Как управлять функциями AWS Lambda?
Вы можете настроить и защитить ресурсы, связанные с функцией Lambda, с помощью API или консоли Lambda. Дополнительную информацию об этом вы можете найти в документации.
Вопрос: Можно ли использовать код для нескольких функций?
Да, любой код (платформы, пакеты SDK, библиотеки и т. д.) можно упаковать как уровень Lambda и использовать его с множеством функций, а также управлять им.
Вопрос: Как происходит мониторинг функции AWS Lambda?
AWS Lambda автоматически выполняет мониторинг функции Lambda от имени пользователя, в режиме реального времени отправляя в Amazon CloudWatch соответствующие метрики, в том числе общее количество запросов, использованный ресурс параллельного исполнения на уровнях аккаунтов и функций, задержку, частоту возникновения ошибок и количество запросов, пропущенных вследствие ограничений. Просматривать статистику для каждой функции Lambda можно в консоли Amazon CloudWatch или консоли AWS Lambda. В функциях Lambda также можно использовать сторонние API для мониторинга.
Подробную информацию см. на странице Устранение неисправностей в метриках CloudWatch. Стандартная плата за использование AWS Lambda включает работу со встроенными метриками.
Вопрос: Как устранять неисправности в работе функции AWS Lambda?
AWS Lambda автоматически интегрируется с сервисом Amazon CloudWatch Logs, создавая группу журналов для каждой функции Lambda и собирая информацию о базовом жизненном цикле приложения, включая записи о ресурсах, использованных при каждом запуске функции. Можно без труда вставить в код дополнительные операторы для сохранения в журнале. В функциях Lambda можно также использовать сторонние API для ведения журналов. Подробную информацию см. на странице Устранение неисправностей функций Lambda. Использование логов Amazon CloudWatch оплачивается отдельно.
Вопрос: Как масштабировать функции AWS Lambda?
Вопрос: Как выделяются вычислительные ресурсы для функций AWS Lambda?
В модели ресурсов AWS Lambda можно выбрать нужный для функции объем памяти, в соответствии с которым назначается мощность ЦПУ и другие ресурсы. Например, при выборе 256 МБ памяти функции Lambda назначается примерно в два раза больше мощности ЦПУ, чем для запрашиваемой памяти 128 МБ, и в два раза меньше, чем при выборе 512 МБ. Подробнее об этом см. в документации по конфигурированию функций.
Объем памяти можно выбрать в диапазоне от 128 МБ до 10 240 МБ.
Вопрос: Когда лучше использовать функции AWS Lambda с объемом памяти свыше 3008 МБ?
Вопрос: Как долго может выполняться функция AWS Lambda?
Вопрос: Какая плата взимается за использование функций AWS Lambda?
Работа AWS Lambda оплачивается только по факту использования. Подробнее см. на странице цен на AWS Lambda.
Вопрос: Можно ли уменьшить расходы на AWS Lambda, используя тарифный план Compute Savings Plan?
Вопрос: Поддерживает ли AWS Lambda управление версиями?
Да. По умолчанию каждой функции AWS Lambda соответствует одна текущая версия кода. Клиенты функции Lambda могут вызывать конкретную версию или получать последний вариант. Подробнее см. в документации по управлению версиями функций Lambda.
Вопрос: Через какое время после загрузки кода можно будет вызвать функцию AWS Lambda?
Вопрос: Можно ли использовать свою версию поддерживаемой библиотеки?
Вопрос: Каков принцип работы многоуровневого ценообразования?
AWS Lambda предоставляет уровни сниженных цен для ежемесячной продолжительности использования функций по требованию, превышающей определенные пороговые значения. Многоуровневое ценообразование предусмотрено для функций, выполняемых как на основе архитектуры x86, так и на основе архитектуры Arm. Ценовые уровни Lambda применяются к общей ежемесячной продолжительности использования функций по требованию, работающих на той же инфраструктуре (x86 или Arm соответственно), в одном регионе и в пределах аккаунта. Если у вас включена консолидированная оплата в Организациях AWS, ценовые уровни применяются к общей ежемесячной продолжительности использования функций, работающих на той же инфраструктуре, в одном регионе и в пределах аккаунтов организации. Например, если вы используете функции Lambda для x86 в регионе Восток США (Огайо), то с вас будет взиматься плата в размере 0,0000166667 USD за каждую гигабайт-секунду и первые 6 миллиардов ГБ-секунд в месяц, 0,0000150000 USD за каждую гигабайт-секунду и следующие 9 миллиардов ГБ-секунд в месяц и 0,0000133334 USD за каждую гигабайт-секунду и более 15 миллиардов ГБ-секунд в месяц. Оплата запросов, Provisioned Concurrency и продолжительность использования функции Provisioned Concurrency остаются без изменений. Дополнительную информацию см. в разделе Цены на AWS Lambda.
Вопрос: Могу ли я воспользоваться преимуществами многоуровневого ценообразования и планов экономии вычислительных ресурсов?
Да. Счет за использование Lambda, которое покрывается вашим почасовым планом экономии, выставляется по соответствующему тарифу CSP с учетом скидки. Остальное использование, которое не покрывается данным обязательством, будет оплачиваться по тарифу, соответствующему уровню, в который попадает ваша ежемесячная совокупная продолжительность функций.
Использование AWS Lambda для обработки событий AWS
Вопрос: Что такое источник события?
Вопрос: Какие события могут быть использованы с AWS Lambda?
Полный перечень источников событий см. в нашей документации.
Вопрос: Как события отображаются в AWS Lambda?
События передаются в функцию Lambda в качестве входного параметра события. Для источников событий, в которых события возникают пакетами (например, Amazon SQS, Amazon Kinesis или Amazon DynamoDB Streams), параметр события может содержать множество событий в одном вызове, основываясь на размере запрашиваемого пакета. Подробнее об уведомлениях о событиях в Amazon S3 см. в разделе Настройка уведомлений о событиях в Amazon S3. Подробнее о потоках Amazon DynamoDB см. в Руководстве для разработчиков потоков DynamoDB. Подробнее о вызове функций Lambda с помощью Amazon SNS см. в Руководстве для разработчиков Amazon SNS. Подробнее о событиях Amazon Cognito см. на странице Amazon Cognito. Подробнее о журналах AWS CloudTrail и аудите вызовов API в сервисах AWS см. на странице AWS CloudTrail.
Вопрос: Как настроить ответ функции AWS Lambda на изменения в корзине Amazon S3?
Вопрос: Как настроить ответ функции AWS Lambda на обновления таблицы Amazon DynamoDB?
Вопрос: Как использовать функцию AWS Lambda для обработки записей в потоке Amazon Kinesis?
Вопрос: Как AWS Lambda обрабатывает данные из потоков Amazon Kinesis и Amazon DynamoDB Streams?
Вопрос. Как определить, что мне подходит для выполнения аналитики: AWS Lambda или Amazon Kinesis Data Analytics?
AWS Lambda позволяет в одном логическом разделе, например в сегменте, за короткий промежуток времени до 15 минут выполнить агрегирование по времени (например, количество, максимальное значение, сумма, среднее значение и т. д.) для данных в Amazon Kinesis или Потоках Amazon DynamoDB. Благодаря этому можно легко настроить простую аналитику для вашего событийного приложения без добавления архитектурной сложности, поскольку правила бизнеса и логику аналитики можно разместить в одной функции. С помощью Lambda агрегирование происходит максимум за 15 минут в переворачивающемся окне на основе временной отметки события. Аналитика данных Amazon Kinesis Data Analytics позволяет создавать более сложные аналитические приложения, которые поддерживают гибкие варианты обработки данных и надежную отказоустойчивость с однократной обработкой без дублирования, а также аналитику, которую можно выполнить для всего потока данных в нескольких логических разделах. С помощью KDA данные можно анализировать в нескольких типах окон агрегирования (переворачивающееся окно, колеблющееся окно, скользящее окно, окно сеанса), используя время события или время обработки.
AWS Lambda | Amazon KDA | |
---|---|---|
Переворачивающееся окно | Да | Да |
Колеблющееся окно | Нет | Да |
Скользящее окно | Нет | Да |
Окно сеанса | Нет | Да |
Обогащение | Нет | Да |
Совместные таблицы входящих и ссылочных данных | Нет | Да |
Разделение входящего потока | Нет | Да |
Строго однократная обработка | Нет | Да |
Окно максимального времени | 15 минут | Без ограничений |
Охват агрегирования | Раздел/сегмент | Поток |
Временная семантика | Время наступления события | Время наступления события, время обработки |
Вопрос: Как использовать функцию AWS Lambda для ответа на оповещения, отправленные Amazon Simple Notification Service (SNS)?
Вопрос: Как использовать функцию AWS Lambda для ответа на электронную почту, отправленную сервисом Amazon Simple Email Service (SES)?
Вопрос: Как использовать функцию AWS Lambda для ответа на предупреждения Amazon CloudWatch?
Сначала настройте предупреждение для отправки уведомлений посредством Amazon SNS. Затем в консоли AWS Lambda выберите функцию Lambda и свяжите ее с темой Amazon SNS. Подробнее о настройке предупреждений Amazon CloudWatch см. в Руководстве для разработчиков Amazon CloudWatch.
Вопрос: Как использовать функцию Lambda для ответа на изменения данных пользователя или устройства, управляемых с помощью Amazon Cognito?
В консоли AWS Lambda можно выбрать функцию, которая будет запускаться при синхронизации любых наборов данных, связанных с пулом идентификационных данных Amazon Cognito. Аналогичные функциональные возможности доступны в AWS SDK и интерфейсе командной строки. Более подробную информацию об использовании Amazon Cognito для общего доступа и синхронизации данных между устройствами пользователя см. на странице Amazon Cognito.
Вопрос: Как приложение может напрямую запустить функцию AWS Lambda?
Функцию Lambda можно вызвать с помощью специального события, используя в AWS Lambda API invoke. Вызывать функцию может только владелец функции или другой аккаунт AWS, которому владелец предоставил соответствующее разрешение. Подробнее см. в Руководстве для разработчиков Lambda.
Вопрос: С какой задержкой происходит вызов функции AWS Lambda в ответ на событие?
Вопрос: Как создать серверную часть мобильного приложения с помощью AWS Lambda?
Нужно загрузить соответствующий код для исполнения AWS Lambda, а затем вызвать его из соответствующего мобильного приложения, используя SDK AWS Lambda, включенный в пакет SDK AWS Mobile. Сервис позволяет совершать двусторонние (синхронные) вызовы для получения или проверки данных в режиме реального времени, а также асинхронные вызовы. Можно также настроить специальный API с помощью Amazon API Gateway и вызывать свои функции Lambda с помощью любого клиента, совместимого с API REST. Подробнее о мобильном SDK AWS см. на странице AWS мобильный SDK. Подробнее об API-шлюзе Amazon см. на странице API-шлюз Amazon.
Вопрос: Как вызвать функцию AWS Lambda через HTTPS?
Вопрос: Как функция AWS Lambda подстраивает свое поведение под устройство и приложение, осуществляющие запрос?
Вопрос: Как функция AWS Lambda персонализирует свое поведение на основе идентификации конечного пользователя приложения?
Вопрос: Как создать навык Alexa с помощью AWS Lambda?
Вопрос: Что произойдет, если во время обработки события в функции произойдет сбой?
Использование AWS Lambda для создания приложений
Вопрос: Что такое бессерверное приложение?
Вопрос: Как выполнить развертывание бессерверного приложения и управлять им?
Вопрос: Как найти существующие бессерверные приложения, разработанные сообществом AWS?
Можно выбрать приложения из коллекции бессерверных приложений, опубликованных разработчиками, компаниями и партнерами сообщества AWS, воспользовавшись репозиторием бессерверных приложений AWS. Выбрав подходящее приложение, его настройку и развертывание можно выполнить прямо из консоли Lambda.
Вопрос: Как автоматизировать развертывание бессерверного приложения?
Процесс выпуска бессерверного приложения можно автоматизировать с помощью AWS CodePipeline и AWS CodeDeploy. CodePipeline – это сервис непрерывной доставки, который позволяет моделировать, визуализировать и автоматизировать действия, необходимые для выпуска бессерверных приложений. CodeDeploy предоставляет механизм для автоматизации развертывания приложений на основе Lambda. CodeDeploy позволяет организовать развертывание в соответствии с общепринятыми передовыми методологиями, такими как канареечное и линейное развертывание, и помогает задать необходимые ограничения для проверки того, что вновь развернутый код является безопасным, стабильным и полностью готовым к выпуску в производство.
Подробнее о непрерывной интеграции и непрерывном развертывании (CI/CD) бессерверного ПО см. в документации.
Вопрос: Как начать создавать бессерверные приложения?
Чтобы начать работу, откройте консоль AWS Lambda и загрузите одну из наших схем. В пакете, который вы загрузите, будет содержаться файл AWS SAM (который определяет ресурсы AWS в приложении), а также файл ZIP (который включает в себя код функции). После этого можно будет применить команды AWS CloudFormation для упаковки и развертывания загруженного бессерверного приложения. Подробнее см. в документации.
Вопрос: Как координировать вызовы между разными функциями AWS Lambda?
Для координации вызовов различных функций AWS Lambda в определенном порядке можно использовать сервис AWS Step Functions. С его помощью можно последовательно вызывать несколько функций Lambda, передавая результат одних на вход другим, и/или вызывать функции параллельно. В процессе выполнения функций Step Functions будет автоматически следить за поддержанием состояния.
Вопрос: Как устранить проблемы в работе бессерверного приложения?
Можно включить отслеживание используемых функций Lambda с помощью AWS X‑Ray, добавив разрешения X‑Ray для роли, исполняющей функции Lambda, и изменив в нужных функциях параметр tracing mode на active. Когда для функции Lambda включен сервис X‑Ray, AWS Lambda передает в X‑Ray информацию об отслеживании расхода ресурсов сервиса Lambda при вызове функции. Это позволит получать такие аналитические данные, как расход ресурсов Lambda, время инициализации и время исполнения функции. Кроме того, можно включить SDK X‑Ray в свой пакет развертывания Lambda, чтобы создавать собственные сегменты отслеживания, добавлять комментарии к своим отслеживаниям или просматривать отслеживаемые сегменты для нисходящих вызовов, поступающих из функции Lambda. Пакеты SDK X‑Ray в настоящее время доступны для Node.js и Java. Подробнее см. в разделе Устранение неисправностей в приложениях на базе Lambda. Использование AWS X-Ray оплачивается отдельно.
Вопрос: Можно ли создавать бессерверные приложения, которые работают с реляционными базами данных?
Да. Можно создавать безопасные бессерверные приложения с высокой степенью масштабируемости на основе Lambda, которые подключаются к реляционным базам данных с помощью прокси-сервера Amazon RDS. Это прокси-сервер с высоким уровнем доступности, который одновременно управляет тысячами подключений к реляционным базам данных. На данный момент RDS Proxy поддерживает базы данных MySQL и Aurora. Начать использовать RDS Proxy можно с помощью консоли Amazon RDS или консоли AWS Lambda. Бессерверные приложения, которые используют полностью управляемые пулы подключений со стороны прокси-сервера RDS, оплачиваются в соответствии с ценами на прокси-сервер RDS.
Вопрос: Каким образом лицензируется AWS SAM?
Спецификация поставляется с открытым исходным кодом по лицензии Apache 2.0, которая позволяет пользователям заимствовать и включать AWS SAM в инструменты создания, развертывания, мониторинга и управления с лицензией, позволяющей использовать их в коммерческих целях. Репозиторий AWS SAM на GitHub доступен по ссылке.
Поддержка образов контейнеров
Вопрос. Что такое поддержка образа контейнера для AWS Lambda?
Вопрос. Как использовать поддержку образа контейнера для AWS Lambda?
Вопрос. Какие типы образов контейнеров поддерживаются?
Вопрос. Какие базовые образы можно использовать?
Вопрос. Какие контейнерные инструменты можно использовать, чтобы упаковывать и развертывать функции в виде образа контейнера?
Вопрос. Какие возможности AWS Lambda доступны для функций, развернутых как образы контейнеров?
Вопрос. Поддерживает ли AWS Lambda исправление и обновление развернутого образа контейнера?
Вопрос. В чем разница между функциями, созданными с использованием архивов в формате ZIP, и образами контейнеров?
Существует три главных отличия между функциями, созданными с использованием архивов в формате ZIP, и образами контейнеров.
- Максимальный размер пакета кода функций, созданных с помощью архивов в формате ZIP, в распакованном виде составляет 250 МБ, а максимальный размер образа функций, созданных с использованием образов контейнеров, – 10 ГБ.
- Lambda использует Amazon ECR как базовое хранилище кода для функций, определенных как образы контейнеров, поэтому функцию невозможно применить, когда базовый образ удален из ECR.
- Чтобы обеспечить новейшую безопасность во время исполнения и исправление ошибок, для ZIP-функции применяются автоматические исправления. Функции, определенные как образы контейнеров, являются неизменяемыми, и клиенты несут ответственность за компоненты, упакованные в их функции. Клиенты могут использовать предоставленные AWS базовые образы, которые AWS регулярно обновляет для обеспечения безопасности и исправления ошибок, используя при этом последние доступные исправления.
Вопрос. Есть ли разница в производительности между функциями, определенными как ZIP-образы и образы контейнеров?
Вопрос. Как оплачивается развертывание функций Lambda в виде образов контейнеров?
AWS Lambda не взимает дополнительную плату за упаковывание и развертывание функций в виде образов контейнеров. Когда вызывается функция, развернутая как образ контейнера, взимается обычная плата за запросы и время выполнения. Подробнее см. в разделеЦены на AWS Lambda. С вас будет взиматься плата за хранение образов контейнеров в Amazon ECR по стандартным ценам ECR. Подробнее см. в разделе Цены на Amazon ECR.
Вопрос. Что такое эмулятор интерфейса среды выполнения Lambda?
Эмулятор интерфейса среды выполнения Lambda — это прокси-сервер для API среды выполнения Lambda, с помощью которого клиенты могут локально тестировать свою функцию Lambda, упакованную в виде образа контейнера. Это облегченный веб-сервер, который преобразует HTTP-запросы в события JSON и эмулирует Runtime API в Lambda. С его помощью можно локально тестировать функции, используя знакомые инструменты, такие как cURL и Docker CLI (при тестировании функций, упакованных как образы контейнеров). Кроме того, он упрощает запуск приложения во время использования дополнительных вычислительных сервисов. Эмулятор интерфейса среды выполнения Lambda можно включить в образ контейнера, чтобы он изначально принимал HTTP-запросы вместо событий JSON, необходимых для развертывания в Lambda. Этот компонент не эмулирует оркестратор Lambda или конфигурации безопасности и аутентификации. Эмулятор интерфейса среды выполнения распространяется с открытым исходным кодом на GitHub. Для начала работы его можно загрузить и установить на локальный компьютер.
Вопрос: Зачем нужен эмулятор интерфейса среды выполнения Lambda во время локального тестирования?
Вопрос. Какое поведение функций можно протестировать локально с помощью эмулятора?
Вопрос. Как эмулятор интерфейса среды выполнения помогает запускать образ, совместимый с Lambda, на дополнительных вычислительных сервисах?
Клиенты могут добавить эмулятор интерфейса среды выполнения в качестве точки входа к образу контейнера или упаковать его в качестве сопутствующего элемента, чтобы гарантировать, что образ контейнера теперь принимает HTTP-запросы вместо событий JSON. Это упрощает внесение изменений, необходимых для запуска образа контейнера в дополнительных вычислительных сервисах. Клиенты несут ответственность за соблюдение всех рекомендаций по безопасности, производительности и параллельности для выбранной среды. Эмулятор интерфейса времени исполнения предварительно упакован в образы, предоставленные AWS Lambda, и по умолчанию доступен в AWS SAM CLI. Поставщики базовых образов могут использовать документацию, чтобы обеспечить одинаковую среду взаимодействия для своих базовых образов.
Вопрос. Как развернуть существующее контейнерное приложение в AWS Lambda?
Контейнерное приложение можно развернуть в AWS Lambda, если оно соответствует указанным ниже требованиям.
- Образ контейнера должен внедрять Runtime API в Lambda. У нас есть набор пакетов программного обеспечения с открытым исходным кодом (клиенты интерфейса среды выполнения), которые реализуют Runtime API в Lambda, что позволяет легко расширять предпочтительные базовые образы для обеспечения совместимости с Lambda.
- Образ контейнера должен иметь возможность работать в файловой системе, доступной только для чтения. Ваш код функции может получить доступ к доступному для записи хранилищу каталога /tmp размером 512 МБ. Если используется образ, которому требуется доступный для записи корневой каталог, настройте его для записи в каталог /tmp.
- Пользователь Lambda по умолчанию может читать файлы, необходимые для выполнения кода функции. Lambda определяет пользователя Linux по умолчанию с наименее привилегированными разрешениями, который выполняет рекомендации по безопасности. Вам необходимо убедиться, что код приложения не полагается на файлы, выполнение которых ограничено другими пользователями Linux.
- Это образ контейнера на базе Linux.
AWS Lambda SnapStart
Вопрос: Что такое AWS Lambda SnapStart?
AWS Lambda SnapStart для Java обеспечивает до 10 раз более быстрый запуск функций. Этап инициализации (на котором AWS Lambda загружает код функции и инициализирует внешние зависимости) является основной причиной задержки запуска функций по запросу и происходит во время первого вызова. С помощью Lambda SnapStart Lambda заблаговременно инициализирует одноразовый код функции инициализации во время публикации ее версии, а не при первом ее вызове. Затем Lambda делает снимок состояния и кэширует состояние памяти и диска инициализированной среды выполнения. Во время вызова функции и по мере ее масштабирования Lambda восстанавливает ее из кэшированного снимка состояния вместо того, чтобы инициализировать ее с нуля.
Вопрос: Как настроить функцию Lambda для использования Lambda SnapStart?
Lambda SnapStart – простая конфигурация функционального уровня, которую можно настроить для новых и существующих функций Java с помощью API Lambda, Консоли управления AWS, Интерфейса командной строки AWS (CLI), AWS SDK, Комплекта для облачной разработки AWS (CDK), AWS CloudFormation и Модели бессерверных приложений AWS (SAM). Если вы настроите Lambda SnapStart, то получите преимущества высокой производительности при запуске всех публикуемых версий функций. Дополнительную информацию о Lambda SnapStart см. в документации.
Вопрос: В каких случаях стоит выбрать Lambda SnapStart, а в каких — Provisioned Concurrency (PC)?
Вопрос: Какие среды выполнения поддерживает Lambda SnapStart?
Lambda SnapStart поддерживает среду выполнения Java 11. Поддержка будущих версий Java будет добавлена после их выпуска. Полный перечень сред выполнения, которые поддерживает Lambda, см. в документации.
Вопрос: Можно ли активировать Lambda SnapStart вместе с PC в одной и той же функции?
Вопрос: Можно ли настроить виртуальное частное облако (VPC) для функции Lambda SnapStart?
Да. Вы можете настроить доступ к ресурсам в виртуальном частном облаке (VPC) для функции Lambda SnapStart. Дополнительную информацию о том, как настроить VPC для своей функции, см. в документации по Lambda.
Вопрос: Можно ли настроить Lambda SnapStart в архитектурах x86 и Arm?
Вопрос: Можно ли активировать Lambda SnapStart с эластичной файловой системой Amazon (EFS)?
Вопрос: Можно ли активировать Lambda SnapStart с краткосрочным хранилищем (/tmp) с объемом памяти более 512 МБ?
Вопрос: Нужно ли учитывать совместимость ПО при кэшировании и восстановлении из снимков состояния?
Да. Если ваш код подразумевает уникальность состояния, вам нужно оценить его устойчивость к операциям снимков состояния (таким как клонирование и восстановление). Подробные сведения об аспектах уникальности в снимках состояния виртуальных машин при использовании Lambda SnapStart см. в документации и блоге.
Вопрос: Можно ли выполнить собственный код перед созданием снимка состояния или во время восстановления функции из снимка состояния?
Да. Вы можете реализовать собственную программную логику перед созданием снимка состояния (установкой контрольных точек) и после его восстановления с помощью хуков сред выполнения. Дополнительную информацию см. в документации по Lambda SnapStart.
Вопрос: Взимается ли плата за Lambda SnapStart?
Нет. За активацию Lambda SnapStart плата не взимается. Плата взимается на основе количества запросов к функциям и их продолжительности, т. е. времени, в течение которого исполняется код, согласно текущим ценам на Lambda. Плата за продолжительность взимается за код, выполняемый в обработчике функции и хуках сред выполнения, а также код инициализации, объявленный за пределами обработчика. Обратите внимание, что AWS Lambda может периодически повторно использовать среды выполнения с исправлениями безопасности и повторно запускать код инициализации. Подробнее см. в документации по модели программирования Lambda.
Вопрос: Как долго хранятся в кэше Lambda SnapStart снимки состояния для опубликованных версий функций?
Вопрос: Как зашифровать снимки состояния инициализированной среды выполнения, созданные Lambda SnapStart?
Снимки состояния зашифровываются по умолчанию с помощью уникальных ключей Сервиса управления ключами AWS (KMS), которые находятся в собственности и под управлением сервиса Lambda. Клиенты также могут зашифровать снимки состояния с помощью ключей KMS, которые им принадлежат и полностью ими управляются.
Вопрос: Есть ли ограничение по времени, в течение которого может выполняться инициализация моего кода с помощью Lambda SnapStart?
Provisioned Concurrency
Вопрос. Что такое AWS Lambda Provisioned Concurrency?
Вопрос: Как настроить Provisioned Concurrency и управлять этой возможностью?
Параллельные операции для функции можно настроить в Консоли управления AWS, с помощью Lambda API, интерфейса командной строки AWS и AWS CloudFormation. Provisioned Concurrency проще всего использовать с помощью AWS Auto Scaling. Auto Scaling можно использовать для настройки расписаний. Кроме того, Auto Scaling автоматически регулирует уровень Provisioned Concurrency в режиме реального времени по мере изменения требований. Чтобы узнать больше о Provisioned Concurrency, см. документацию.
Вопрос: Требуется ли менять код, чтобы использовать Provisioned Concurrency?
Вопрос. Как начисляется плата за Provisioned Concurrency?
Provisioned Concurrency добавляет ценовой аспект Provisioned Concurrency за поддержание функций в инициализированном состоянии. Когда включена эта возможность, вы оплачиваете указанное вами количество параллельных операций за выбранный период времени. Когда выполняется функция, для которой настроены параллельные операции, вы также платите за запросы и время выполнения. Подробнее о ценах на Provisioned Concurrency см. на странице Цены на AWS Lambda.
Вопрос: В каких случаях следует использовать Provisioned Concurrency?
Вопрос: Что происходит, если функции получают вызовы свыше заданного уровня в Provisioned Concurrency?
Функции AWS Lambda на базе процессоров Graviton2
Вопрос. Каковы функции AWS Lambda на базе процессоров Graviton2?
Вопрос. Почему следует использовать функции AWS Lambda на базе процессоров Graviton2?
Вопрос. Как настроить работу функций на процессорах Graviton2?
Вопрос. Как развернуть приложение, созданное с использованием функций на базе процессоров Graviton2?
Вопрос. Может ли приложение использовать обе функции: работающие и на процессорах Graviton2, и на процессорах x86?
Вопрос. Нужна ли мне машинная разработка на базе Arm для создания, сборки и тестирования функций, работающих локально на процессорах Graviton2?
Интерпретируемые языки, такие как Python, Java и Node, обычно не требуют перекомпиляции, если код не ссылается на библиотеки со специфичными для архитектуры компонентами. В таких случаях потребуется предоставить библиотеки, предназначенные для arm64. Подробнее см. на странице Начало работы с AWS Graviton. Для неинтерпретируемых языков потребуется компиляция кода для arm64. Более современные компиляторы будут создавать код, скомпилированный для arm64, а вам потребуется развернуть его для тестирования в среде на базе arm. Подробнее об использовании функций Lambda с Graviton2 см. в документации.
Вопрос. Поддерживает ли AWS Lambda многоархитектурные образы контейнеров?
Вопрос. Могу ли я создать уровни AWS Lambda, нацеленные на функции на базе процессоров AWS Graviton2?
Вопрос. Какие языки и среды выполнения поддерживают функции Lambda, работающие на процессорах Graviton2?
После запуска клиенты могут использовать Python, Node.js, Java, Ruby, .Net Core, настраиваемую среду выполнения (provided.al2) и образы на базе OCI. Подробнее см. в статье о среде выполнения AWS Lambda.
Вопрос: Каковы цены на функции AWS Lambda на базе процессоров Graviton2? Можно ли использовать уровень бесплатного пользования AWS Lambda при работе с функциями на базе Graviton2?
Вопрос. Как выбрать, на каких процессорах – Graviton2 или x86 – запускать функции?
Каждая рабочая нагрузка уникальна, и мы рекомендуем клиентам протестировать функции и определить, видят ли они разницу в соотношении цены и производительности. Для этого можно использовать инструмент AWS Lambda Power Tuning. При тестировании рабочих нагрузок на возможное улучшение соотношения цены и производительности мы предлагаем начинать с веб- и мобильных серверов, обработки данных и потоковой обработки.
Amazon EFS для AWS Lambda
Вопрос: Что из себя представляет Amazon EFS для AWS Lambda?
Вопрос: Как настроить Amazon EFS для Lambda?
Разработчики могут без труда подключить существующую файловую систему EFS к функции Lambda через точку доступа EFS, используя консоль сервиса, интерфейс командной строки или SDK. При первом вызове функции файловая система автоматически подключается и становится доступной для кода функции. Подробнее см. в документации.
Вопрос: Нужно ли настраивать функцию с использованием настроек VPC перед подключением файловой системы Amazon EFS?
Вопрос: Как можно использовать сервис Amazon EFS для Lambda?
Вопрос. Будут ли данные шифроваться при передаче?
Вопрос: Будут ли данные шифроваться при хранении?
Вопрос: Как начисляется плата за использование Amazon EFS для AWS Lambda?
Дополнительная плата за использование Amazon EFS для AWS Lambda не начисляется. Клиенты оплачивают стандартную стоимость AWS Lambda и Amazon EFS. Если функции Lambda и EFS используются в одной зоне доступности, плата за передачу данных не взимается. Однако если используется пиринговое подключение VPC для доступа к нескольким аккаунтам, плата за передачу данных будет начисляться. Подробнее см. на странице расценок.
Вопрос: Можно ли связать с функцией AWS Lambda несколько файловых систем Amazon EFS?
Вопрос: Можно ли использовать одну и ту же файловую систему Amazon EFS для множества функций, контейнеров и инстансов?
URL-адреса функций Lambda
Вопрос. Поддерживают ли функции AWS Lambda адреса HTTP(S)?
Вопрос. Как настроить URL-адрес функции Lambda для моей функции?
Вы можете настроить URL-адрес функции в консоли управления AWS, AWS Lambda API, AWS CLI, AWS CloudFormation и AWS Serverless Application Model. URL-адреса функции можно включить в последней ($LATEST) неквалифицированной версии функции или в любом псевдониме функции. Подробнее о настройке URL-адреса функции см. в документации.
Вопрос. Как обезопасить URL-адрес функции Lambda?
Вопрос. Как вызвать функцию с помощью URL-адреса функции Lambda?
Вопрос. Работают ли URL-адреса функции Lambda с версиями и псевдонимами функции?
Да. Вы можете настроить взаимодействие URL-адресов функции Lambda с версиями и псевдонимами. Если псевдоним не выбран, URL по умолчанию указывает на последний ($LATEST). В качестве цели URL-адресов функции нельзя выбрать отдельную версию функции.
Вопрос. Можно ли включить пользовательские домены для URL-адресов функции Lambda?
Вопрос. Можно ли использовать URL-адреса функции Lambda для вызова функции в VPC?
Вопрос. Какова стоимость использования URL-адресов функции Lambda?
Дополнительная плата за использование URL-адресов отсутствует. Вы платите стандартную цену за AWS Lambda. Подробнее см. на странице Цены на AWS Lambda.
Lambda@Edge
Вопрос: Что представляет собой Lambda@Edge?
С Lambda@Edge можно запускать код в местоположениях AWS по всему миру без выделения серверов и управления ими и обеспечивать ответ на запросы конечных пользователей с минимальной сетевой задержкой. Сервис позволяет загрузить код Node.js или Python в AWS Lambda и настроить вызов конкретной функции в ответ на запросы сервиса Amazon CloudFront (т. е. при получении запроса пользователя, при перенаправлении запроса серверу‑источнику, при возврате запроса от сервера‑источника, а также непосредственно перед отправкой ответа конечному пользователю). После этого код готов к исполнению в местоположениях AWS во всем мире при каждом получении запроса на контент. При этом код будет масштабироваться вместе с объемом запросов CloudFront по всему миру. Подробнее см. в нашей документации.
Вопрос: Как использовать Lambda@Edge?
Чтобы использовать Lambda@Edge, достаточно загрузить свой код в AWS Lambda и настроить вызов функции в ответ на запросы Amazon CloudFront. Код должен соответствовать лимитам сервиса Lambda@Edge. Lambda@Edge поддерживает для глобального вызова на основе событий CloudFront код Node.js и Python. Подробнее см. в нашей документации.
Вопрос: В каких случаях следует использовать Lambda@Edge?
Lambda@Edge оптимизирован для чувствительных к задержкам приложений, конечные пользователи которых располагаются по всему миру. Вся информация, необходимая для принятия решения, должна быть доступна на стороне CloudFront в рамках функции и запроса. Например, если требуется принять решение о доставке контента на основании ряда характеристик пользователя (местоположение, устройство и т. д.), теперь это можно сделать ближе к пользователям, без отправки информации на централизованный сервер.
Вопрос: Можно ли развертывать существующие функции Lambda для вызова в глобальном режиме?
Да, существующие функции Lambda можно связывать с событиями CloudFront для вызова в глобальном режиме, если функция удовлетворяет требованиям и лимитам сервиса Lambda@Edge. Подробнее об обновлении характеристик функций см. по ссылке.
Вопрос: Какие события Amazon CloudFront могут использоваться для запуска функций?
Функции могут быть автоматически запущены в ответ на следующие события Amazon CloudFront.
- Запрос пользователя. Это событие возникает, когда конечный пользователь или устройство в Интернете отправляет в CloudFront запрос HTTP(S), который поступает в ближайшее к пользователю периферийное местоположение.
- Ответ посетителю. Это событие возникает, когда сервер CloudFront в периферийном местоположении готов ответить конечному пользователю или устройству, сделавшему запрос.
- Запрос источника. Это событие возникает, когда в кэше периферийного сервера CloudFront отсутствует запрошенный объект и запрос посетителя перенаправляется на веб‑сервер источника (например, Amazon EC2, Application Load Balancer или Amazon S3).
- Ответ источника. Это событие возникает, когда сервер CloudFront в периферийном местоположении получает ответ от веб‑сервера источника.
Вопрос: Чем использование AWS Lambda@Edge отличается от использования AWS Lambda за шлюзом Amazon API Gateway?
Разница в том, что API Gateway и Lambda являются региональными сервисами. Использование Lambda@Edge и Amazon CloudFront позволяет исполнять логику программы в нескольких местоположениях AWS в зависимости от местонахождения конечных пользователей.
Масштабирование и доступность
Вопрос: Насколько доступны функции AWS Lambda?
Вопрос: Останутся ли функции AWS Lambda доступными, если я изменю код или конфигурацию?
Вопрос: Существует ли ограничение на количество одновременно запущенных функций AWS Lambda?
AWS Lambda обеспечивает параллельный запуск множества инстансов для работы функций. Однако в AWS Lambda существует защитное ограничение по умолчанию на количество одновременных исполнений на аккаунт в регионе (перейдите по этой ссылке, чтобы получить информацию о защитных ограничениях по умолчанию). Можно также контролировать максимальное число параллельных исполнений для отдельных функций AWS Lambda, что позволяет зарезервировать часть связанного с аккаунтом лимита параллельного исполнения для критически важных функций. Кроме того, это позволяет ограничить интенсивность трафика к ресурсам дальнейшей обработки.
Если вы хотите отправить запрос на увеличение лимита одновременных исполнений, используйте квоты на обслуживание.
Вопрос: Что произойдет, если мой аккаунт превысит установленное по умолчанию ограничение на одновременные выполнения?
В случае превышения ограничения одновременных исполнений синхронно вызываемые функции AWS Lambda возвращаются с ошибкой регулирования (код ошибки 429). Функции Lambda, вызываемые асинхронно, на протяжении 15–30 минут могут поглощать значительные объемы трафика, после чего входящие события будут отклоняться и пропускаться. Если функция Lambda вызвана в ответ на события Amazon S3, отклоненные события AWS Lambda могут быть сохранены и отправлены из Amazon S3 повторно в течение 24 часов. События из потоков Amazon Kinesis Streams и Amazon DynamoDB Streams вызываются повторно до тех пор, пока функция Lambda не будет исполнена успешно или пока не истечет срок действия данных. Amazon Kinesis и потоки Amazon DynamoDB сохраняют данные на протяжении 24 часов.
Вопрос. Применяются ли максимальные ограничения одновременных исполнений по умолчанию на уровне каждой функции?
Максимальные ограничения одновременных исполнений по умолчанию применяются на уровне учетной записи. Однако вы также можете установить ограничения на отдельные функции (см. статью о параллельном резервировании).
Вопрос: Как быстро масштабируются мои функции AWS Lambda?
Каждая синхронно вызываемая функция Lambda может масштабироваться со скоростью до 1000 одновременных исполнений каждые 10 секунд. Хотя скорость масштабирования Lambda подходит для большинства примеров использования, она особенно подходит для сценариев с предсказуемыми или непредсказуемыми всплесками трафика. Например, обработка данных в соответствии с SLA требует предсказуемого, но быстрого масштабирования для удовлетворения спроса на обработку. Аналогичным образом, публикация последних новостей или мгновенные продажи могут привести к непредсказуемому росту трафика за короткий период времени. Скорость масштабирования Lambda позволяет упростить такие примеры использования без дополнительных конфигураций или инструментов. Кроме того, ограничение параллельного масштабирования – это ограничение на уровне функций. Это означает, что каждая функция в вашем аккаунте масштабируется независимо от других.
Вопрос. Что произойдет в случае сбоя в функции Lambda во время обработки события?
Вопрос: Какие ресурсы можно установить в качестве очереди необрабатываемых сообщений для функции Lambda?
Вопрос: Что будет, если вызов функции Lambda нарушает установленные политики?
Для обработки нарушения политик повторного вызова для асинхронных вызовов функций можно создать очередь необрабатываемых сообщений, в которую будет отправлено данное событие. Если очередь необрабатываемых сообщений не создана, событие может быть отклонено. В случае нарушения политик повторного вызова потоковыми вызовами данные считаются уже потерявшими актуальность и отклоняются.
Безопасность и контроль доступа
Вопрос: Как разрешить функции AWS Lambda доступ к другим ресурсам AWS?
Назначение разрешений для функции Lambda происходит с помощью ролей IAM. При исполнении функции Lambda AWS Lambda учитывает назначенную роль, что обеспечивает владельцу аккаунта полный и надежный контроль ресурсов AWS, которые функция может использовать. Подробнее о ролях см. на странице Настройка AWS Lambda.
Вопрос: Как управлять тем, какие именно корзины Amazon S3 могут вызывать конкретные функции AWS Lambda?
При настройке корзины Amazon S3 для отправки сообщений в функцию AWS Lambda создается правило политики ресурсов, разрешающее доступ. Подробнее о политиках ресурсов и контроле доступа к функциям Lambda см. в Руководстве для разработчиков Lambda.
Вопрос: Как управлять тем, какие таблицы Amazon DynamoDB или поток Amazon Kinesis может опрашивать функция AWS Lambda?
Управление доступом осуществляется с помощью роли для функции Lambda. Роль, которая назначена функции Lambda, определяет и то, какие ресурсы может опрашивать AWS Lambda. Подробнее см. в Руководстве для разработчиков Lambda.
Вопрос: Как управлять тем, какую очередь Amazon SQS будет опрашивать функция AWS Lambda?
Вопрос: Как получить доступ к ресурсам Amazon VPC с помощью функции AWS Lambda?
Чтобы получить доступ к ресурсам VPC можно включить функции Lambda, указав подсеть и группу безопасности в конфигурации функций. Функции Lambda, настроенные на доступ к ресурсам в конкретном облаке VPC, по умолчанию не будут иметь доступа к Интернету. Чтобы предоставить им доступ, используйте интернет-шлюзы. По умолчанию функции Lambda взаимодействуют с ресурсами VPC с двумя стеками по протоколу IPv4. Можно настроить функции для доступа к ресурсам VPC с двумя стеками по протоколу IPv6. Дополнительные сведения о функциях Lambda, настроенных в VPC, см. в разделе Частные сети Lambda с VPC.
Вопрос. Что такое подписание кода для AWS Lambda?
Подписание кода для AWS Lambda предлагает средства контроля доверия и целостности, которые позволяют обеспечить развертывание в ваших функциях Lambda только неизменного кода от подтвержденных разработчиков. Для цифровой подписи артефактов кода и настройки функций Lambda с целью проверки подписей при развертывании можно использовать AWS Signer — полностью управляемый сервис подписи кода. В настоящее время подписание кода для AWS Lambda доступно только для функций, упакованных в виде ZIP-архивов.
Вопрос. Как создать артефакты кода с цифровой подписью?
Артефакты кода с цифровой подписью можно создавать с помощью профиля подписи через консоль AWS Signer, Signer API, SAM CLI или AWS CLI. Подробнее см. в документации по AWS Signer.
Вопрос. Как настроить функции Lambda, чтобы включить подписание кода?
Вопрос. Какие проверки подписи AWS Lambda выполняет при развертывании?
При развертывании AWS Lambda может выполнять указанные ниже проверки подписи:
• Поврежденная подпись: это происходит, если артефакт кода изменен после подписания.
• Несоответствующая подпись: это происходит, если артефакт кода подписан с помощью неподтвержденного профиля подписи.
• Подпись с истекшим сроком действия: это происходит, если подпись применяется после установленной даты окончания.
• Отозванная подпись: это происходит, если владелец профиля подписи отзывает задания подписи.
Подробнее см. в документации по AWS Lambda.
Вопрос. Можно ли включить подписание кода для существующих функций?
Вопрос. Взимается ли дополнительная плата за использование подписания кода для AWS Lambda?
Дополнительная плата за использование подписания кода для AWS Lambda не взимается. Вы платите стандартную цену за AWS Lambda. Подробнее см. на странице расценок.
Расширенные средства управления журналами
Вопрос. Какие расширенные средства управления для ведения журналов поддерживаются в Lambda?
Чтобы по умолчанию упростить и расширить возможности ведения журнала, AWS Lambda предлагает расширенные средства управления, такие как возможность встроенного сбора журналов функций Lambda в структурированном формате JSON, управление фильтрацией журналов функций Lambda на уровне журналов без внесения изменений в код и настройку группы журналов Amazon CloudWatch, в которую их отправляет Lambda.
Вопрос. Для чего можно использовать расширенные средства управления для ведения журналов?
Журналы функций Lambda можно записывать в структурированном формате JSON, не используя собственные библиотеки журналов. Структурированные журналы JSON упрощают поиск, фильтрацию и анализ больших объемов записей журнала. Можно управлять фильтрацией журналов функций Lambda на уровне журналов без внесения изменений в код, что позволяет выбрать требуемый уровень детализации ведения журнала для функций Lambda, не просматривая большие объемы журналов при отладке и устранении ошибок. Также можно указать, в какую группу журналов Amazon CloudWatch Lambda будет их отправлять, что упростит объединение журналов нескольких функций приложения в одном месте. Затем можно применять политики безопасности, управления и хранения к журналам на уровне приложения, а не по отдельности к каждой функции.
Вопрос: Как использовать расширенные средства управления для ведения журналов?
Указать расширенные средства управления для ведения журналов для функций Lambda можно с помощью AWS Lambda API, консоли AWS Lambda, интерфейса командной строки AWS, модели бессерверных приложений AWS (SAM) и AWS CloudFormation. Чтобы узнать больше, ознакомьтесь с публикацией в блоге о запуске расширенных средств для ведения журналов или с Руководством для разработчиков Lambda.
Вопрос: Можно ли использовать собственные библиотеки журналов для создания структурированных журналов JSON для моей функции Lambda?
Да, вы можете использовать собственные библиотеки журналов для создания журналов Lambda в структурированном формате JSON. Чтобы обеспечить бесперебойную работу ваших библиотек журналов со встроенной функцией структурированного ведения журнала в формате JSON в Lambda, Lambda не будет дважды кодировать журналы, созданные вашей функцией и уже закодированные в формате JSON. Для записи журналов Lambda в структурированном формате JSON также можно использовать библиотеку Powertools для AWS Lambda.
Вопрос: Как будет взиматься плата за использование расширенных средств управления для ведения журналов?
Дополнительная плата за использование расширенных средств управления для ведения журналов в Lambda не взимается. Плата в Журналах Amazon CloudWatch будет по-прежнему взиматься за прием и хранение журналов Lambda. Подробные сведения о ценах на журналы см. на странице цен CloudWatch.
Функции AWS Lambda на Java
Вопрос: Как скомпилировать код Java для функции AWS Lambda?
Для компиляции функции Lambda можно использовать стандартные инструменты, такие как Maven или Gradle. Процесс сборки будет аналогичен процессу сборки, который используется при компиляции любого кода Java, зависимого от AWS SDK. Запустите инструмент компиляции Java для своих файлов с исходным кодом и включите в путь к классам пакет AWS SDK 1.9 или новее с переходными зависимостями. Подробнее см. в документации.
Вопрос: Что представляет собой среда JVM, которую использует AWS Lambda для исполнения функции?
Функции AWS Lambda на Node.js
Вопрос: Можно ли использовать пакеты при работе с AWS Lambda?
Да. Можно использовать как пакеты NPM, так и специальные пакеты. Подробнее см. здесь.
Вопрос: Можно ли выполнить другие программы с помощью моей функции AWS Lambda, написанной на Node.js?
Да. Встроенная изолированная среда Lambda позволяет пакетно запускать скрипты («сценарии оболочки»), другие языки выполнения, сервисные программы и выполняемые файлы. Подробнее см. здесь.
Вопрос: Можно ли использовать встроенные модули с функциями AWS Lambda, написанными на Node.js?
Да. Любой статически связанный встроенный модуль может быть включен в загружаемый файл ZIP, как и динамически связанные модули, в сборку которых включено указание rpath на корневую директорию функции Lambda. Подробнее см. здесь.
Вопрос: Можно ли исполнять бинарные файлы с помощью функции AWS Lambda, написанной на Node.js?
Да. Вы можете использовать команду child_process для Node.js, чтобы исполнить бинарный файл, включенный в функцию, или любой исполняемый файл в Amazon Linux, видимый для функции. Как вариант, несколько пакетов NPM могут существовать в качестве упакованных бинарных файлов командной строки, например node‑ffmpeg. Подробнее см. здесь.
Вопрос: Как развертывать код функции AWS Lambda, написанный на Node.js?
Чтобы выполнить развертывание кода функции Lambda, написанного на Node.js, просто упакуйте свой код JavaScript и зависимые библиотеки в формат ZIP. Вы можете загрузить ZIP-файл со своего локального компьютера либо указать местоположение этого ZIP-файла в Amazon S3. Подробнее см. в документации.
Функции AWS Lambda на Python
Вопрос: Можно ли использовать пакеты Python при работе с AWS Lambda?
Функции AWS Lambda на C#
Вопрос: Как упаковать функцию AWS Lambda на C# и выполнить ее развертывание?
Функции AWS Lambda на PowerShell
Вопрос: Как развертывать код функции AWS Lambda, написанный на PowerShell?
Пакет развертывания PowerShell на Lambda – это файл ZIP, который содержит скрипт PowerShell, модули PowerShell, необходимые для данного скрипта, а также сборки, требуемые для размещения среды PowerShell Core. Чтобы создать пакет развертывания PowerShell на Lambda, используйте модуль PowerShell AWSLambdaPSCore, который можно установить из галереи PowerShell.
Функции AWS Lambda на Go
Вопрос: Как упаковать функцию AWS Lambda на Go и выполнить ее развертывание?
Загрузите исполняемый артефакт Go в виде файла ZIP с помощью интерфейса командной строки AWS или консоли Lambda и выберите среду выполнения go1.x. При работе с Lambda для создания и упаковки кода можно использовать встроенные инструменты Go. Подробнее см. в документации.
Функции AWS Lambda на Ruby
Вопрос: Как развертывать код функции AWS Lambda, написанный на Ruby?
Другие темы
Вопрос: Какие версии Amazon Linux, Node.js, Python, JDK, .NET Core, SDK и дополнительных библиотек поддерживает AWS Lambda?
Список поддерживаемых версий см. по ссылке.
Вопрос: Можно ли поменять версию Amazon Linux или языковых библиотек?
Нет. Для всех пользователей сервиса AWS Lambda предлагает одну версию операционной системы и среды выполнения соответствующего языка. В Lambda можно использовать собственную среду выполнения для языка программирования.
Вопрос: Можно ли записывать вызовы API AWS Lambda для последующего аудита?
Вопрос: Как координировать вызовы между различными функциями Lambda?
Для координации вызова различных функций Lambda можно использовать сервис Amazon Step Functions. С его помощью можно вызывать несколько функций Lambda последовательно, передавая результат исполнения одних функций на вход другим, или параллельно. Подробнее см. в документации.