(Примечание: цены действительны по состоянию на август 2018 г.)

AWS Lambda имеет 263 отдельных оплачиваемых позиции, каждая со своими ценами. Они имеют такие названия, как «Accelerated InterRegion Inbound с использованием периферийных местоположений за пределами США, Европы или Японии, из ЕС (Париж) в ЕС (Лондон)», и существуют для каждого из 17 регионов, в которых они предлагаются. В целом, это 4 471 отдельная цена, которую вы можете взимать за выполнение лямбда-выражения.

Это добавляется к 635 035 ценам за услуги EC2, 12 261 за Route53 и 15 283 за API Gateway. В общей сложности у Amazon есть более миллиона отдельных тарифов, с которых можно взимать плату за различные услуги. Это настолько сложно, что у них даже есть выделенный API, чтобы просто раскрыть цены, именно так я получил эти числа (лямбда не включена в калькулятор цен).

Даже в простейшем случае цена для Lambda далеко не проста: уровень бесплатного пользования, за которым следуют 0,20 доллара за миллион запросов плюс 0,00001667 доллара за гигабайт-секунду вычислительного времени, используемого в месяц, плюс стоимость шлюза API (3,50 доллара за миллионов), которые вы используете для преобразования HTTP-запросов в выполнение Lambda. Вы также платите за любую передачу данных, выполняемую вашим Lambda (0,09 доллара США за ГБ), и любые запросы Dynamo DB, которые вы делаете от него (я не могу).

Что такое время вычислений?

С вас взимается 0,00001667 USD за гигабайт-секунду времени вычислений, которое выполняет ваша Lambda. Гб-секунда - это немного странная единица. Это может означать количество секунд, в течение которых вы используете ГБ памяти, но на самом деле это означает количество секунд выполненных вами вычислений, умноженное на количество выделенных для вычислений ГБ памяти.

Для людей, которым не комфортно использовать микроценты в качестве единицы измерения, я собрал цифры в диаграмму, которая показывает, сколько памяти и процессорного времени вы получаете при 1–6 долл. США на миллион запросов:

Amazon включает таблицу цен на своей странице, которая не включает базовую плату в размере 0,20 доллара США за миллион, но я включил ее в свои цифры.

Конечно, миллисекунды процессорного времени могут означать много разных вещей. Мс вычислений на Apple II соответствует 3000 тактов. На i7 в моем ноутбуке это 4 миллиона циклов. В случае Amazon они фактически увеличивают скорость ЦП, которую они предоставляют, в зависимости от того, сколько памяти вы выделяете. Другими словами, ваша производительность memory * CPU time, где CPU time тем меньше, чем больше памяти вы используете. Это повышение ЦП продолжается до тех пор, пока вы не получите то, что выглядит как полное ядро, после чего оно предоставит вам второе ядро, которое ваше приложение может использовать или не использовать в зависимости от его состава.

Чтобы компенсировать это, я скорректировал свою диаграмму, чтобы показать, сколько фактического процессорного времени вы получаете, на основе серверных процессоров среднего класса, которые мы использовали в нашем сравнительном тестировании.

Как видно из диаграммы, с точки зрения затрат не имеет значения, выберете ли вы использование лямбда-выражения 1024 МБ в течение 100 мс или лямбда-выражения 128 МБ в течение 800 мс, вы получите такое же количество вычислений и заплатите столько же. количество. Выше 1024 МБ вы достигнете производительности полного ядра процессора и начнете получать мощность второго ядра (если ваше приложение многопоточное).

Округление

Процессорное время округляется до ближайших 100 мс, то есть даже простая лямбда-функция, возвращающая текущее время, которое мы использовали в наших тестах, стоила нам 0,41 доллара за миллион вызовов. Конечно, ваша Lambda редко будет выполняться с количеством миллисекунд процессора, которое округляется идеально. Гораздо чаще вы используете какое-то нечетное количество мс, которое Amazon округляет, чтобы вычислить, сколько вам нужно. Учитывая, что они всегда округляются, это означает, что вы будете переплачивать в среднем на 50 мс ЦП за каждый вызов:

API-шлюз

AWS Lambda может выполнять широкий спектр задач в Amazon. Мы заинтересованы в их использовании специально для создания бессерверных веб-приложений. Для этой цели нельзя использовать Lambda напрямую, ему нужен какой-то HTTP-сервер, который готов преобразовать запрос в вызов invoke API Lambda. Безусловно, наиболее распространенный способ сделать это - использовать продукт Amazon API Gateway.

Плата за API Gateway составляет 3,50 доллара США за миллион запросов, что часто превышает стоимость самой Lambda. Вот наша диаграмма сверху, скорректированная с учетом API Gateway:

Вы заметите, что линии $ 1, $ 2 и $ 3 исчезли с диаграммы. Абсолютный минимум составляет 3,91 доллара за миллион запросов, если ваша Lambda потребляет очень мало ЦП.

Вам также придется платить за свой трафик и дополнительную почасовую плату, если вы хотите использовать кеширование.

Маршрут 53

Сервис Amazon Route53 DNS платный. Вы будете платить 0,40 доллара США за миллион DNS-запросов за первый миллиард. Таким образом, наша общая минимальная стоимость составляет 4,31 доллара на миллион.

Больше затрат

Сведение всех затрат в таблицу может быть утомительным занятием. Стоимость журналов CloudWatch составляет 0,50 доллара США за ГБ. Плата за трафик в размере 0,09 доллара США за гигабайт начнет накапливаться.

Лямбда @ Edge

Amazon также предлагает способ запуска кода через свою службу CDN Cloudfront. И фиксированные, и переменные затраты ровно утроены по сравнению с Lambda, что составляет примерно 10x Cloudflare Workers.

Конечно, для запросов HTTPS стоимость самого Cloudfront составляет 1 доллар за миллион запросов, и для использования Lambda @ Edge его необходимо приобрести. Вы также платите за пропускную способность, которая может легко превзойти эту цену. Если ваш сайт имеет размер 1 МБ, вы в конечном итоге заплатите до 85 долларов за миллион только за пропускную способность Cloudfront, а 250 долларов за миллион в таких регионах, как Южная Америка. Плюс дополнительные 20 долларов за миллион для запросов, которые должны возвращаться к вашему источнику.

Вот как это выглядит только для вычислительного компонента:

PS: Я работаю в Cloudflare, где у нас есть продукт под названием Workers. Я не буду слишком много за это здесь, но вы, возможно, захотите взглянуть.