Думаю, многие хотя бы раз сталкивались с ситуацией, когда для проекта нужно было реализовать совсем небольшой backend: отправку письма с формы обратной связи, обработку webhook, простое REST API или несколько строк серверной логики.
В большинстве случаев первым делом арендуют VPS, настраивают Node.js, nginx, HTTPS, деплой и окружение. Хотя для подобных задач это зачастую оказывается избыточным.
В таких случаях отличным решением становятся Google Cloud Functions — serverless‑сервис от Google, который позволяет написать небольшую функцию и сразу получить публичный HTTP endpoint. Вам не нужно поднимать собственный сервер, настраивать инфраструктуру или поддерживать её в дальнейшем — достаточно написать код, задеплоить функцию, и Google автоматически предоставит публичный URL для её вызова.
В этой статье разберём, как за несколько минут развернуть свою первую Google Cloud Function, автоматически деплоить её через GitHub Actions и использовать в качестве простого backend для сайта или любого другого проекта.

Интерфейс Google Cloud Console содержит большое количество сервисов и настроек, поэтому при первом знакомстве бывает непросто быстро найти нужные разделы. Поэтому в этой статье настройка будет выполнена с минимальным взаимодействием с Google Cloud Console.
Для удобства я подготовил репозиторий с готовым примером: простая Cloud Function, которая при обращении к HTTP endpoint отправляет письмо на указанную почту. Все необходимые настройки выполняются через GitHub CI, поэтому после первоначальной конфигурации достаточно изменять только Secrets и Variables, не возвращаясь в консоль Google Cloud.
Достаточно склонировать готовый репозиторий, заполнить Secrets и Variables и при необходимости заменить пример функции собственной логикой, здесь реализовано множество примеров использования.
Первичная настройка Google Cloud
Перед тем как перейти к GitHub, необходимо один раз выполнить минимальную настройку Google Cloud, у них есть собственная документация, и при желании всю настройку можно выполнить вручную через интерфейс Google Cloud Console. Но цель этой статьи — показать более удобный и воспроизводимый вариант: один раз подготовить проект, вынести настройки в GitHub Secrets и Variables, а дальше деплоить функцию автоматически через GitHub Actions
1. Создайте новый проект
Создайте новый Google Cloud Project и подключите платёжный аккаунт (Billing). Для большинства небольших проектов бесплатного лимита обычно достаточно, однако подключение Billing является обязательным условием для использования сервиса, новым пользователям Google обычно предоставляет стартовый кредит в размере до 300 долларов для знакомства с сервисами платформы.
2. Включите необходимые API
В разделе APIs & Services → Library включите следующие API:
Cloud Functions API
Cloud Run Admin API
Cloud Build API
Artifact Registry API

3. Создайте Service Account
IAM & Admin → Service Accounts
Создайте новый Service Account и выдайте ему необходимые роли, необходима минимум роль Security Admin, по мимо нее рекомендую выставить basic/Editor, которая предоставляет минимально необходимые возможности для деплоя.

4. Создайте JSON Key
Откройте созданный Service Account:(Изображение выше)
Keys → Add Key → Create New Key → JSON
JSON‑файл будет автоматически скачан на компьютер. Позже его содержимое потребуется добавить в GitHub Secrets, скопировав целиком
*Настройка Gmail
В текущей реализации для отправки уведомлений используется Gmail SMTP.
Для этого необходимо создать App Password для Google‑аккаунта, от имени которого будут отправляться письма. Для создания пароля приложения предварительно нужно включить двухэтапную аутентификацию (2-Step Verification) в аккаунте Google.
Создать пароль приложения можно здесь. После генерации сохраните полученный пароль — на следующем этапе он будет добавлен в GitHub Secrets вместе с адресом электронной почты( прописывать пароль в секретах нужно без пробелов)
После этого заполните GitHub Secrets и GitHub Variables.
В Secrets хранятся чувствительные данные:
JSON‑ключ сервисного аккаунта;
SMTP‑почта;
пароль приложения Gmail.
В Variables располагаются обычные настройки:
регион (
europe-west1);получатель письма;
тема;
текст уведомления.
k61n
Выглядит достаточно просто. Но поднять контейнер на ВПСе тоже не сильно сложно.
Я несколько лет назад писал питоньи скрипты для парсинга календаря через гугл апи. Я вообще уже много лет довольно стандартизированно пользуюсь календарём, поэтому он у меня очень, скажем так, парсинг-френдли.
На стороне гугла что-то было оч замудрёная аутентификация, которая слетела через полгода-год, что я просто экспортировал свой гуглокалендарь и импортировал его в свой некстклауд. А с КалДав вообще проблем не было. Один раз написал абстракцию для аутентификации и работает годами.
С тех пор я немного скептичен к гугл апи.
stapenn Автор
Ну да, с VPS тоже несложно, если он уже есть. Но в этом и идея, для совсем небольших задач можно вообще ничего не поднимать и не обслуживать. К тому же в небольших объёмах это ещё и бесплатно.